@shinyaz

Kaniko + S3 ビルドコンテキストで EKS 上から Docker 不要のコンテナビルドができる

約1分

EKS 上でコンテナイメージをビルドする必要があったが、Docker デーモンを動かせない環境だった。Kaniko の S3 ビルドコンテキスト機能を使ったらあっさり解決した。

手順はシンプル。ソースを tar.gz にして S3 にアップロードし、Kaniko Job で --context=s3:// を指定するだけだ。

apiVersion: batch/v1
kind: Job
metadata:
  name: kaniko-build
  namespace: build
spec:
  template:
    spec:
      serviceAccountName: kaniko
      containers:
      - name: kaniko
        image: gcr.io/kaniko-project/executor:latest
        args:
        - "--context=s3://my-bucket/build/context.tar.gz"
        - "--destination=123456789.dkr.ecr.ap-northeast-1.amazonaws.com/my-app:latest"
      restartPolicy: Never

ポイントは Pod Identity で kaniko サービスアカウントに ECR push 権限(ecr:PutImage, ecr:CompleteLayerUpload 等)と S3 read 権限を付与すること。認証情報のマウントは不要で、Pod Identity が自動で処理する。ビルド時間は Python アプリで 70〜130 秒程度だった。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援を行っています。クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。