このトピックでは、GKE on AWS でワークロードを作成し、それをクラスタに内部的に公開する方法について説明します。
始める前に
GKE on AWS の使用を始める前に、次のことを確認してください。
- 前提条件を満たしている。
- 管理サービスをインストールしている。
- ユーザー クラスタを作成している。
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストをユーザー クラスタに切り替えている。cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
CLUSTER_NAME は、ユーザー クラスタ名に置き換えます。
これらの手順は kubectl
で行います。また、Connect で認証している場合は、Google Cloud コンソールで行うことができます。Google Cloud コンソールを使用する場合は、NGINX Deployment を起動するに進んでください。
GKE on AWS リソースに接続するには、次の操作を行います。既存の AWS VPC(または VPC への直接接続)があるか、管理サービスの作成時に専用の VPC を作成したかに基づいて、以下の手順を実施します。
既存の VPC
既存の VPC への直接接続または VPN 接続がある場合は、このトピックのコマンドから env HTTP_PROXY=http://localhost:8118
行を省略します。
専用の VPC
専用の VPC で管理サービスを作成すると、GKE on AWS にパブリック サブネットの踏み台インスタンスが含まれます。
管理サービスに接続するには、次の手順を実施します。
GKE on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
トンネルを開くには、
bastion-tunnel.sh
スクリプトを実行します。トンネルはlocalhost:8118
に転送されます。踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。
./bastion-tunnel.sh -N
SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。
新しいターミナルを開き、
anthos-aws
ディレクトリに移動します。cd anthos-aws
kubectl
を使用してクラスタに接続できることを確認します。env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
出力には、Management Service API サーバーの URL が含まれます。
NGINX Deployment を起動する
このセクションでは、nginx-1
という名前の NGINX ウェブサーバーの Deployment を作成します。
kubectl
kubectl create
を使用して、Deployment を作成します。env HTTPS_PROXY=http://localhost:8118 \ kubectl create deployment --image nginx nginx-1
kubectl
を使用して、Deployment のステータスを取得します。Pod のNAME
をメモします。env HTTPS_PROXY=http://localhost:8118 \ kubectl get deployment
コンソール
Google Cloud コンソールで NGINX Deployment を起動する手順は次のとおりです。
Google Cloud コンソールで GKE の [ワークロード] メニューに移動します。
[デプロイ] をクリックします。
[コンテナの編集] で [既存のコンテナ イメージ] を選択し、Container Registry から使用可能なコンテナ イメージを選択します。[イメージパス] に、使用するコンテナ イメージとそのバージョンを入力します。このクイックスタートでは、
nginx:latest
を使用します。[完了]、[続行] の順にクリックします。構成画面が表示されます。
Deployment のアプリケーション名と Kubernetes 名前空間を変更できます。このクイックスタートでは、アプリケーション名
nginx-1
と名前空間default
を使用します。[クラスタ] プルダウン メニューからユーザー クラスタを選択します。デフォルトでは、最初のユーザー クラスタの名前は
cluster-0
です。[デプロイ] をクリックします。GKE on AWS が NGINX Deployment を起動します。[Deployment の詳細] 画面が表示されます。
Pod を公開する
このセクションでは、次のいずれかを行います。
Deployment をクラスタ内で公開し、
kubectl port-forward
で利用できることを確認します。Google Cloud Console から、ノードプールのセキュリティ グループで許可されるアドレスに Deployment を公開します。
kubectl
kubectl expose
を使用して、ポート 80 で Deployment をクラスタに公開します。env HTTPS_PROXY=http://localhost:8118 \ kubectl expose deployment nginx-1 --port=80
これで、クラスタ内から Deployment にアクセスできるようになりました。
kubectl port-forward
を使用して、Deployment のポート80
をローカルマシンのポート8080
に転送します。env HTTPS_PROXY=http://localhost:8118 \ kubectl port-forward deployment/nginx-1 8080:80
curl
またはウェブブラウザでhttp://localhost:8080
に接続します。デフォルトの NGINX ウェブページが表示されます。curl http://localhost:8080
コンソール
Google Cloud コンソールで GKE の [ワークロード] メニューに移動します。
[Deployment の詳細] ページで [公開] をクリックします。[デプロイメントの公開] 画面が表示されます。
[ポート マッピング] セクションで、デフォルト ポート(
80
)のままにして、[完了] をクリックします。[サービスタイプ] で [ロードバランサ] を選択します。その他のオプションについては、Kubernetes ドキュメントのサービスの公開(ServiceTypes)をご覧ください。
[公開] をクリックします。[Service の詳細] 画面が表示されます。GKE on AWS は、Service に Classic Elastic Load Balancer を作成します。
[外部エンドポイント] のリンクをクリックします。ロードバランサの準備が整うと、デフォルトの NGINX ウェブページが表示されます。
Google Cloud Console で Deployment を表示する
クラスタが Google Cloud Console に接続されている場合は、GKE の [ワークロード] ページで Deployment を表示できます。ワークロードを表示するには、次の手順を行います。
ブラウザで、Google Kubernetes Engine の [ワークロード] ページに移動します。
Google Kubernetes Engine の [ワークロード] ページに移動する
ワークロードのリストが表示されます。
ワークロードの名前(
nginx-1
)をクリックします。[Deployment の詳細] 画面が表示されます。この画面から、Deployment の詳細の確認、YAML 構成の表示と編集、Kubernetes アクションの実行ができます。
このページから利用できるオプションについて詳しくは、GKE のドキュメントのステートレス アプリケーションのデプロイをご覧ください。
クリーンアップ
NGINX Deployment を削除するには、kubectl delete
または Google Cloud Console を使用します。
kubectl
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete service nginx-1 &&\
kubectl delete deployment nginx-1
コンソール
Google Cloud Console で [Service と Ingress] ページメニューに移動します。
NGINX サービスを探して、その名前をクリックします。デフォルトの名前は
nginx-1-service
です。[Service の詳細] 画面が表示されます。(削除)をクリックし、Service を削除することを確定します。GKE on AWS がロードバランサを削除します。
Google Kubernetes Engine の [ワークロード] ページに移動します。
Google Kubernetes Engine の [ワークロード] ページに移動する
ワークロードのリストが表示されます。
ワークロードの名前(
nginx-1
)をクリックします。[Deployment の詳細] 画面が表示されます。(削除)をクリックし、Deployment を削除することを確定します。GKE on AWS が Deployment を削除します。
次のステップ
次のいずれかのサービスを使用して、内部ロードバランサまたは外部ロードバランサを作成します。
GKE on AWS で、他のタイプの Kubernetes ワークロードを使用する。ワークロードのデプロイについて詳しくは、GKE のドキュメントをご覧ください。