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. | ||
| + | |||
| + | |||