В этом руководстве вы узнаете, как обеспечить кластер AWS eks Kubernetes с Terraform. Давайте начнем с оснований.
AWS EKS предоставляет управляемые кластеры Kubernetes в качестве услуги. Вы находитесь на AWS и хотите избежать деталей настройки кластера Kubernetes с нуля? Экс — это путь!
Вам нужно будет установлен Terraform на месте:
brew install terraform
а также AWS CLI:
brew install awscli
а также kubectl:
brew install kubernetes-cli
Если вы находитесь в другой операционной системе, найдите здесь соответствующие инструкции по установке:
- Terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli
- awscli: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
- Kubectl: https://kubernetes.io/docs/tasks/tools/
Вам нужно будет настроить свой 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»