Я использую модуль AWS EKS Terraform для создания кластера Amazon EKS. Вот пример кода из документа:
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 20.0"
cluster_name = "my-cluster"
cluster_version = "1.29"
cluster_endpoint_public_access = true
cluster_addons = {
coredns = {
most_recent = true
}
kube-proxy = {
most_recent = true
}
vpc-cni = {
most_recent = true
}
}
vpc_id = "vpc-1234556abcdef"
subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
control_plane_subnet_ids = ["subnet-xyzde987", "subnet-slkjf456", "subnet-qeiru789"]
# EKS Managed Node Group(s)
eks_managed_node_group_defaults = {
instance_types = ["m6i.large", "m5.large", "m5n.large", "m5zn.large"]
}
eks_managed_node_groups = {
example = {
min_size = 1
max_size = 10
desired_size = 1
instance_types = ["t3.large"]
capacity_type = "SPOT"
}
}
# Cluster access entry
# To add the current caller identity as an administrator
enable_cluster_creator_admin_permissions = true
access_entries = {
# One access entry with a policy associated
example = {
kubernetes_groups = []
principal_arn = "arn:aws:iam::123456789012:role/something"
policy_associations = {
example = {
policy_arn = "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy"
access_scope = {
namespaces = ["default"]
type = "namespace"
}
}
}
}
}
tags = {
Environment = "dev"
Terraform = "true"
}
}
Я обнаружил, что если я разверну приведенный выше код, фактический кластер EKS будет использовать только t3.large.
Кроме того, я обнаружил, что если удалить этот раздел
eks_managed_node_group_defaults = {
instance_types = ["m6i.large", "m5.large", "m5n.large", "m5zn.large"]
}
и снова запустите terraform apply, он напечатает
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
это означает, что eks_managed_node_group_defaults в данном случае фактически не используется.
Мой вопрос: в чем разница между eks_managed_node_group_defaults и eks_managed_node_groups? А когда нам нужен eks_managed_node_group_defaults? Спасибо!





В eks_managed_node_group_defaults вы просто определяете общие свойства для управляемых групп, определенных в eks_managed_node_groups, поэтому вам не нужно повторять их в определении каждой управляемой группы. https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/node_groups.tf показывает, что они служат первым уровнем резервных значений свойств, поскольку в них также предусмотрены жестко запрограммированные значения по умолчанию. try функция.
Поскольку это всего лишь свойства, они не переходят в состояние терраформирования, поэтому нет никакой разницы, если вы их удалите.