このチュートリアルは、ウェブ アプリケーションを Google Kubernetes Engine(GKE)クラスタにデプロイし、HTTPS ロードバランサで公開することに関心があるクラウド アーキテクトと運用管理者を対象としています。
GKE クラスタを作成する
次の Terraform ファイルによって GKE クラスタが作成されます。
次の Terraform ファイルによってグローバル IP アドレスと Cloud DNS ゾーンが作成されます。
Terraform を初期化します。
terraform initインフラストラクチャの変更を表示します。
terraform planプロンプトが表示されたら、ドメインを入力します(
my-domain.netなど)。Terraform 構成を適用します。
terraform apply --auto-approveプロンプトが表示されたら、ドメインを入力します(
my-domain.netなど)。出力は次のようになります。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
外部アプリケーション ロードバランサを作成する
次のマニフェストには、ManagedCertificate、FrontendConfig、Deployment、Service、Ingress が記述されています。
DOMAIN_NAMEはmy-domain.netなどのドメイン名に置き換えます。このマニフェストには次のプロパティがあります。
networking.gke.io/managed-certificates: ManagedCertificate の名前。networking.gke.io/v1beta1.FrontendConfig: FrontendConfig リソースの名前。kubernetes.io/ingress.global-static-ip-name: IP アドレスの名前。kubernetes.io/ingress.class: 外部アプリケーション ロードバランサを作成するように GKE Ingress コントローラに指示します。
マニフェストをクラスタに適用します。
kubectl apply -f kubernetes-manifests.yamlIngress が作成されたことを確認します。
kubectl describe ingress frontend出力は次のようになります。
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...Ingress のプロビジョニングには数分かかる場合があります。
アプリケーションをテストする
SSL 証明書のステータスを確認します。
kubectl get managedcertificates.networking.gke.io networking-managed-certSSL 証明書のプロビジョニングには最長で 30 分ほどかかる場合があります。次の出力は、SSL 証明書の準備ができていることを示しています。
NAME AGE STATUS networking-managed-cert 28m Activecurlコマンドを実行します。curl -Lv https://DOMAIN_NAME出力は次のようになります。
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME