私はここでチュートリアルに従っています: https://medium.com/@nithinmallya4/deploying-a-Rails-application-to-google-container-engine-with-kubernetes-b08b2de353fc
彼らのコードベースで: https://github.com/nmallya/gkedemoapp
このデプロイがどのようにまとめられているかは、「初回デプロイ」のコメントの間に表示されています。 https://github.com/nmallya/gkedemoapp/blob/master/gcloud_deployment.sh
SSL証明書を作成しました。Webサービスは稼働しており、正常ですが、説明したように入力を作成できません。 Ingressのステータスは「すべてのバックエンドサービスがUNHEALTHY状態です」です。
イングレスのYAMLは次のとおりです。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gke-ingress
annotations:
kubernetes.io/ingress.class: "gce"
# kubernetes.io/ingress.allow-http: "false"
# ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
# This assumes tls-secret exists.
- secretName: gkecert
backend:
serviceName: web
servicePort: 443
さらに情報を提供する必要があると思いますが、次に何をどこでトラブルシューティングするかわかりません。
私のサービスは健全な状態ではなかったことがわかりました。 「READY」であっても、ルートパス(/)で200で応答しているという意味ではありません。 kubectl get pods
を使用してポッドを一覧表示し、ログを検査しました。
NAME READY STATUS RESTARTS AGE
cable-76bfb45bb-rkz8f 2/2 Running 0 24m
Rails-67d569746d-54hs8 2/2 Running 0 24m
elasticsearch-0 1/1 Running 0 16m
redis-master-945b795f6-ldg5x 1/1 Running 0 14h
sidekiq-597c876bc4-zg24k 2/2 Running 0 24m
次に、kubectl logs Rails-67d569746d-54hs8 Rails
を使用して特定のログを検査できます。2番目のRails
は、ポッド内のコンテナーの名前です。ヘルスチェックのログが表示され、何が問題かを示しているはずです。
サーバーの起動のみが表示され、ヘルスチェックログが表示されない場合は、ポッドに到達できない可能性があります。サービスとそれらのポートを確認してください。それらが到達可能であり、ルートパスで200で(リダイレクトではなく)応答している限り、ヘルスチェックはパスし、イングレスは接続を許可する必要があります。