Amazon EKS Connector IAM 角色 - Amazon EKS

Amazon EKS Connector IAM 角色

您可以连接 Kubernetes 集群以便在 AWS Management Console 中查看。要连接 Kubernetes 集群,创建 IAM 角色。

检查现有 EKS connector 角色

您可以使用以下过程检查并查看您的账户是否已有 Amazon EKS connector 角色。

在 IAM 控制台中检查 AmazonEKSConnectorAgentRole
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在左侧导航窗格中,选择 Roles(角色)

  3. 在角色列表中搜索 AmazonEKSConnectorAgentRole。如果不存在包含 AmazonEKSConnectorAgentRole 的角色,请参阅 创建 Amazon EKS Connector 代理角色 来创建角色。如果包含 AmazonEKSConnectorAgentRole 的角色确实存在,则选择角色以查看附加的策略。

  4. 选择权限

  5. 确保将 AmazonEKSConnectorAgentPolicy 托管策略附加到此角色。如果附加该策略,则将正确配置 Amazon EKS connector 角色。

  6. 选择 Trust relationships(信任关系),然后选择 Edit trust policy(编辑信任策略)。

  7. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel(取消)。如果信任关系不匹配,请将策略复制到 Edit trust policy(编辑信任策略)窗口并选择 Update policy(更新策略)。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

创建 Amazon EKS Connector 代理角色

您可以使用 AWS Management Console 或 AWS CloudFormation 创建 connector 代理角色。

AWS CLI
  1. 创建一个名为 eks-connector-agent-trust-policy.json 的文件,其中包含要用于 IAM 角色的以下 JSON。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  2. 创建一个名为 eks-connector-agent-policy.json 的文件,其中包含要用于 IAM 角色的以下 JSON。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SsmControlChannel", "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel" ], "Resource": "arn:aws:eks:*:*:cluster/*" }, { "Sid": "ssmDataplaneOperations", "Effect": "Allow", "Action": [ "ssmmessages:CreateDataChannel", "ssmmessages:OpenDataChannel", "ssmmessages:OpenControlChannel" ], "Resource": "*" } ] }
  3. 使用您在之前列表项中创建的信任策略和策略创建 Amazon EKS Connector 代理角色。

    aws iam create-role \ --role-name AmazonEKSConnectorAgentRole \ --assume-role-policy-document file://eks-connector-agent-trust-policy.json
  4. 将该策略附加到 Amazon EKS Connector 代理角色。

    aws iam put-role-policy \ --role-name AmazonEKSConnectorAgentRole \ --policy-name AmazonEKSConnectorAgentPolicy \ --policy-document file://eks-connector-agent-policy.json
AWS CloudFormation
要用 AWS CloudFormation 创建 Amazon EKS Connector 代理角色
  1. 将以下 AWS CloudFormation 模板保存到本地系统中的文本文件。

    注意

    此模板还创建服务相关角色,否则调用 registerCluster API 时将创建。有关详细信息,请参阅 使用角色将 Kubernetes 集群连接到 Amazon EKS

    --- AWSTemplateFormatVersion: '2010-09-09' Description: 'Provisions necessary resources needed to register clusters in EKS' Parameters: {} Resources: EKSConnectorSLR: Type: AWS::IAM::ServiceLinkedRole Properties: AWSServiceName: eks-connector.amazonaws.com EKSConnectorAgentRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: [ 'sts:AssumeRole' ] Principal: Service: 'ssm.amazonaws.com' EKSConnectorAgentPolicy: Type: AWS::IAM::Policy Properties: PolicyName: EKSConnectorAgentPolicy Roles: - {Ref: 'EKSConnectorAgentRole'} PolicyDocument: Version: '2012-10-17' Statement: - Effect: 'Allow' Action: [ 'ssmmessages:CreateControlChannel' ] Resource: - Fn::Sub: 'arn:${AWS::Partition}:eks:*:*:cluster/*' - Effect: 'Allow' Action: [ 'ssmmessages:CreateDataChannel', 'ssmmessages:OpenDataChannel', 'ssmmessages:OpenControlChannel' ] Resource: "*" Outputs: EKSConnectorAgentRoleArn: Description: The agent role that EKS connector uses to communicate with AWS 服务. Value: !GetAtt EKSConnectorAgentRole.Arn
  2. 打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  3. 选择 Create stack(创建堆栈)(无论是新资源还是现有资源。

  4. 对于指定模板,选择上传模板文件,然后选择选择文件

  5. 选择您之前创建的文件,然后选择下一步

  6. 对于 Stack name (堆栈名称),输入角色的名称,如 eksConnectorAgentRole,然后选择 Next (下一步)

  7. 配置堆栈选项 页面上,请选择 下一步

  8. Review(审核)页面上审核您的信息,确认堆栈可创建 IAM 资源,然后选择 Create stack(创建堆栈)