This shows you the differences between two versions of the page.
cc:temp [2022/11/11 23:01] florin.mihalache [Cluster Kubernetes în AWS] |
cc:temp [2022/11/11 23:12] (current) florin.mihalache [Deployments & virtual machines în AWS] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Deployments & virtual machines în AWS ===== | ===== Deployments & virtual machines în AWS ===== | ||
- | În cadrul acestui laborator veți învăța | + | În cadrul acestui laborator veți învăța cum să creați mașini virtuale în cadru AWS (Amazon Web Services), care reprezintă o platformă care furnizează servicii de tip cloud computing, baze de date, stocare de fișiere, device farms, etc. |
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. | 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. | ||
Line 219: | Line 219: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Mai avem doar de creat un fișier ''main.tf'' cu următoarea configurație: | ||
+ | <code> | ||
+ | provider "kubernetes" { | ||
+ | host = module.eks.cluster_endpoint | ||
+ | cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) | ||
+ | } | ||
+ | |||
+ | provider "aws" { | ||
+ | region = var.region | ||
+ | } | ||
+ | |||
+ | data "aws_availability_zones" "available" {} | ||
+ | |||
+ | locals { | ||
+ | cluster_name = "cc-eks-${random_string.suffix.result}" | ||
+ | } | ||
+ | |||
+ | resource "random_string" "suffix" { | ||
+ | length = 8 | ||
+ | special = false | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Pentru a afișa câteva informații legate de infrastructura noastră avem nevoie de câteva outputs. Așa cum am învățat data trecută, facem un fișier separat în care definim acest outputs: | ||
+ | <code> | ||
+ | output "cluster_id" { | ||
+ | description = "EKS cluster ID" | ||
+ | value = module.eks.cluster_id | ||
+ | } | ||
+ | |||
+ | output "cluster_endpoint" { | ||
+ | description = "Endpoint for EKS control plane" | ||
+ | value = module.eks.cluster_endpoint | ||
+ | } | ||
+ | |||
+ | output "cluster_security_group_id" { | ||
+ | description = "Security group ids attached to the cluster control plane" | ||
+ | value = module.eks.cluster_security_group_id | ||
+ | } | ||
+ | |||
+ | output "region" { | ||
+ | description = "AWS region" | ||
+ | value = var.region | ||
+ | } | ||
+ | |||
+ | output "cluster_name" { | ||
+ | description = "Kubernetes Cluster Name" | ||
+ | value = local.cluster_name | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Rulăm comenzile obișnuite pentru a crea infrastructura. Observați ca sunt foarte multe resurse care urmează să se construiască. | ||
+ | |||
+ | In cazul in care ați realizat ca lipsește ceva (nu am definit niciunde ce versiuni ale provider-ilor vrem să folosim), best practices recomandă să avem un fișier numit ''terraform.tf'' care să conțină această configurație: | ||
+ | <code> | ||
+ | terraform { | ||
+ | required_providers { | ||
+ | aws = { | ||
+ | source = "hashicorp/aws" | ||
+ | version = "~> 4.15.0" | ||
+ | } | ||
+ | |||
+ | random = { | ||
+ | source = "hashicorp/random" | ||
+ | version = "~> 3.1.0" | ||
+ | } | ||
+ | |||
+ | tls = { | ||
+ | source = "hashicorp/tls" | ||
+ | version = "~> 3.4.0" | ||
+ | } | ||
+ | |||
+ | cloudinit = { | ||
+ | source = "hashicorp/cloudinit" | ||
+ | version = "~> 2.2.0" | ||
+ | } | ||
+ | |||
+ | kubernetes = { | ||
+ | source = "hashicorp/kubernetes" | ||
+ | version = "~> 2.12.1" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Asteptați ca planul să se termine de rulat sș verificați infrastructura creată în AWS (o să dureze în jur de 15-20 minute). Apoi, pentru a ne conecta la cluster-ul nostru proaspăt creat de Kubernetes, folosim următoarea comandă: | ||
+ | <code bash> | ||
+ | aws eks --region $(terraform output -raw region) update-kubeconfig \ | ||
+ | --name $(terraform output -raw cluster_name) | ||
+ | </code> | ||
+ | |||
+ | Verificați conexiunea cu următoarea comandă: ''kubectl cluster-info'' | ||
+ | |||
+ | În acest moment avem un cluster configurat în AWS EKS și suntem conectați la el. Orice comandă de kubectl rulată o să fie executată pe cluster-ul nostru. | ||
+ | |||
+ |