クイックスタート

このトピックでは、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 にパブリック サブネットの踏み台インスタンスが含まれます。

管理サービスに接続するには、次の手順を実施します。

  1. GKE on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。

    cd anthos-aws

  2. トンネルを開くには、bastion-tunnel.sh スクリプトを実行します。トンネルは localhost:8118 に転送されます。

    踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。

    ./bastion-tunnel.sh -N
    

    SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。

  3. 新しいターミナルを開き、anthos-aws ディレクトリに移動します。

    cd anthos-aws
  4. kubectl を使用してクラスタに接続できることを確認します。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    出力には、Management Service API サーバーの URL が含まれます。

NGINX Deployment を起動する

このセクションでは、nginx-1 という名前の NGINX ウェブサーバーの Deployment を作成します。

kubectl

  1. kubectl create を使用して、Deployment を作成します。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl create deployment --image nginx nginx-1
    
  2. kubectl を使用して、Deployment のステータスを取得します。Pod の NAME をメモします。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl get deployment
    

コンソール

Google Cloud コンソールで NGINX Deployment を起動する手順は次のとおりです。

  1. Google Cloud コンソールで GKE の [ワークロード] メニューに移動します。

    [ワークロード] メニューに移動

  2. [デプロイ] をクリックします。

  3. [コンテナの編集] で [既存のコンテナ イメージ] を選択し、Container Registry から使用可能なコンテナ イメージを選択します。[イメージパス] に、使用するコンテナ イメージとそのバージョンを入力します。このクイックスタートでは、nginx:latest を使用します。

  4. [完了]、[続行] の順にクリックします。構成画面が表示されます。

  5. Deployment のアプリケーション名と Kubernetes 名前空間を変更できます。このクイックスタートでは、アプリケーション名 nginx-1 と名前空間 default を使用します。

  6. [クラスタ] プルダウン メニューからユーザー クラスタを選択します。デフォルトでは、最初のユーザー クラスタの名前は cluster-0 です。

  7. [デプロイ] をクリックします。GKE on AWS が NGINX Deployment を起動します。[Deployment の詳細] 画面が表示されます。

Pod を公開する

このセクションでは、次のいずれかを行います。

  • Deployment をクラスタ内で公開し、kubectl port-forward で利用できることを確認します。

  • Google Cloud Console から、ノードプールのセキュリティ グループで許可されるアドレスに Deployment を公開します。

kubectl

  1. kubectl expose を使用して、ポート 80 で Deployment をクラスタに公開します。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl expose deployment nginx-1 --port=80
    

    これで、クラスタ内から Deployment にアクセスできるようになりました。

  2. kubectl port-forward を使用して、Deployment のポート 80 をローカルマシンのポート 8080 に転送します。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl port-forward deployment/nginx-1 8080:80
    
  3. curl またはウェブブラウザで http://localhost:8080 に接続します。デフォルトの NGINX ウェブページが表示されます。

    curl http://localhost:8080
    

コンソール

  1. Google Cloud コンソールで GKE の [ワークロード] メニューに移動します。

    [ワークロード] メニューに移動

  2. [Deployment の詳細] ページで [公開] をクリックします。[デプロイメントの公開] 画面が表示されます。

  3. [ポート マッピング] セクションで、デフォルト ポート(80)のままにして、[完了] をクリックします。

  4. [サービスタイプ] で [ロードバランサ] を選択します。その他のオプションについては、Kubernetes ドキュメントのサービスの公開(ServiceTypes)をご覧ください。

  5. [公開] をクリックします。[Service の詳細] 画面が表示されます。GKE on AWS は、Service に Classic Elastic Load Balancer を作成します。

  6. [外部エンドポイント] のリンクをクリックします。ロードバランサの準備が整うと、デフォルトの NGINX ウェブページが表示されます。

Google Cloud Console で Deployment を表示する

クラスタが Google Cloud Console に接続されている場合は、GKE の [ワークロード] ページで Deployment を表示できます。ワークロードを表示するには、次の手順を行います。

  1. ブラウザで、Google Kubernetes Engine の [ワークロード] ページに移動します。

    Google Kubernetes Engine の [ワークロード] ページに移動する

    ワークロードのリストが表示されます。

  2. ワークロードの名前(nginx-1)をクリックします。[Deployment の詳細] 画面が表示されます。

  3. この画面から、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

コンソール

  1. Google Cloud Console で [Service と Ingress] ページメニューに移動します。

    [Service と Ingress] ページに移動

  2. NGINX サービスを探して、その名前をクリックします。デフォルトの名前は nginx-1-service です。[Service の詳細] 画面が表示されます。

  3. 削除)をクリックし、Service を削除することを確定します。GKE on AWS がロードバランサを削除します。

  4. Google Kubernetes Engine の [ワークロード] ページに移動します。

    Google Kubernetes Engine の [ワークロード] ページに移動する

    ワークロードのリストが表示されます。

  5. ワークロードの名前(nginx-1)をクリックします。[Deployment の詳細] 画面が表示されます。

  6. 削除)をクリックし、Deployment を削除することを確定します。GKE on AWS が Deployment を削除します。

次のステップ

次のいずれかのサービスを使用して、内部ロードバランサまたは外部ロードバランサを作成します。

GKE on AWS で、他のタイプの Kubernetes ワークロードを使用する。ワークロードのデプロイについて詳しくは、GKE のドキュメントをご覧ください。