Kubernetes SSL 重定向入口

kir*_*rie 6 amazon-web-services kubernetes nginx-ingress

我对 Kubernetes 非常陌生,我正在尝试弄清楚如何为我的 kubernetes 集群设置 http -> https 重定向。我已经搜索并尝试了许多不同的注释,但我不确定我是否正确应用了它们。我已将我的文件粘贴在下面,如果需要更多内容,我很乐意分享更多内容。

我尝试将这些行添加到注释部分

nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
Run Code Online (Sandbox Code Playgroud)

我也尝试过实施这个解决方法,但没有成功。

重定向解决方法

我很感激你的帮助!

服务.yaml

kind: Service
apiVersion: v1
metadata:
  name: loadbalancer-ingress
  annotations:
    {{- if .Values.loadbalancer.cert }}
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.loadbalancer.cert | quote }}
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "{{- range .Values.loadbalancer.ports -}}{{- if .ssl -}}{{ .name }},{{- end -}}{{- end -}}"
    {{- end }}
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: {{ .Values.loadbalancer.backend_protocol | quote }}
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
spec:
  type: LoadBalancer
  selector: 
    pod: {{ .Chart.Name }}
  ports:
    {{- range .Values.loadbalancer.ports }}
    - name: {{ .name }}
      port: {{ .port }}
      targetPort: {{ .targetPort }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)

配置映射.yaml

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: {{ .Chart.Name }}-nginx-configuration
data:
  use-proxy-protocol: "false"
  use-forwarded-headers: "true"
  server-tokens: "false"

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: {{ .Chart.Name }}-tcp-services

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: {{ .Chart.Name }}-udp-services
Run Code Online (Sandbox Code Playgroud)

值.yaml

loadbalancer:
  backend_protocol: http
  cert: MY_AWS_CERT
  ports:
    - name: http
      port: 80
      targetPort: 80
      ssl: false
    - name: https
      port: 443
      targetPort: 80
      ssl: true
Run Code Online (Sandbox Code Playgroud)

Arg*_*dhu 3

您需要在这些 pod 前面有 pod 和 clusterIP 服务,然后在入口资源中您可以引用该服务。因此,诸如 nginx 之类的入口控制器将接收来自 kubernetes 集群外部客户端的流量,并将该流量转发到服务后面的 pod。入口控制器本身需要通过 LoadBalancer 类型的服务暴露在集群外部。

此处的文档引用入口资源将如下所示

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)