Amazon EKS 커넥터 IAM 역할
Amazon EKS 커넥터 IAM 역할 (Connector IAM role)
Kubernetes 클러스터를 연결해 AWS Management Console에서 볼 수 있어요. Kubernetes 클러스터에 연결하려면 IAM 역할을 만들어야 해요.
출처: 문서
본문
기존 EKS 커넥터 역할 확인하기
계정에 Amazon EKS 커넥터 역할이 이미 있는지 확인하려면 다음 절차를 사용할 수 있어요.
- https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- 왼쪽 탐색 창에서 Roles를 선택합니다.
- 역할 목록에서
AmazonEKSConnectorAgentRole을 검색합니다.AmazonEKSConnectorAgentRole이 포함된 역할이 없으면 Amazon EKS 커넥터 에이전트 역할 생성을 참고해 역할을 만듭니다.AmazonEKSConnectorAgentRole이 포함된 역할이 있으면 그 역할을 선택해 연결된 정책을 봅니다. - Permissions를 선택합니다.
AmazonEKSConnectorAgentPolicy관리형 정책이 역할에 연결되어 있는지 확인합니다. 정책이 연결되어 있다면 Amazon EKS 커넥터 역할이 올바르게 구성된 것입니다.- Trust relationships를 선택한 다음 Edit trust policy를 선택합니다.
- 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 다음 정책과 일치하면 Cancel을 선택합니다. 일치하지 않으면 정책을 Edit trust policy 창에 복사하고 Update policy를 선택합니다.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ssm.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Amazon EKS 커넥터 에이전트 역할 생성
커넥터 에이전트 역할은 AWS Management Console이나 AWS CloudFormation으로 만들 수 있어요.
AWS CLI
- IAM 역할에 사용할 다음 JSON이 포함된
eks-connector-agent-trust-policy.json파일을 만듭니다.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ssm.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
- IAM 역할에 사용할 다음 JSON이 포함된
eks-connector-agent-policy.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": "*"
}
]
}
- 이전 항목에서 만든 신뢰 정책과 정책을 사용해 Amazon EKS Connector 에이전트 역할을 만듭니다.
aws iam create-role \
--role-name AmazonEKSConnectorAgentRole \
--assume-role-policy-document file://eks-connector-agent-trust-policy.json
- 정책을 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 템플릿을 로컬 시스템의 텍스트 파일로 저장합니다.
참고
이 템플릿은
registerClusterAPI가 호출될 때 생성되는 서비스 연결 역할도 함께 만듭니다. 자세한 내용은 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 services.
Value: !GetAtt EKSConnectorAgentRole.Arn
- AWS CloudFormation 콘솔을 엽니다.
- Create stack with new resources (standard)를 선택합니다.
- Specify template에서 Upload a template file을 선택한 다음 Choose file을 선택합니다.
- 아까 만든 파일을 선택한 다음 Next를 선택합니다.
- Stack name에
eksConnectorAgentRole같은 역할 이름을 입력한 다음 Next를 선택합니다. - Configure stack options 페이지에서 Next를 선택합니다.
- Review 페이지에서 정보를 검토하고 스택이 IAM 리소스를 만들 수 있음을 확인한 다음 Create stack을 선택합니다.