このチュートリアルは、ウェブ アプリケーションを 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.yaml
Ingress が作成されたことを確認します。
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-cert
SSL 証明書のプロビジョニングには最長で 30 分ほどかかる場合があります。次の出力は、SSL 証明書の準備ができていることを示しています。
NAME AGE STATUS networking-managed-cert 28m Active
curl
コマンドを実行します。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