概要
AWS CDK v2.209.1は、Amazon EKSモジュールにおけるHelmチャート関連の重要なバグ修正を含むパッチリリースです。ECR Public(Amazon Elastic Container Registry Public)からHelmチャートを取得する際に、ECRへのログインが正しく実行されない問題を修正しています。
バグ修正
EKS: Helmコマンド実行時のECR Publicログイン問題の修正
影響を受けるモジュール: aws-eks
問題の詳細:
v2.172.0でのPR #35148およびPR #35141の変更により、リグレッション(機能退化)が発生していました。具体的には、ECR Public(public.ecr.aws)からOCI形式のHelmチャートをインストールする際に、ECR Publicへのログインが実行されなくなる問題が発生していました。
この問題により、以下のようなシナリオで影響が発生していました:
oci://public.ecr.aws/...形式のリポジトリURLを使用してHelmチャートをインストールする場合- AWS Controllers for Kubernetes (ACK)などのECR Publicで公開されているHelmチャートを使用する場合
- 認証が必要なECR Publicリポジトリにアクセスする場合
修正内容:
v2.209.1では、Helmコマンド実行時のロジックを修正し、ECR Publicリポジトリを検出した際に以下の処理が正しく実行されるようになりました:
- ECR Publicリポジトリの検出(
public.ecr.awsドメイン) aws ecr-public get-login-passwordコマンドの実行helm registry loginコマンドによる認証- Helmチャートの取得とインストール
影響を受けるコンポーネント:
HelmChartコンストラクト(通常版)- Lambda関数内で実行されるHelm操作ハンドラー
コード例:
以下は、ECR PublicからAWS Controllers for Kubernetes (ACK)のS3コントローラーをインストールする例です:
import * as cdk from 'aws-cdk-lib';
import * as eks from 'aws-cdk-lib/aws-eks';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'EksClusterStack');
// VPCの作成
const vpc = new ec2.Vpc(stack, 'VPC', {
maxAzs: 2,
});
// EKSクラスターの作成
const cluster = new eks.Cluster(stack, 'TestCluster', {
vpc,
version: eks.KubernetesVersion.V1_31,
defaultCapacity: 2,
});
// ECR PublicからOCI形式のHelmチャートをインストール
// v2.209.1では、ECR Publicへのログインが自動的に実行されるようになりました
cluster.addHelmChart('S3Controller', {
chart: 's3-chart', // チャート名
release: 's3-chart', // Helmリリース名
repository: 'oci://public.ecr.aws/aws-controllers-k8s/s3-chart', // ECR PublicのOCIリポジトリ
version: 'v0.1.0', // チャートバージョン
namespace: 'ack-system', // インストール先のnamespace
createNamespace: true, // namespace自動作成
values: {
aws: {
region: stack.region, // AWSリージョンの設定
},
},
});
処理フロー:
v2.209.1では、以下のログが出力され、ECR Publicへのログインが正しく実行されることが確認できます:
[INFO] Found AWS public repository, will use default region as deployment
[INFO] Running login command: ['aws', 'ecr-public', 'get-login-password', '--region', 'us-east-1']
[INFO] Running registry login command: ['helm', 'registry', 'login', '--username', 'AWS', '--password-stdin', 'public.ecr.aws']
[INFO] Running helm command: ['helm', 'pull', 'oci://public.ecr.aws/aws-controllers-k8s/s3-chart', '--version', 'v0.1.0', '--untar']
[INFO] Pulled: public.ecr.aws/aws-controllers-k8s/s3-chart:v0.1.0
その他のECR Public Helmチャート例:
// AWS Load Balancer Controllerの例
cluster.addHelmChart('ALBController', {
chart: 'aws-load-balancer-controller',
release: 'aws-load-balancer-controller',
repository: 'oci://public.ecr.aws/eks/aws-load-balancer-controller',
version: '1.8.0',
namespace: 'kube-system',
values: {
clusterName: cluster.clusterName,
serviceAccount: {
create: true,
name: 'aws-load-balancer-controller',
},
},
});
関連リソース:
- PR #35161: https://github.com/aws/aws-cdk/pull/35161
- 関連する元の変更: PR #35148, PR #35141
Alpha モジュール (2.209.1-alpha.0)
eks-v2-alpha: Helmコマンド実行時のECR Publicログイン問題の修正
影響を受けるモジュール: @aws-cdk/aws-eks-v2-alpha
Alpha版のEKS v2モジュールでも、通常版と同様のバグ修正が適用されました。
修正内容:
Alpha版のEKS v2モジュールにおいても、ECR PublicからOCI形式のHelmチャートをインストールする際のログイン処理が修正されています。
コード例:
import * as cdk from 'aws-cdk-lib';
import * as eks from '@aws-cdk/aws-eks-v2-alpha';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'EksV2ClusterStack');
const vpc = new ec2.Vpc(stack, 'VPC', {
maxAzs: 2,
});
// EKS v2 Alphaモジュールを使用したクラスター作成
const cluster = new eks.Cluster(stack, 'TestCluster', {
vpc,
version: eks.KubernetesVersion.V1_31,
});
// ECR PublicからHelmチャートをインストール
// v2.209.1-alpha.0では、ECR Publicへのログインが正しく実行されます
cluster.addHelmChart('ACKController', {
chart: 's3-chart',
release: 's3-chart',
repository: 'oci://public.ecr.aws/aws-controllers-k8s/s3-chart',
version: 'v0.1.0',
namespace: 'ack-system',
createNamespace: true,
values: {
aws: {
region: stack.region,
},
},
});
関連リソース:
- PR #35162: https://github.com/aws/aws-cdk/pull/35162
まとめ
v2.209.1は、EKSモジュールにおけるHelmチャート関連の重要なバグ修正を含むパッチリリースです。ECR PublicからOCI形式のHelmチャートをインストールする際の認証問題を修正しており、AWS Controllers for Kubernetes (ACK)やAWS Load Balancer ControllerなどのECR Publicで公開されているHelmチャートを使用する場合に必須のアップデートとなります。
既存のCDKアプリケーションでEKSクラスターを管理し、ECR PublicからHelmチャートをインストールしている場合は、このバージョンへのアップデートを推奨します。通常版とAlpha版の両方で修正が適用されているため、どちらのバージョンを使用している場合でも恩恵を受けることができます。