Kubernetes アプリの Google Kubernetes Engine(GKE)以外のクラスタへのデプロイ

Anthos clusters on VMware を実行している Anthos クラスタや、Istio を実行しているクラスタなど、Google Kubernetes Engine(GKE)以外のクラスタ構成に Kubernetes アプリをデプロイする場合は、このセクションのタスクを完了する必要があります(該当する場合)。

デプロイしているアプリによっては、クラスタ上でアプリを実行するために追加の手順が必要になる場合があります。アプリの構成については、アプリ ベンダーのドキュメントをご覧ください。

Cloud Marketplace の Anthos アプリに移動

Istio を実行するクラスタへのデプロイ

Istio を実行しているクラスタでは、サードパーティのサービス(OS パッケージのリポジトリなど)への外部接続はデフォルトでブロックされます。外部サービスへのアクセスを有効にするには、Istio の下りトラフィックを構成する必要があります。

VMware 上の Anthos クラスタへのデプロイ

この構成をサポートしている Cloud Marketplace アプリには、VMware クラスタ上の Anthos クラスタのみをデプロイできます。アプリが Anthos clusters on VMware をサポートしているかどうかを確認するには、アプリの Cloud Marketplace リスティングを開き、[概要] に「アプリケーションは GKE On Prem のデプロイメントをサポートしています」という文を探します。

アプリが VMware の Anthos クラスタをサポートしていることを確認したら、アプリをデプロイする前に次のタスクを完了します。

これらのタスクを完了したら、アプリの Cloud Marketplace リストを開き、手順に沿ってアプリをデプロイします

Container Registry へのネットワーク アクセスを設定する

アプリのコンテナ イメージをダウンロードするには、クラスタから Container Registry にネットワーク アクセスできることを確認してください。クラスタホストは marketplace.gcr.io に ping できる必要があります。アクセスを有効にするには、次のうち 1 つ以上を行う必要があります。

Container Registry にアクセスするための Docker 認証を設定する

Anthos clusters on VMware から Container Registry のアプリイメージにアクセスできるようにするには、Google Cloud サービス アカウント キーを作成し、そのキーを使ってアプリの Namespace にアノテーションを付ける必要があります。このキーは、アプリをデプロイするときに、Namespace のデフォルトの Kubernetes サービス アカウント(KSA)に imagePullSecret としてパッチされます。

Anthos clusters on VMware に初めてアプリをデプロイする際は、Cloud Marketplace コンポーネント用の application-system という Namespace も作成し、その Namespace のデフォルトのサービス アカウントに imagePullSecret を適用する必要があります。

次の手順に従って、Container Registry への認証を設定します。

  1. 新しい Google Cloud サービス アカウントを作成します。サービス アカウントにロールを付与する必要はありません。

    サービス アカウントを作成する手順については、サービス アカウントの作成と管理をご覧ください。

  2. サービス アカウント キーを作成し、それを JSON ファイルとしてダウンロードします。キーの作成およびダウンロードの手順については、サービス アカウント キーの作成と管理をご覧ください。

  3. 必要に応じて、VMware クラスタ上の Anthos クラスタへの接続に使用するワークステーションに JSON キーをアップロードします。

  4. Cloud Marketplace から初めてアプリをデプロイする場合は、次の手順に従って、Secret を使用して application-system Namespace を設定し、Container Registry にアクセスします。すでに Namespace を設定している場合は、この手順をスキップしてください。

    1. クラスタにapplication-system Namespace を作成します。

    2. 次のコマンドを使用して、application-systemimagePullSecret を含む Secret を作成します。

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace="application-system" \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat $JSON_KEY_FILENAME)"
      
    3. 次のコマンドを使用して、この imagePullSecretapplication-system Namespace のデフォルトの ServiceAccount に適用します。

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. アプリをデプロイする Namespace ごとに、新しい Kubernetes Secret を作成して、その Namespace にその Secret でアノテーションを付ける必要があります。別の Namespace の Secret を再利用することはできません。

    1. Google Cloud サービス アカウント キーを使用して Container Registry にアクセスするための Kubernetes Secret を作成します。

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace=$NAMESPACE_NAME \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
      

      ここで、$NAMESPACE_NAME はアプリに使用する Namespace です。

    2. 次のコマンドを使用してアプリの Namespace にアノテーションを付けます。

      kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
      

      Kubernetes アプリのデプロイで説明されているように、Cloud Marketplace からアプリをデプロイするときにこの Namespace を使用します。