Amazon EKS Connector IAM 角色 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EKS Connector IAM 角色

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

检查现有 connector 角色

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

在 IAM 控制台中检查 AmazonEKSConnectorAgentRole

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

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

  4. 选择权限

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

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

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

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

创建 Amazon EKS Connector 代理角色

您可以使用 Amazon Web Services Management Console 或 Amazon CloudFormation 创建 connector 代理角色。选择带有要用于创建角色的工具名称的选项卡。

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

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SSMAccess", "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
Amazon CloudFormation

要用 Amazon CloudFormation 创建 Amazon EKS Connector 代理角色

  1. 将以下 Amazon CloudFormation 模板保存到本地系统中的文本文件。

    注意

    此模板还创建 使用角色将 Kubernetes 集群连接到 Amazon EKS,否则调用 registerCluster API时将创建。

    --- 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 Amazon Web Services. Value: !GetAtt EKSConnectorAgentRole.Arn
  2. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

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

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

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

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

  7. Configure stack options (配置堆栈选项) 页面上,选择 Next (下一步)

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