Рубрики
Uncategorized

IAM Сервисная учетная запись Для AWS-Node Daemonset

Другими словами, этот пост о настройке плагина Amazon VPC CNI для использования IAM ролей … Теги от AWS, EKS, Cloudopz, Devops.

Другими словами, этот пост состоит в том, чтобы настроить плагин Amazon VPC CNI для использования IAM ролей для учетных записей службы

  • Плагин Amazon VPC CNI для Kubernetes является сетевым плагином для сетей POD в кластерах Amazon EKS. Плагин отвечает за выделение IP-адресов VPC в узлы Kubernetes и настроить необходимые сети для стручек на каждом узле. Плагин:
    • Требуется разрешения IAM, предоставленные Управляемой политикой AWS Amazoneks_cni_policy , чтобы звонить в AWS API от вашего имени.
    • Создает и настроен на использование учетной записи службы с именем AWS-NODE. когда это развернуто. Счет службы связан с kubernetes Клостерроль назван AWS-NODE , который присваивается необходимые разрешения Kubernetes.

Почему нам нужен сервисный счет отделен для AWS-Node Daemonset?

  • Daemonset AWS-NODE настроен на использование роли, назначенной для экземпляров EC2 для присвоения IPS для PODS. Эта роль включает в себя несколько управляемых политик AWS, например, Amazoneks_cni_policy и EC2ContainerregistryReadonly, которые эффектно позволяют всем стручкам, работающим на узле, чтобы прикрепить/отсоединить ENIS, назначить/unassign IP-адреса или вытягивайте изображения из ECR. Поскольку это представляет риск вашего кластера, рекомендуется обновить Daemonset AWS-Node для использования IRSA.

Что в этом документе

  • Создайте IRSA и прикрепить правильную политику
  • Аннотируйте Службу услуг IRSA в AWS-NODE
  • Перезапустите Daemonset AWS-Node, чтобы вступить в силу
  • Заключение

🚀 Создайте IRSA и прикрепите правильную политику

  • Предварительный реквизит: Кластер EKS с OpenID Connect, IAM Identity Provider (Ref to Использование учетной записи службы IAM вместо профиля экземпляра для EKS PODS Для того, как)

  • Сначала создайте роль IAM, которая федерация IAM-провайдера IAM и предполагается STS: Принесшийся доверенность Затем прикрепите политику, чтобы обеспечить правильное разрешение на роль. Краткое из CDK-кода в Python3:

    • IAM_OIC Стопка создания IAM-провайдера идентичности, который используется OIDC в качестве провайдера, open_id_connect_provider_arn это атрибут ARN из стека.
        eks_cni_statement = iam.PolicyStatement(
            effect=iam.Effect.ALLOW,
            actions=[
                "ec2:AssignPrivateIpAddresses",
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeInstances",
                "ec2:DescribeTags",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeInstanceTypes",
                "ec2:DetachNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:UnassignPrivateIpAddresses",
                "ec2:CreateTags"
            ],
            resources=['*'],
            conditions={'StringEquals': {"aws:RequestedRegion": "ap-northeast-2"}}
        )

        daemonset_role = iam.Role(
            self, 'DaemonsetIamRole',
            role_name='sel-eks-oic-daemonset-sa',
            assumed_by=iam.FederatedPrincipal(
                federated=f'arn:aws:iam::{env.account}:oidc-provider/{oidc_provider}',
                conditions={'StringEquals': string_like('kube-system', 'aws-node')},
                assume_role_action='sts:AssumeRoleWithWebIdentity'
            )
        )

        daemonset_role.add_to_policy(eks_cni_statement)

🚀 Аннотировать ИРСА Учетная запись AWS-Node

  • ПРИМЕЧАНИЕ. Если вы используете дополнение Amazon EKS, с помощью кластеров Amazon Exs Amazon, нам просто нужно добавить дополнение Amazon VPC CNI Amazon EKS с ролью, которую мы выбираем или по умолчанию AWS-NODE.

  • Важная заметка; VPC CNI также предоставляется в качестве управляемого дополнения, однако я не большой поклонник этого конкретного компонента, который будет управляться AWS. Я бы предложил вам просто развернуть собственную конфигурацию VPC CNI (формата YAML) с использованием потока. Таким образом, вы останетесь в контроле над тем, что на самом деле развернут. С этим было много вопросов, и я не буду рекомендовать перемещать это, чтобы быть управляемым дополнением. Так что вручную Настройка плагина Amazon VPC CNI для использования IAM ролей для учетных записей службы

  • Если версия CNI позже 1,6 вы можете пропустить следующий шаг применения CNI V1.7

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
  • Скачать AWS-K8S-CNI.YAML на пользовательскую роль IAM (необязательно), а затем примените его
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/aws-k8s-cni.yaml
  • Аннотируйте Службу услуг IRSA в AWS-NODE
$ kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/role-arn=arn:aws:iam::123456789012:role/sel-eks-oic-daemonset-sa

🚀 Перезапустите Daemonset AWS-Node, чтобы вступить в силу

  • Развертывание перезапуска AWS-NODE Daemonset.
$ kubectl rollout restart daemonset aws-node -n kube-system
$ kubectl get pod -n kube-system | grep aws-node
aws-node-bnb8v                                  0/1     Running   0          16s
  • Проверьте AWS-NODE ENV, чтобы подтвердить EKS POD Identity Webhook Musate AWS-NODE стручки с сервоприводом
$ kubectl exec aws-node-qct7x -n kube-system -- env |grep "AWS_ROLE\|AWS_REG"
AWS_REGION=ap-northeast-2
AWS_ROLE_ARN=arn:aws:iam::123456789012:role/sel-eks-oic-daemonset-sa

🚀 вывод

  • Это просто небольшие шаги в области EKS K8S Securities
  • Читать Использование учетной записи службы IAM вместо профиля экземпляра для EKS PODS Чтобы лучше понять о IRSA

🌠 Блог · Github · Stackoverflow · LinkedIn · Группа · Страница · Twitter 🌠.

Оригинал: «https://dev.to/vumdao/iam-service-account-for-aws-node-daemonset-1p5j»