コンテナをデプロイする(GKE、GKE クラスタ)

このページでは、Google Kubernetes Engine(GKE)クラスタまたは Binary Authorization が有効になっている GKE クラスタにコンテナ イメージをデプロイする方法について説明します。イメージのデプロイに使用する kubectl コマンドは、Binary Authorization を使用しないクラスタにイメージをデプロイする場合と同じものです。

始める前に

プロジェクトで Binary Authorization API が有効になっていることと、Binary Authorization が有効になっている GKE クラスタがあることを確認します。Google Kubernetes Engine での設定または GKE クラスタでの設定をご覧ください。

GKE を操作するために kubectl をインストールします。

kubectl を構成する

kubectl のインストール用にローカルの kubeconfig ファイルを更新する必要があります。これにより、GKE または GKE クラスタでクラスタにアクセスするために必要な認証情報とエンドポイント情報が提供されます。

kubectl を構成するには、次の gcloud コマンドを実行します。

GKE

gcloud container clusters get-credentials \
    --zone ZONE \
    CLUSTER_NAME

次のように置き換えます。

  • ZONE: クラスタが実行されている GKE ゾーンの名前(例: us-central1-a
  • CLUSTER_NAME: クラスタの名前

GKE クラスタ

gcloud container fleet memberships get-credentials \
    --location LOCATION \
    MEMBERSHIP_NAME

次のように置き換えます。

  • LOCATION: GKE クラスタのフリート メンバーシップの場所(たとえば、global
  • MEMBERSHIP_NAME: GKE クラスタのフリート メンバーシップの名前

コンテナ イメージをデプロイする

次のようにコンテナ イメージをデプロイします。

  1. 環境変数を構成します。

    POD_NAME=POD_NAME
    IMAGE_PATH=IMAGE_PATH
    IMAGE_DIGEST=IMAGE_DIGEST
    

    次のように置き換えます。

    • POD_NAME: GKE ワークロードに使用する名前。
    • IMAGE_PATH: Artifact RegistryContainer Registry、または別のレジストリ内のイメージのパス。
    • IMAGE_DIGEST: イメージ マニフェストのダイジェスト。次に例を示します。

      • Artifact Registry:
        • パス: us-docker.pkg.dev/google-samples/containers/gke/hello-app
        • ダイジェスト: sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
      • Container Registry:
        • パス: gcr.io/google-samples/hello-app
        • ダイジェスト: sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4

      Artifact Registry 内のイメージのダイジェストを取得する方法については、イメージの管理をご覧ください。Container Registry のイメージの場合は、イメージのバージョンの一覧表示をご覧ください。

  2. kubectl run コマンドを使用してイメージをデプロイします。

    Binary Authorization はイメージパスとダイジェストの両方を使用して証明書を検索するため、1.0latest などのタグではなく、ダイジェストを使用してイメージをデプロイする必要があります。

    イメージをデプロイするには、次の kubectl コマンドを実行します。

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    次に、Binary Authorization でデプロイがブロックされたことを確認します。

    kubectl get pods
    

    一覧表示された Pod を確認します。

フェール オープン

なんらかの理由で GKE または GKE クラスタが Binary Authorization サーバーにアクセスできない場合、適用プロセスはフェール オープンになります。たとえば、コンテナ イメージをデプロイして、ネットワークの停止が原因で Binary Authorization 施行者がアクセスできない場合、施行者がブロックしていてもイメージがデプロイされます。Cloud Audit Logs が有効になっている場合、フェイル オープン条件でデプロイされたイメージがログエントリに示されます。

ポリシーに違反するイメージをデプロイする

Binary Authorization では、ポリシーに違反する場合でもイメージをデプロイできるブレークグラスという機能がサポートされています。

詳しくは、ブレークグラスの使用をご覧ください。

クリーンアップ

クリーンアップするには、次のコマンドを実行して Pod を削除します。

  kubectl delete pod ${POD_NAME}
  

次のステップ