Строительство кластера Kubernetes трудно, так почему бы не использовать управляющую службу Kubernetes? В предыдущем пост Я добавил подсети к VPC. В этом посте я буду использовать VPC для создания AWS EKS кластер.
Полный проект доступен на Гадость .
Конфигурация
Минимальная конфигурация, необходимая для создания кластера, — это имя для кластера, версия Kubernetes, которую вы хотите использовать, и роль IAM будет использовать ваш кластер. В то время как необязательно, указывая типы журналов, которые ваш кластер отправит на CloudWatch, может быть очень полезен при отладке и устранении неполадок. Конфигурация ниже, которую вы можете скопировать/вставить в файл YAML из предыдущего блога, имеет четыре параметра. Параметр EKS: кластерное имя
это название кластера. Параметр EKS: K8S-версия
Это версия Kubernetes для использования (на момент написания 1.14 была последняя доступная версия). Параметр EKS: Кластер-Роль-Арн
Орган роли IAM ваша кластер должен выполнять задачи. Для получения более подробной информации о том, как создать роль, проверьте AWS Docs Отказ Наконец, параметр EKS: кластер-журналы-типы
Разделенный запятой список всех компонентов, которые могут издавать журналы.
eks:cluster-name: myEKSCluster eks:k8s-version: "1.14" eks:cluster-role-arn: "arn:aws:iam::ACCOUNTID:role/ServiceRoleForAmazonEKS" eks:cluster-log-types: "api,audit,authenticator,scheduler,controllerManager"
Вы можете использовать командную строку, как SULUMI CONFIG SET EKS: кластерное название «Myekscluster»
Чтобы добавить эти новые переменные конфигурации, или вы можете добавить их непосредственно в файл yaml. Файл YAML со всей конфигурацией называется Пулуби. <Имя вашего проекта> .yaml
Отказ
Создание кластера
Код ниже является расширением из кода, созданного в предыдущем пост Отказ Таким образом, вы можете скопировать/вставить этот фрагмент в свой код GO. Прогулка по коду, он получает конфигурацию для имени кластера и включил типы журналов из файла yaml. Он также использует подсети, созданные в предыдущем посте. Вызов езди NewCluster ()
Скажут пулуби, чтобы пойти создать кластер EKS в VPC, используя подсети, которые вы уже создали.
// Create an EKS cluster clusterName := getEnv(ctx, "eks:cluster-name", "unknown") enabledClusterLogTypes := strings.Split(getEnv(ctx, "eks:cluster-log-types", "unknown"), ",") clusterArgs := &eks.ClusterArgs{ Name: clusterName, Version: getEnv(ctx, "eks:k8s-version", "unknown"), RoleArn: getEnv(ctx, "eks:cluster-role-arn", "unknown"), Tags: tags, VpcConfig: subnets, EnabledClusterLogTypes: enabledClusterLogTypes, } cluster, err := eks.NewCluster(ctx, clusterName, clusterArgs) if err != nil { fmt.Println(err.Error()) return err } ctx.Export("CLUSTER-ID", cluster.ID())
Запуск кода
Как и в предыдущее время, последнее, что нужно сделать, это запустить пуловка вверх
Чтобы сказать пулуби, чтобы пойти создать кластер EKS внутри вашего VPC! Если вы используете тот же проект и стек, Pulumi автоматически поймет, что ему необходимо создать кластер внутри существующего VPC и не создаст новую VPC. Запуск этого кода может потребоваться немного, пока AWS завершит создание кластера (в моем случае потребовалось почти 10 минут).
$ pulumi up Previewing update (builderstack): Type Name Plan pulumi:pulumi:Stack builder-builderstack + └─ aws:eks:Cluster myEKSCluster create Outputs: + CLUSTER-ID: outputResources: + 1 to create 4 unchanged Do you want to perform this update? yes Updating (builderstack): Type Name Status pulumi:pulumi:Stack builder-builderstack + └─ aws:eks:Cluster myEKSCluster created Outputs: + CLUSTER-ID: "myEKSCluster" SUBNET-IDS: [ [0]: "subnet- " [1]: "subnet- " ] VPC-ID : "vpc- " Resources: + 1 created 4 unchanged Duration: 9m55s Permalink: https://app.pulumi.com/retgits/builder/builderstack/updates/3
Постоянная ссылка в нижней части вывода требует от консоли пуловой консоли, где вы можете увидеть все детали выполнения вашего приложения и созданные ресурсы.
Консоль пульвы также имеет действительно полезные ссылки на консоль AWS, чтобы увидеть ресурсы.
Оригинал: «https://dev.to/retgits/how-to-create-an-aws-eks-cluster-using-pulumi-and-golang-2g5m»