This is an old revision of the document!


Laboratorul 05 - Terraform + AWS

Deployments & virtual machines în AWS

În cadrul acestui laborator veți învăța

Pentru acest laborator presupunem că avem deja Terraform instalat de la laboratorul precedent. Dacă nu aveți Terraform instalat, puteți urma pașii din laboratorul anterior.

Pe langa Terraform, avem nevoie de AWS CLI instalat. Pentru a instala, urmati pasii de aici.

Pe lângă asta, avem nevoie de un cont pentru Amazon AWS. După ce ați făcut pașii pentru a avea propriul cont AWS, vrem sa conectăm AWS CLI la consola de AWS.

Pentru a face asta, mergem în AWS și intrăm în secțiunea IAM:

Apoi mergem la “My security credentials”:

Următorul pas este să mergem la “Access Keys” și să apăsăm pe butonul de Create New Access Key:

Păstrați fișierul generat. Rulați comanda aws configure și introduceți datele generate în fisierul creat anterior (AWSAccessKeyId și AWSSecretKey).

Pentru a crea o instanță simplă de EC2 (o mașina virtuală) folosim următorul fișier de Terraform:

terraform {
 required_providers {
   aws = {
     source  = "hashicorp/aws"
     version = "~> 4.16"
   }
 }
 
 required_version = ">= 1.2.0"
}
 
provider "aws" {
 region = "us-west-2" # regiunea in care o sa se faca deploy la resurse
}
 
resource "aws_instance" "app_server" {
 ami           = "ami-830c94e3" # tipul de masina folosita (ami = Amazon Machine Image)
 instance_type = "t2.micro" # tipul de instanta (resursele pe care le are masina)
 
 tags = {
   Name = "labAwsTerraform"
 }
}

Rulați comenzile cunoscute pentru a face deployment acestei infrastructuri:

terraform init
terraform fmt
terraform plan
terraform apply

Pentru a verifica ca mașina virtuală a fost deployed, căutăm serviciul EC2:

Ajungem în pagina următoare în care vedem că nu avem nicio instanță up and running, deși planul nostru de Terraform a fost executat cu succes. De ce?

Observați diferența de regiuni (Frankfurt, în cazul din imaginea anterioară, față de us-west-2 în Terraform). Pentru a modifica regiunea în care facem deployment la resurse modificăm codul Terraform. În cazul de față, putem să facem click pe Frankfurt și să selectăm us-west-2 (Oregon). În acest moment putem vedea că avem o instanță up and running:

În codul Terraform modificați numele masinii din labAwsTerraform în testUpdate. Rulatț comenzile obișnuite pentru a vedea planul. Observați că această modificare nu implică distrugerea mașinii existente, ci doar modificarea in-place.

Cluster Kubernetes în AWS

Pentru a face deployment unui cluster de Kubernetes în AWS avem 2 opțiuni.

  1. Facem deploy la mai multe mașini virtuale și instalăm și configurăm un cluster de mână.
  2. Folosim serviciul AWS special conceput pentru clusters de Kubernetes, AWS EKS Cluster

În cazul acestui laborator, o să facem deployment la un cluster folosind EKS.

Pentru a urma best practices recomandate de hashicorp, o să spargem codul în mai multe fișiere.

Fișierul variables.tf o sa conțină o simplă variabilă în care definim zona în care vrem să facem deployment:

variable "region" {
 description = "AWS region"
 type        = string
 default     = "us-west-2"
}

Mai departe avem nevoie de un VPC, deci vom crea un nou fisier vpc.tf. Mai multe despre ce este un VPC: aici.

module "vpc" {
 source  = "terraform-aws-modules/vpc/aws"
 version = "3.14.2"
 
 name = "cc-vpc"
 
 cidr = "10.0.0.0/16"
 azs  = slice(data.aws_availability_zones.available.names, 0, 3)
 
 private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
 public_subnets  = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"]
 
 enable_nat_gateway   = true
 single_nat_gateway   = true
 enable_dns_hostnames = true
 
 public_subnet_tags = {
   "kubernetes.io/cluster/${local.cluster_name}" = "shared"
   "kubernetes.io/role/elb"                      = 1
 }
 
 private_subnet_tags = {
   "kubernetes.io/cluster/${local.cluster_name}" = "shared"
   "kubernetes.io/role/internal-elb"             = 1
 }
}

Mai multe detalii despre modulul de Terraform pentru VPC: aici.

cc/temp.1668200250.txt.gz · Last modified: 2022/11/11 22:57 by florin.mihalache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0