eks iam роли для сервисов не работают - PullRequest
1 голос
/ 22 октября 2019

Я пробую свои силы в ролях iam для учетной записи служб, чтобы защитить автоскалер. Но я, кажется, что-то упустил. Немного точности я использую terraform для создания кластера.

Я следовал этой документации:

Итак, я создал роль, отличную от роли для узлов, и применил политику для автоскалер к этой новой роли. Эта часть является базовой, здесь нет проблем.

Я также активировал провайдера openid в terraform:

resource "aws_iam_openid_connect_provider" "example" {
  client_id_list  = ["sts.amazonaws.com"]
  thumbprint_list = []
  url             = aws_eks_cluster.eks.identity.0.oidc.0.issuer
}

Нет проблем, когда кластер создает сам без проблем.

Нет, я добавил аннотацию в служебную учетную запись для автоматического вызова:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::ID:role/terraform-eks-autoscaller
  labels:
    k8s-addon: cluster-autoscaler.addons.k8s.io
    k8s-app: cluster-autoscaler
  name: cluster-autoscaler
  namespace: kube-system

Моя проблема в том, что она не работает, и модуль все еще пытается использовать новую роль IAM, но все еще использует роль узла:

Failed to create AWS Manager: cannot autodiscover ASGs: AccessDenied: User: arn:aws:sts::ID:assumed-role/terraform-eks-node/i-ID is not authorized to perform: autoscaling:DescribeTags

Кто-нибудь знает, какой шаг я здесь пропускаю?

Заранее спасибо за помощь;)

1 Ответ

2 голосов
/ 23 октября 2019

Так что ответ очень прост. В конфигурации вашего провайдера OIDC отсутствует отпечаток. Важно, чтобы Iam работал правильно. Обычно, если вы создаете OIDC-провайдера в консоли AWS, отпечаток большого пальца заполняется автоматически, однако это не тот случай, когда вы делаете это через terraform.

Я тоже был пойман, поэтому написал блог об этомвы можете найти здесь: https://medium.com/@marcincuber/amazon-eks-with-oidc-provider-iam-roles-for-kubernetes-services-accounts-59015d15cb0c

Чтобы решить вашу проблему, просто добавьте следующее:

9E99A48A9960B14926BB7F3B02E22DA2B0AB7280

Выше приведен хэшированный корневой CA, который не изменяется дляеще 10 с лишним лет, и это одинаково во всех регионах. Как его приобрести, вы можете прочитать в блоге, на который я добавил ссылку выше.

Кроме того, убедитесь, что вы используете последнюю версию autoscaler, соответствующую версии ваших kubernetes. Кроме того, попробуйте добавить контекст безопасности с помощью fsGroup: 65534. Это текущее решение для правильной работы OIDC для некоторых приложений.

...