github からnginxイングレスコントローラーチュートリアルを行い、kubernetesダッシュボードを公開しました
kubernetes-dashboard NodePort 10.233.53.77 <none> 443:31925/TCP 20d
作成されたイングレス
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.org/ssl-backends: "kubernetes-dashboard"
kubernetes.io/ingress.allow-http: "false"
name: dashboard-ingress
namespace: kube-system
spec:
tls:
- hosts:
- serverdnsname
secretName: kubernetes-dashboard-certs
rules:
- Host: serverdnsname
http:
paths:
- path: /dashboard
backend:
serviceName: kubernetes-dashboard
servicePort: 443
ingress-nginx ingress-nginx NodePort 10.233.21.200 <none> 80:30827/TCP,443:32536/TCP 5h
https:// serverdnsname:32536/dashboard しかし、ダッシュボードはエラーをスローします
2018/01/18 14:42:51 http: TLS handshake error from ipWhichEndsWith.77:52686: tls: first record does not look like a TLS handshake
およびイングレスコントローラーログ
2018/01/18 14:42:51 [error] 864#864: *37 upstream sent no valid HTTP/1.0 header while reading response header from upstream, client: 10.233.82.1, server: serverdnsname, request: "GET /dashboard HTTP/2.0", upstream: "http://ipWhichEndsWith.249:8443/dashboard", Host: "serverdnsname:32536"
10.233.82.1 - [10.233.82.1] - - [18/Jan/2018:14:42:51 +0000] "GET /dashboard HTTP/2.0" 009 7 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 OPR/49.0.2725.64" 25 0.001 [kube-system-kubernetes-dashboard-443] ipWhichEndsWith.249:8443 7 0.001 200
私の考えでは、それは上流へのnginxリダイレクトに関連しています: " http://ipWhichEndsWith.249:8443/dashboard "コントローライメージバージョンを0.9.0-beta.19に更新しようとしました-助けにはなりませんでした
助けてくれてありがとう。
指摘したように、nginxはhttps要求をipWhichEndsWith.249:8443
、これはHTTPSエンドポイントであり、http
をプロトコルとして使用します。
次の注釈をPodSpecに追加する必要があります。
[〜#〜] latest [〜#〜]
このアノテーションは、0.18.0以降廃止されたアノテーションを置き換えるために追加されました
#2871 AJPプロトコルのサポートを追加
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
[〜#〜]非推奨[〜#〜]
このアノテーションは0.18.0で廃止され、0.20.0のリリース後に削除されました
#32 アノテーションgrpc-backendとsecure-backendは既に廃止されています
nginx.ingress.kubernetes.io/secure-backends: "true"
これにより、nginxはhttpsでリクエストをポッドに転送します。
コード参照用です。 2つのgtochaがあります。ダッシュボードがhttpsと通信し、イングレスに正しいネームスペースを使用するため、適切な注釈を設定します。 tls configはオプションです。
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dashboard-google
namespace: kube-system
annotations:
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
tls:
- hosts:
- kube.mydomain.com
secretName: tls-secret
rules:
- Host: kube.mydomain.com
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard
servicePort: 443
こちらのヘルムチャートを使用することもできます
https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard
次に、values.yaml
ファイルを有効にするなどのingress
パーツをオーバーライドするために、ホストを追加することができます。