Kubernetes アプリケーションの GKE 以外のクラスタへのデプロイ

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

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

Cloud Marketplace の Anthos アプリに移動

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

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

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

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

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

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

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

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

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

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

VMware クラスタ上の Anthos クラスタに初めてアプリケーションをデプロイする場合は、Cloud Marketplace コンポーネント用に application-system という名前空間も作成し、imagePullSecret を名前空間用のデフォルトのサービス アカウントに適用します。

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

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

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

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

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

  4. Cloud Marketplace から初めてアプリケーションをデプロイする場合は、次の手順に沿って Container Registry にアクセスするための application-system 名前空間を Secret を使用して設定します。すでに 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. 次のコマンドを使用してアプリケーションの名前空間に注釈を追加します。

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

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