无法为入口后面的入口设置安全连接 - 错误的网关
Trouble setting up secure connection for ingress behind ingress - bad gateway
我正在尝试建立与 kubernetes 集群的连接,但出现 502 bad gateway
错误。
集群有一个 nginx 入口和一个服务(同时监听 http 和 https)。此外,入口位于具有静态 IP 地址的 nginx 入口服务(我安装了 nginx helm chart)之后。
我可以在集群入口的描述中看到它知道服务的端点。
我看到 pods 相互通信成功(有 3 个 pods),但我无法从 shell.
内 ping 外部 nginx
这些是集群在 values.yaml
中的入口值:
ingress:
# If `true`, an Ingress is created
enabled: true
# The Service port targeted by the Ingress
servicePort: http
# Ingress annotations
annotations:
kubernetes.io/ingress.class: "nginx"
# Additional Ingress labels
labels: {}
# List of rules for the Ingress
rules:
-
# Ingress host
host: my-app.com
# Paths for the host
paths:
- /
# TLS configuration
tls:
- hosts:
- my-app.com
secretName: my-app-tls
当我转到 my-app.com
时,我在浏览器中看到我处于安全连接(URL 旁边的锁定图标),但就像我说的那样,我得到了一个 502 bad gateway
错误。如果我将 servicePort
从 http 替换为 https,我会收到“400 错误请求”错误。
我应该如何设置两个入口以允许安全连接到我的应用程序?
我尝试了各种注释,但总是出现上面的错误。
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
谢谢!
您共享的入口定义不包含入口定义及其值文件。
入口定义应如下所示
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "app.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "app.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: /
backend:
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
如果您的值已启用入口=true,则会执行此操作。
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
缺少的注释是 nginx.org/ssl-services
,它接受安全服务列表。
我正在尝试建立与 kubernetes 集群的连接,但出现 502 bad gateway
错误。
集群有一个 nginx 入口和一个服务(同时监听 http 和 https)。此外,入口位于具有静态 IP 地址的 nginx 入口服务(我安装了 nginx helm chart)之后。
我可以在集群入口的描述中看到它知道服务的端点。 我看到 pods 相互通信成功(有 3 个 pods),但我无法从 shell.
内 ping 外部 nginx这些是集群在 values.yaml
中的入口值:
ingress:
# If `true`, an Ingress is created
enabled: true
# The Service port targeted by the Ingress
servicePort: http
# Ingress annotations
annotations:
kubernetes.io/ingress.class: "nginx"
# Additional Ingress labels
labels: {}
# List of rules for the Ingress
rules:
-
# Ingress host
host: my-app.com
# Paths for the host
paths:
- /
# TLS configuration
tls:
- hosts:
- my-app.com
secretName: my-app-tls
当我转到 my-app.com
时,我在浏览器中看到我处于安全连接(URL 旁边的锁定图标),但就像我说的那样,我得到了一个 502 bad gateway
错误。如果我将 servicePort
从 http 替换为 https,我会收到“400 错误请求”错误。
我应该如何设置两个入口以允许安全连接到我的应用程序? 我尝试了各种注释,但总是出现上面的错误。
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
谢谢!
您共享的入口定义不包含入口定义及其值文件。
入口定义应如下所示
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "app.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "app.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: /
backend:
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
如果您的值已启用入口=true,则会执行此操作。
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
缺少的注释是 nginx.org/ssl-services
,它接受安全服务列表。