Terraform: как добавить рабочие узлы Windows в кластер eks?

#terraform #amazon-eks

#terraform #amazon-eks

Вопрос:

Я использую подготовленный кодом terraform кластер EKS (1.16) с рабочими узлами в AWS (Linux). Приведенный ниже код предназначен для создания рабочих узлов eks (Linux):

 resource "aws_eks_node_group" "default-worker-nodes-group" {
  cluster_name    = "${var.eks_cluster_name}"
  node_group_name = "${var.eks_cluster_node_group_name}"
  node_role_arn   = "${var.eks_worker_node_role_arn}"
  subnet_ids      = ["${var.eks_worker_subnet_ids}"]
  ami_type        = "${var.ami_type}"
  instance_types  = "${var.instance_type}"
  disk_size       = "${var.volume_size}"
  release_version = "${var.release_version}"
  version         = "${var.eks_cluster_version}"

  remote_access {
    ec2_ssh_key               = "${var.ec2_ssh_key}"
    source_security_group_ids = ["${var.eks_worker_security_groups_ids}"]
  }

 
}
  

Я хотел бы добавить дополнительные рабочие узлы Windows. Как это сделать?

Я определяю ARN роли экземпляра узла Linux ниже. Могу ли я использовать для Windows ту же роль, что и для Linux? Другими словами, ARN роли экземпляра узла Windows совпадает с ARN роли экземпляра узла Linux?

 #eks workers roles
resource "aws_iam_role" "eks-workernode-role" {
  name = "${var.eks_workernode_iam_role_name}"

  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
POLICY
}

data:
  mapRoles: |
    - rolearn: ${aws_iam_role.eks-workernode-role.arn}
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  

Ответ №1:

Вам нужно использовать AMI, который является Windows-AMI, см. Amazon EKS оптимизированный для Windows AMI.

Вам также нужна немного другая роль в aws-auth ConfigMap , как описано в разделе Запуск самоуправляемых узлов Windows, с mapRoles подобным

       groups:
        - system:bootstrappers
        - system:nodes
        - eks:kube-proxy-windows
  

Комментарии:

1. Привет, Джоан, спасибо за ваш ответ. Я обновил свой вопрос. Смотрите выше. Я определяю ARN роли экземпляра узла Linux в приведенном выше коде. Могу ли я использовать для Windows ту же роль, что и для Linux? Другими словами, ARN роли экземпляра узла Windows совпадает с ARN роли экземпляра узла Linux?

2. Я использую ресурс «aws_eks_node_group» для предоставления групп рабочих узлов eks. Из ссылки на аргумент я использую ami_type (AL2_x86_64) и тип экземпляра. Я не могу использовать аргумент AMI ID. Я не могу использовать Windows AMI из Amazon EKS, оптимизированных для Windows AMI.