

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 アクションは、クロスアカウントアクションでサポートされています。クロスアカウント 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 クラスター。

**Helm のオプション**  
**Helm** が選択したデプロイツールである場合に使用できるオプションは次のとおりです。    
**HelmReleaseName **  
必須: はい (**Helm** タイプでのみ必須)  
デプロイのリリース名。  
**HelmChartLocation **  
必須: はい (**Helm** タイプでのみ必須)  
デプロイのチャートの場所。  
**HelmValuesFiles **  
必須: いいえ (**Helm **タイプでのみオプション)  
helm 値ファイルを上書きするには、helm チャートの場所にカンマ区切りの helm 値ファイルを入力します。

**Kubectl のオプション**  
**Kubectl** が選択したデプロイツールである場合に使用できるオプションは次のとおりです。    
**ManifestFiles**  
必須: はい (**Kubectl** タイプでのみ必須)  
マニフェストファイルの名前は、サービスのコンテナ名およびイメージとタグを説明するテキストファイルです。このファイルを使用して、イメージ URI とその他の情報をパラメータ化します。この目的のために環境変数を使用できます。  
 このファイルは、パイプラインのソースリポジトリに保存します。

**名前空間**  
必須: いいえ  
`kubectl` コマンドまたは `helm` コマンドで使用される kubernetes 名前空間。

**サブネット**  
必須: いいえ  
クラスターの VPC のサブネット。これらは、クラスターにアタッチされているのと同じ VPC の一部です。クラスターにまだアタッチされていないサブネットをここで指定することもできます。

**SecurityGroupIds**  
必須: いいえ  
クラスターの VPC のセキュリティグループ。これらは、クラスターにアタッチされているのと同じ VPC の一部です。クラスターにまだアタッチされていないセキュリティグループを指定して、ここで指定することもできます。

## 入力アーティファクト
<a name="action-reference-EKS-input"></a>
+ **アーティファクトの数:** `1`
+ **説明**: アクションはパイプラインのソースファイルリポジトリ内の Kubernetes マニフェストファイルまたは Helm チャートを参照します。S3 バケットに保存されている .tgz 形式の helm チャートを使用する場合は、S3 バケット/キーをソースアクションとして設定することで使用できます。例えば、指定されたオブジェクトキーは `my-chart-0.1.0.tgz` になります。

## 出力アーティファクト
<a name="action-reference-EKS-output"></a>
+ **アーティファクトの数:** `0` 
+ **説明:** 出力アーティファクトは、このアクションタイプには適用されません。

## 環境変数
<a name="action-reference-EKS-env-variables"></a>

マニフェストファイルまたは helm チャート値ファイルのイメージリポジトリやイメージタグなどの変数を置き換えるために使用されます。

**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 は、アクションを実行するときに、次のようにパイプライン名を使用してロググループを作成します。これにより、パイプライン名を使用してアクセス許可の範囲をリソースのログ記録に絞り込むことができます。

  ```
  /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)」を参照してください。