

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Elastic Kubernetes Service `EKS` 배포 작업 참조
<a name="action-reference-EKS"></a>

`EKSDeploy` 작업을 사용하여 Amazon EKS 서비스를 배포할 수 있습니다. 배포에는 CodePipeline이 이미지를 배포하는 데 사용하는 Kubernetes 매니페스트 파일이 필요합니다.

파이프라인을 생성하기 전에, Amazon EKS 리소스를 미리 생성하고 이미지를 이미지 리포지토리에 저장해 두어야 합니다. 선택적으로 클러스터에 대한 VPC 정보를 제공할 수 있습니다.

**중요**  
이 작업은 CodePipeline 관리형 CodeBuild 컴퓨팅을 사용하여 빌드 환경에서 명령을 실행합니다. 명령 작업을 실행하면 AWS CodeBuild에서 별도의 요금이 발생합니다.

**참고**  
`EKS` 배포 작업은 V2 유형 파이프라인에서만 사용할 수 있습니다.

EKS 작업은 퍼블릭 및 프라이빗 EKS 클러스터를 모두 지원합니다. 프라이빗 클러스터는 EKS에서 권장하는 유형이지만 두 유형 모두 지원됩니다.

EKS 작업은 교차 계정 작업에 대해 지원됩니다. 교차 계정 EKS 작업을 추가하려면 작업 선언의 대상 계정에서 `actionRoleArn`을 추가합니다.

**Topics**
+ [작업 유형](#action-reference-EKS-type)
+ [구성 파라미터](#action-reference-EKS-config)
+ [입력 아티팩트](#action-reference-EKS-input)
+ [출력 아티팩트](#action-reference-EKS-output)
+ [환경 변수](#action-reference-EKS-env-variables)
+ [출력 변수](#action-reference-EKS-output-vars)
+ [서비스 역할 정책 권한](#action-reference-EKS-service-role)
+ [작업 선언](#action-reference-EKS-example)
+ [다음 사항도 참조하세요.](#action-reference-EKS-links)

## 작업 유형
<a name="action-reference-EKS-type"></a>
+ 범주: `Deploy`
+ 소유자: `AWS`
+ 공급자: `EKS`
+ 버전: `1`

## 구성 파라미터
<a name="action-reference-EKS-config"></a>

**ClusterName**  
필수 항목 여부: 예  
Amazon EKS의 Amazon EKS 클러스터입니다.

**헬름 아래의 옵션**  
다음은 **헬름**이 선택한 배포 도구일 때 사용할 수 있는 옵션입니다.    
**HelmReleaseName **  
필수: 예(**헬름** 유형에만 필수)  
배포의 릴리스 이름입니다.  
**HelmChartLocation **  
필수: 예(**헬름** 유형에만 필수)  
배포의 차트 위치입니다.  
**HelmValuesFiles **  
필수: 아니요(**헬름** 유형의 경우에만 선택 사항)  
헬름 값 파일에 대해 재정의하려면 헬름 차트 위치에 쉼표로 구분된 헬름 차트 값 파일을 입력합니다.

**Kubectl의 옵션**  
다음은 **Kubectl**이 선택한 배포 도구일 때 사용할 수 있는 옵션입니다.    
**ManifestFiles**  
필수: 예(**Kubectl** 유형에만 필수)  
서비스의 컨테이너 이름과 이미지 및 태그를 설명하는 텍스트 파일, 매니페스트 파일의 이름입니다. 이 파일을 사용하여 이미지 URI 및 기타 정보를 파라미터화합니다. 이 용도로 환경 변수를 사용할 수 있습니다.  
 이 파일을 파이프라인의 소스 리포지토리에 저장합니다.

**네임스페이스**  
필수 여부: 아니요  
`kubectl` 또는 `helm` 명령에 사용할 kubernetes 네임스페이스입니다.

**서브넷**  
필수 여부: 아니요  
클러스터의 VPC에 대한 서브넷입니다. 이는 클러스터에 연결된 동일한 VPC의 일부입니다. 클러스터에 아직 연결되지 않은 서브넷을 제공하고 여기에 지정할 수도 있습니다.

**SecurityGroupIds**  
필수 여부: 아니요  
클러스터의 VPC에 대한 보안 그룹입니다. 이는 클러스터에 연결된 동일한 VPC의 일부입니다. 클러스터에 아직 연결되지 않은 보안 그룹을 제공하고 여기에 지정할 수도 있습니다.

## 입력 아티팩트
<a name="action-reference-EKS-input"></a>
+ **아티팩트 수:** `1`
+ **설명:** 이 작업은 파이프라인의 소스 파일 리포지토리에서 Kubernetes 매니페스트 파일 또는 헬름 차트를 찾습니다. S3 버킷에 저장된 .tgz 형식의 헬름 차트를 사용하려면 S3 버킷/키를 소스 작업으로 구성하면 됩니다. 예를 들어 제공된 객체 키는 `my-chart-0.1.0.tgz`입니다.

## 출력 아티팩트
<a name="action-reference-EKS-output"></a>
+ **아티팩트 수:** `0` 
+ **설명:** 이 작업 유형에는 출력 아티팩트가 적용되지 않습니다.

## 환경 변수
<a name="action-reference-EKS-env-variables"></a>

매니페스트 파일 또는 헬름 차트 값 파일의 이미지 리포지토리 또는 이미지 태그와 같은 변수를 대체하는 데 사용됩니다.

**Key(키)**  
`$IMAGE_TAG`과 같은 키-값 환경 변수 페어의 키입니다.

**값**  
`v1.0`과 같은 키-값 페어의 값입니다. 파이프라인 작업 또는 파이프라인 변수의 출력 변수를 사용하여 값을 파라미터화할 수 있습니다. 예를 들어 파이프라인에는 `${codepipeline.PipelineExecutionId}`를 사용하여 ECR 이미지를 생성하는 ECRBuildAndPublish 작업이 있을 수 있으며, EKS 작업은 `${codepipeline.PipelineExecutionId}`를 환경 변수의 값으로 사용하여 이 이미지를 사용할 수 있습니다.

## 출력 변수
<a name="action-reference-EKS-output-vars"></a>

**EKSClusterName**  
Amazon EKS의 Amazon EKS 클러스터입니다.

## 서비스 역할 정책 권한
<a name="action-reference-EKS-service-role"></a>

이 작업을 실행하려면 파이프라인의 서비스 역할 정책에서 다음 권한을 사용할 수 있어야 합니다.
+ **EC2 작업:** CodePipeline이 실행되면 EC2 인스턴스 권한이 필요합니다. 이는 EKS 클러스터를 생성할 때 필요한 EC2 인스턴스 역할과 동일하지 않습니다.

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + ec2:CreateNetworkInterface
  + ec2:DescribeDhcpOptions
  + ec2:DescribeNetworkInterfaces
  + ec2:DeleteNetworkInterface
  + ec2:DescribeSubnets
  + ec2:DescribeSecurityGroups
  + ec2:DescribeVpcs
+ **EKS 작업:** CodePipeline이 작업을 실행할 때 EKS 클러스터 권한이 필요합니다. 이는 EKS 클러스터를 생성할 때 필요한 IAM EKS 클러스터 역할과 동일하지 않습니다.

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + eks:DescribeCluster
+ **로그 스트림 작업:** CodePipeline이 작업을 실행하면 CodePipeline은 다음과 같이 파이프라인 이름을 사용하여 로그 그룹을 생성합니다. 이렇게 하면 파이프라인 이름을 사용하여 리소스를 로깅할 수 있는 권한을 범위 아래로 지정할 수 있습니다.

  ```
  /aws/codepipeline/MyPipelineName
  ```

  기존 서비스 역할을 사용하는 경우 이 작업을 사용하려면 서비스 역할에 대해 다음 권한을 추가해야 합니다.
  + logs:CreateLogGroup
  + logs:CreateLogStream
  + logs:PutLogEvents

서비스 역할 정책 설명에서 다음 예제와 같이 리소스 수준까지 권한의 범위를 좁힙니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME",
                "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"
            ]
        }
    ]
}
```

------

작업 세부 정보 대화 상자를 사용하여 콘솔에서 로그를 보려면 로그를 볼 수 있는 권한을 콘솔 역할에 추가해야 합니다. 자세한 내용은 [콘솔에서 컴퓨팅 로그를 보는 데 필요한 권한](security-iam-permissions-console-logs.md)에서 콘솔 권한 정책 예제를 참조하세요.

### 서비스 역할을 클러스터의 액세스 항목으로 추가
<a name="action-reference-EKS-service-role-access"></a>

파이프라인의 서비스 역할 정책에서 권한을 사용할 수 있게 되면 CodePipeline 서비스 역할을 클러스터의 액세스 항목으로 추가하여 클러스터 권한을 구성합니다.

업데이트된 권한이 있는 작업 역할을 사용할 수도 있습니다. 자세한 정보는 [4단계: CodePipeline 서비스 역할에 대한 액세스 항목 생성](tutorials-eks-deploy.md#tutorials-eks-deploy-access-entry)의 자습서 예제를 참조하세요.

## 작업 선언
<a name="action-reference-EKS-example"></a>

------
#### [ YAML ]

```
Name: DeployEKS
ActionTypeId:
  Category: Deploy
  Owner: AWS
  Provider: EKS
  Version: '1'
RunOrder: 2
Configuration:
  ClusterName: my-eks-cluster
  ManifestFiles: ManifestFile.json
OutputArtifacts: []
InputArtifacts:
  - Name: SourceArtifact
```

------
#### [ JSON ]

```
{
    "Name": "DeployECS",
    "ActionTypeId": {
        "Category": "Deploy",
        "Owner": "AWS",
        "Provider": "EKS",
        "Version": "1"
    },
    "RunOrder": 2,
    "Configuration": {
        "ClusterName": "my-eks-cluster",
        "ManifestFiles": "ManifestFile.json"
    },
    "OutputArtifacts": [],
    "InputArtifacts": [
        {
            "Name": "SourceArtifact"
        }
    ]
},
```

------

## 다음 사항도 참조하세요.
<a name="action-reference-EKS-links"></a>

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.
+ EKS 클러스터 및 Kubernetes 매니페스트 파일을 생성하여 파이프라인에 작업을 추가하는 방법을 보여주는 자습서는 [자습서: CodePipeline을 사용하여 Amazon EKS에 배포](tutorials-eks-deploy.md) 섹션을 참조하세요.