コンテナをデプロイする(GKE)

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

始める前に

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

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

kubectl を構成する

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

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

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

以下を置き換えます。

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

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

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

  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 監査ログが有効になっている場合、ログエントリはフェール オープンの条件でデプロイされたイメージを示します。

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

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

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

クリーンアップ

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

  kubectl delete pod ${POD_NAME}
  

次のステップ