Я пытаюсь запустить кластер EKS, используя схему Terraform EKS, и он создает группы безопасности как кластера, так и узла. Согласно документации AWS, EKS создает тег SG kubernetes.io/cluster
по умолчанию на обеих SG. Мне нужно удалить тег с помощью terraform. Есть ли способ сделать это?
Зачем нужно удалять тег? EKS нужен этот тег для идентификации и управления SG.
При создании кластера создается как кластер, так и узел SG. Значит, оба SG должны иметь тег?
Модуль terraform-aws-eks создает группу безопасности кластера и рабочего узла, и, поскольку он создан EKS, он автоматически добавляет тег по умолчанию. В нашем случае мы пытаемся создать ALB и подключить его к сервису с целевой группой в качестве IP. При этом мы допускаем несколько правил при создании входа ALB. Пока мы применяем изменения, TargetBinding не происходит, поскольку 2 SG имеют тег по умолчанию. Поэтому нам нужно удалить тег только из группы безопасности узла.
...TargetBinding is not happening because 2 SGs have the default tag
- можете ли вы сказать, как эти 2 связаны, особенно почему здесь важен тег по умолчанию?
FailedNetworkReconcile 12m targetGroupBinding expect exactly one securityGroup tagged with kubernetes.io/cluster/<cluster_name> for eni eni-xxxx, got: [sg-xxx sg-xxx] (clusterName: <cluster_name>)
Получил эту ошибку. Поскольку и кластерный SG, и рабочий узел SG создаются EKS, оба имеют теги. Поскольку для привязки целевой группы требуется только один SG с тегом, согласование не происходит.
Судя по вашему вопросу и вашим ответам в разделе комментариев, вы могли бы использовать предыдущую версию (18?) terraform-aws-eks, в которой есть эта проблема. Лишний тег можно удалить:
node_security_group_tags = {
"kubernetes.io/cluster/${<your cluster name variable>}" = null
}
Вот подробное объяснение.
Даже если вы сможете, это будет временно: «Если вы удалите теги, Amazon EKS добавит их обратно в группу безопасности при каждом обновлении вашего кластера».