Amazon Elastic Kubernetes Service EKSデプロイアクションリファレンス - AWS CodePipeline

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

Amazon Elastic Kubernetes Service EKSデプロイアクションリファレンス

EKSDeploy アクションを使用して、Amazon EKS サービスをデプロイできます。デプロイには、CodePipeline がイメージのデプロイに使用する Kubernetes マニフェストファイルが必要です。

パイプラインを作成する前に、Amazon EKS リソースを作成し、イメージをイメージリポジトリに保存しておく必要があります。必要に応じて、クラスターの VPC 情報を指定できます。

重要

このアクションでは、CodePipeline マネージド CodeBuild コンピューティングを使用して、ビルド環境でコマンドを実行します。コマンドアクションを実行すると、 AWS CodeBuildで別途料金が発生します。

注記

EKS デプロイアクションは V2 タイプのパイプラインでのみ使用できます。

EKS アクションは、パブリック EKS クラスターとプライベート EKS クラスターの両方をサポートします。プライベートクラスターは EKS で推奨されるタイプですが、どちらのタイプもサポートされています。

EKS アクションは、クロスアカウントアクションでサポートされています。クロスアカウント EKS アクションを追加するには、アクション宣言でターゲットアカウントactionRoleArnから を追加します。

アクションタイプ

  • カテゴリ:Deploy

  • 所有者: AWS

  • プロバイダー: EKS

  • バージョン: 1

設定パラメータ

ClusterName

必須: はい

Amazon EKS の Amazon EKS クラスター。

Helm のオプション

Helm が選択したデプロイツールである場合に使用できるオプションは次のとおりです。

HelmReleaseName

必須: はい (Helm タイプでのみ必須)

デプロイのリリース名。

HelmChartLocation

必須: はい (Helm タイプでのみ必須)

デプロイのグラフの場所。

HelmValuesFiles

必須: いいえ (Helm タイプでのみオプション)

デプロイのグラフの場所。

Kubectl のオプション

Kubectl が選択したデプロイツールである場合に使用できるオプションは次のとおりです。

ManifestFiles

必須: はい (Kubectl タイプでのみ必須)

マニフェストファイルの名前、サービスのコンテナ名を説明するテキストファイル、イメージとタグ。このファイルを使用して、イメージ URI とその他の情報をパラメータ化します。この目的のために環境変数を使用できます。

このファイルは、パイプラインのソースリポジトリに保存します。

名前空間

必須: いいえ

kubectl または helm コマンドで使用される kubernetes 名前空間。

サブネット

必須: いいえ

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

SecurityGroupIds

必須: いいえ

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

入力アーティファクト

  • アーティファクトの数: 1

  • 説明: アクションは、パイプラインのソースファイルリポジトリで Kubernetes マニフェストファイルまたは Helm チャートを検索します。S3 バケットに保存されている .tgz 形式の helm チャートを使用する場合は、S3 バケット/キーをソースアクションとして設定することで使用できます。たとえば、指定されたオブジェクトキーは になりますmy-chart-0.1.0.tgz

出力アーティファクト

  • アーティファクトの数: 0

  • 説明: 出力アーティファクトは、このアクションタイプには適用されません。

環境変数

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

キー

などのキーと値の環境変数ペアのキー$IMAGE_TAG

キーと値のペアの値。 などv1.0。値は、パイプラインアクションまたはパイプライン変数からの出力変数でパラメータ化できます。たとえば、パイプラインには で ECR イメージを作成する ECRBuildAndPublish アクションがあり${codepipeline.PipelineExecutionId}、EKS アクションは を環境変数の値${codepipeline.PipelineExecutionId}として使用してこのイメージを使用できます。

出力変数

EKSClusterName

Amazon EKS の Amazon EKS クラスター。

サービスロールのポリシーのアクセス許可

このアクションを実行するには、パイプラインのサービスロールポリシーで次のアクセス許可が使用可能である必要があります。

  • 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

サービスロールポリシーステートメントで、次の例に示すように、アクセス許可をリソースレベルに絞り込みます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:*:YOUR_AWS_ACCOUNT_ID: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:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME","arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*"] }, ] }

アクションの詳細ダイアログページを使用してコンソールでログを表示するには、ログを表示するアクセス許可をコンソールロールに追加する必要があります。詳細については、「CodePipeline コンソールでコンピューティングログを表示するために必要なアクセス許可」でコンソールのアクセス許可ポリシーの例を参照してください。

サービスロールをクラスターのアクセスエントリとして追加する

パイプラインのサービスロールポリシーでアクセス許可が利用可能になったら、CodePipeline サービスロールをクラスターのアクセスエントリとして追加して、クラスターのアクセス許可を設定します。

更新されたアクセス許可を持つアクションロールを使用することもできます。詳細については、「」のチュートリアルの例を参照してくださいステップ 4: CodePipeline サービスロールのアクセスエントリを作成する

アクションの宣言

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" } ] },

このアクションを利用する際に役立つ関連リソースは以下の通りです。