次の K8s リソース (デプロイ/ポッド、サービス、イングレス) がある場合https://staging-micro.local/
、ブラウザーでアクセスすると、リクエストがエコー バックされることを期待しています。代わりに得られるのは502 Bad Gateway
.
# describe deployment (trunc. to show only containers)
Containers:
cloudsql-proxy:
Image: gcr.io/cloudsql-docker/gce-proxy:1.11
Port: <none>
Host Port: <none>
Command:
/cloud_sql_proxy
-instances=myproject:us-central1:project-staging=tcp:5432
-credential_file=/secrets/cloudsql/credentials.json
Environment: <none>
Mounts:
/secrets/cloudsql from cloudsql-instance-credentials-volume (ro)
adv-api-django:
Image: gcr.io/google_containers/echoserver:1.9
Port: 8000/TCP
Host Port: 0/TCP
Environment:
# describe service
Name: staging-adv-api-service
Namespace: staging
Labels: app=adv-api
platformRole=api
tier=backend
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"adv-api","platformRole":"api","tie...
Selector: app=adv-api-backend,platformRole=api,tier=backend
Type: LoadBalancer
IP: 10.103.67.61
Port: http 80/TCP
TargetPort: 8000/TCP
NodePort: http 32689/TCP
Endpoints: 172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
# describe ingress
Name: staging-api-ingress
Namespace: staging
Address: 10.0.2.15
Default backend: default-http-backend:80 (172.17.0.12:8080)
Rules:
Host Path Backends
---- ---- --------
staging-micro.local
/ staging-adv-api-service:http (172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000)
ホスト マシン (minikube を実行) にエントリ192.168.99.100 staging-micro.local
があり、それが正しいことに注意してください。サービスを削除すると、ヒットするとデフォルトのバックエンドの応答が返されます。/etc/hosts
minikube ip
staging-micro.local/
404 Not Found
私の予想では、Ingress は、ポート 80 でリッスンしているサービスへのホスト名staging-micro.local
とパスをマップし/
ます。次に、サービスは、ポート 8000 で選択された 3 つのコンテナーの 1 つに要求を転送します。echoserver コンテナーは、ポート 8000 でリッスンします。 Request を本文として HTTP Response を返します。もちろん、これは実際に起こることではありません。
最後に、cloudsql-proxy
コンテナー: これは現時点では関係ありませんが、サイドカー コンテナーが存在する場合にサービスが機能することを検証したかったので含めます。echoserver
次に、メインのアプリケーション コンテナーを交換します。echoserver
私は削除してテストしましたが、同じ結果が得られました。
ログは、echoserver
がエラーなしで起動していることを示しています。
より包括的なドキュメントを見つけることができなかったechoserver
ので、リッスンしているポートについて 100% ではありません。