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 からアプリをデプロイする場合、Kubernetes の
cluster-admin
ロールを持つ Kubernetes サービス アカウント(KSA)のトークンまたは認証情報を使用して Anthos clusters on VMware クラスタにログインする必要があります。コマンドラインを使用してデプロイする場合は、VMware クラスタ上の Anthos クラスタに対する
cluster-admin
のロールが必要です。クラスタがアプリのコンテナ イメージをダウンロードできるように、Container Registry へのネットワーク アクセスを設定する必要があります。
アプリのイメージにアクセスするには、Anthos clusters on VMware で Docker 認証を設定し、Container Registry にアクセスする必要があります。
これらのタスクを完了したら、アプリの 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 アクセス用のホストを構成します。
Anthos clusters on VMware のインストールに限定公開のレジストリを使用する場合は、Docker レジストリを設定してアプリからイメージをコピーします。
詳細な手順については、インストール用に非公開 Docker レジストリを構成するをご覧ください。
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 への認証を設定します。
新しい Google Cloud サービス アカウントを作成します。サービス アカウントにロールを付与する必要はありません。
サービス アカウントを作成する手順については、サービス アカウントの作成と管理をご覧ください。
サービス アカウント キーを作成し、それを JSON ファイルとしてダウンロードします。キーの作成およびダウンロードの手順については、サービス アカウント キーの作成と管理をご覧ください。
必要に応じて、VMware クラスタ上の Anthos クラスタへの接続に使用するワークステーションに JSON キーをアップロードします。
Cloud Marketplace から初めてアプリをデプロイする場合は、次の手順に従って、Secret を使用して
application-system
Namespace を設定し、Container Registry にアクセスします。すでに 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 です。次のコマンドを使用してアプリの Namespace にアノテーションを付けます。
kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
Kubernetes アプリのデプロイで説明されているように、Cloud Marketplace からアプリをデプロイするときにこの Namespace を使用します。