Рубрики
Uncategorized

Как обеспечить кластер aws eks kubernetes с Terraform — Учебное пособие

В этом руководстве вы узнаете, как обеспечить кластер AWS eks Kubernetes с Terraform. Давайте … с меткой Terraform, AWS, Kubernetes, DevOps.

В этом руководстве вы узнаете, как обеспечить кластер AWS eks Kubernetes с Terraform. Давайте начнем с оснований.

AWS EKS предоставляет управляемые кластеры Kubernetes в качестве услуги. Вы находитесь на AWS и хотите избежать деталей настройки кластера Kubernetes с нуля? Экс — это путь!

Вам нужно будет установлен Terraform на месте:

brew install terraform

а также AWS CLI:

brew install awscli

а также kubectl:

brew install kubernetes-cli

Если вы находитесь в другой операционной системе, найдите здесь соответствующие инструкции по установке:

Вам нужно будет настроить свой CLI AWS с учетными данными AVS в учетной записи AWS. Вы можете сделать это, работая:

aws configure

и предоставление вашего идентификатора ключа доступа и секретного ключа доступа. Вам также нужно будет предоставить регион. Для целей настоящего руководства мы будем использовать США-Восток-2. Terraform позже будет использовать эти учетные данные для предоставления ваших ресурсов AWS.

Теперь вы можете клонировать репозиторий, который содержит все, что вам нужно для настройки EKS:

git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster/

Внутри вы увидите несколько файлов, основным является eks-cluster.tf:

module "eks" {
  source          = "terraform-aws-modules/eks/aws"
  cluster_name    = local.cluster_name
  cluster_version = "1.20"
  subnets         = module.vpc.private_subnets

  tags = {
    Environment = "training"
    GithubRepo  = "terraform-aws-eks"
    GithubOrg   = "terraform-aws-modules"
  }

  vpc_id = module.vpc.vpc_id

  workers_group_defaults = {
    root_volume_type = "gp2"
  }

  worker_groups = [
    {
      name                          = "worker-group-1"
      instance_type                 = "t2.small"
      additional_userdata           = "echo foo bar"
      asg_desired_capacity          = 2
      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]
    },
    {
      name                          = "worker-group-2"
      instance_type                 = "t2.medium"
      additional_userdata           = "echo foo bar"
      additional_security_group_ids = [aws_security_group.worker_group_mgmt_two.id]
      asg_desired_capacity          = 1
    },
  ]
}

Он использует модуль EKS Terraform для настройки кластера EKS с двумя группами рабочих (фактические узлы, использующие ваши рабочие нагрузки): один с одной средней машиной, и одна с двумя небольшими машинами.

Теперь вы можете создать все эти ресурсы, используя Terraform. Первый забег:

terraform init -upgrade

Чтобы инициализировать рабочее пространство Terraform и загрузить любые модули и поставщики, которые используются.

Чтобы сделать сухой пробег изменений, которые будут внесены, запустите:

terraform plan -out terraform.plan

Это покажет вам, что будут добавлены 51 ресурсы, а также соответствующие детали их. Затем вы можете запустить Terraform применить к полученному плану, чтобы фактически предоставить ресурсы:

terraform apply terraform.plan

Это может занять несколько минут, чтобы закончить. Вы можете получить ошибку «времена». В этом случае просто повторите как план Terraform, так и Terraform применяют шаги.

В конце концов вы получите список выходов с их соответствующими значениями. Запишите свой cluster_name.

Чтобы использовать Kubectl, который является основным инструментом для взаимодействия с кластером Kubernetes, вы должны дать ему учетные данные своему кластеру EKS Kubernetes. Вы можете сделать это, работая:

aws eks --region us-east-2 update-kubeconfig --name 

Просто убедитесь, что замените соответствующее значение от вашего Terraform, применяйте выходы.

Теперь вы можете увидеть узлы вашего кластера, работая:

> kubectl get nodes -o custom-columns=Name:.metadata.name,nCPU:.status.capacity.cpu,Memory:.status.capacity.memory
Name                                       nCPU   Memory
ip-10-0-1-23.us-east-2.compute.internal    2      4026680Ki
ip-10-0-2-8.us-east-2.compute.internal     1      2031268Ki
ip-10-0-3-128.us-east-2.compute.internal   1      2031268Ki

Эта команда настолько длинная, потому что она отображает пользовательские столбцы, и благодаря тем, что мы действительно можем видеть, что есть 2 меньших узла и 1 больший узел.

Давайте развернем экземпляры Nginx, чтобы увидеть, работает ли кластер правильно, работая:

kubectl run --port 80 --image nginx nginx

Вы можете увидеть его статус, работая:

> kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          2m46s

И, наконец, установил туннель с вашего компьютера на этот стручок, работая:

kubectl port-forward nginx 3000:80

Если вы откроете http://localhost: 3000 В вашем браузере вы должны увидеть, как веб -сервер приветствует вас:

Чтобы уничтожить ресурсы, которые мы создали в этом сеансе, вы можете запустить:

terraform destroy

Это может снова занять несколько минут.

Я надеюсь, что это руководство помогло вам в вашем путешествии в Kubernetes по AWS! Если вам нужна дополнительная помощь в управлении вашим файлом состояния Terraform, создание более сложных рабочих процессов на основе Terraform и управление учетными данными AWS за прогон, вместо использования статической пары на местной машине, проверьте Пространство Анкет Мы хотели бы иметь тебя!

Оригинал: «https://dev.to/spacelift/how-to-provision-an-aws-eks-kubernetes-cluster-with-terraform-step-by-step-1k4c»