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 からアプリケーションをデプロイする場合は、Kubernetes
cluster-admin
ロールを持つ Kubernetes サービスアカウント(KSA)用のトークンまたは認証情報を使用して、VMware クラスタ上の Anthos クラスタにログインする必要があります。コマンドラインを使用してデプロイする場合は、VMware クラスタ上の Anthos クラスタに対する
cluster-admin
のロールが必要です。クラスタがアプリケーションのコンテナ イメージをダウンロードできるように、Container Registry へのネットワーク アクセスを設定する必要があります。
アプリケーションのイメージにアクセスするには、Container Registry にアクセスするために、VMware クラスタ上の Anthos クラスタに Docker 認証を設定する必要があります。
これらのタスクを完了したら、アプリケーションの Cloud Marketplace リストを開き、手順に沿ってアプリケーションをデプロイします。
Container Registry へのネットワーク アクセスを設定する
アプリケーションのコンテナ イメージをダウンロードするには、クラスタから Container Registry にネットワーク アクセスできることを確認してください。クラスタホストは marketplace.gcr.io
に ping できる必要があります。アクセスを有効にするには、次のうち 1 つ以上を行う必要があります。
marketplace.gcr.io
へのアクセスを許可するファイアウォール ルールを作成します。HTTP または HTTPS プロキシを使用している場合は、
marketplace.gcr.io/*
を許可にして、プロキシを介してイメージを pull するために Docker デーモンを構成します。詳細な手順については、プロキシとファイアウォール ルールをご覧ください。
Virtual Private Cloud(VPC)を使用している場合は、限定公開の Google アクセス用のホストを構成します。
VMware インストール上の Anthos クラスタ用の限定公開レジストリを使用する場合は、Docker レジストリを設定し、アプリケーションからイメージをコピーします。
詳細な手順については、インストール用に非公開 Docker レジストリを構成するをご覧ください。
Container Registry にアクセスするための Docker 認証を設定する
VMware クラスタ上の Anthos クラスタから Container Registry 内のアプリケーション イメージにアクセスできるようにするには、Google Cloud のサービス アカウント キーを作成し、そのキーを使ってアプリケーションの名前空間にアノテーションを付ける必要があります。アプリケーションをデプロイすると、キーは imagePullSecret
として Namespace のデフォルトの Kubernetes サービス アカウント(KSA)にパッチされます。
VMware クラスタ上の Anthos クラスタに初めてアプリケーションをデプロイする場合は、Cloud Marketplace コンポーネント用に application-system
という名前空間も作成し、imagePullSecret
を名前空間用のデフォルトのサービス アカウントに適用します。
次の手順に従って、Container Registry への認証を設定します。
新しい Google Cloud サービス アカウントを作成します。サービス アカウントにロールを付与する必要はありません。
サービス アカウントを作成する手順については、サービス アカウントの作成と管理をご覧ください。
サービス アカウント キーを作成し、それを JSON ファイルとしてダウンロードします。キーの作成およびダウンロードの手順については、サービス アカウント キーの作成と管理をご覧ください。
必要に応じて、VMware クラスタ上の Anthos クラスタへの接続に使用するワークステーションに JSON キーをアップロードします。
Cloud Marketplace から初めてアプリケーションをデプロイする場合は、次の手順に沿って Container Registry にアクセスするための
application-system
名前空間を Secret を使用して設定します。すでに Namespace を設定している場合は、この手順をスキップしてください。クラスタに
application-system
Namespace を作成します。次のコマンドを使用して、
application-system
のimagePullSecret
を含む 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)"
次のコマンドを使用して、この
imagePullSecret
をapplication-system
Namespace のデフォルトの ServiceAccount に適用します。kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
アプリケーションをデプロイする Namespace ごとに、新しい Kubernetes Secret を作成し、その Namespace にその Secret でアノテーションを付ける必要があります。別の Namespace の Secret を再利用することはできません。
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 です。次のコマンドを使用してアプリケーションの名前空間に注釈を追加します。
kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
Kubernetes アプリのデプロイで説明されているように、Cloud Marketplace からアプリをデプロイするときにこの Namespace を使用します。