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

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

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

Cloud Marketplace の Anthos アプリに移動

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

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

Anthos GKE On-Prem へのデプロイ

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

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

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

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

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

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

Anthos GKE On-Prem クラスタに Container Registry のアプリケーション イメージへのアクセスを許可するには、Google Cloud サービス アカウント キーを作成し、そのキーでアプリケーションの Namespace にアノテーションを付ける必要があります。アプリケーションをデプロイすると、キーは imagePullSecret として Namespace のデフォルトの Kubernetes サービス アカウント(KSA)にパッチされます。

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

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

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

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

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

  3. 該当する場合は、Anthos GKE On-Prem クラスタへの接続に使用するワークステーションに 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 を使用します。