gpt4 book ai didi

ssl - 为 nginx-ingress 配置 http(s) 时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:49 29 4
gpt4 key购买 nike

我目前正在尝试按照 ssl 终止方法创建一个入口,它允许我通过 http 和 https 连接到服务。我设法为 http 创建了一个工作入口,部分为 https,但不是两者都在一起..

这是我的配置

入口 Controller :部署和服务

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-ingress-controller
spec:
replicas: 1
revisionHistoryLimit: 3
template:
metadata:
labels:
k8s-app: nginx-ingress-lb
spec:
containers:
- args:
- /nginx-ingress-controller
- "--default-backend-service=$(POD_NAMESPACE)/default-http-backend"
env:
<!-- default-config ommitted -->
image: "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0-beta.17"
imagePullPolicy: Always
livenessProbe:
<!-- omitted -->
name: nginx-ingress-controller
ports:
- containerPort: 80
name: http
protocol: TCP
- containerPort: 443
name: https
protocol: TCP
volumeMounts:
- mountPath: /etc/nginx-ssl/tls
name: tls-vol
terminationGracePeriodSeconds: 60
volumes:
- name: tls-vol
secret:
secretName: tls-test-project-secret
---
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: http
nodePort: 31115
- name: https
port: 443
targetPort: https
nodePort: 31116
selector:
k8s-app: nginx-ingress-lb

入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/secure-backends: "false"

# modified this to false for http & https-scenario
ingress.kubernetes.io/ssl-redirect: "true"

# modified this to false for http & https-scenario
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/add-base-url: "true"
spec:
tls:
- hosts:
- author.k8s-test
secretName: tls-test-project-secret
rules:
- host: author.k8s-test
http:
paths:
- path: /
backend:
serviceName: cms-author
servicePort: 8080

后端 - 服务

apiVersion: v1
kind: Service
metadata:
name: cms-author
spec:
selector:
run: cms-author
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080

后端部署:

 apiVersion: apps/v1
kind: Deployment
metadata:
name: cms-author
spec:
selector:
matchLabels:
run: cms-author
replicas: 1
template:
metadata:
labels:
run: cms-author
spec:
containers:
- name: cms-author
image: <someDockerRegistryUrl>/magnolia:kube-dev
imagePullPolicy: Always
ports:
- containerPort: 8080

我有几个问题,在仅使用 https 的情况下,我可以通过入口 https nodePort 访问应用程序,但无法登录,因为后续请求是通过 http 而不是 https 进行的。如果我手动将 https 放在 url 之前在浏览器中,它再次工作,任何进一步的请求都通过 https 进行。但我不知道为什么 :(

最后的设置(支持http和https)完全不行,好像我尝试通过Ingress的http-nodePort访问app,总是重定向到ssl,但是在这个场景中,我配置了ssl-redirect到错误,但仍然无法正常工作。

  • 我在 github 上阅读了很多关于处理这个问题的帖子,但没有一个对我有用
  • 我已将 nginx-controller 镜像从 gce_containers 更改为 quay.io,但仍然无法正常工作
  • 我试过一些旧版本,也没有用。

最佳答案

从官方 kubernetes 图表存储库部署 nginx 入口 Controller https://github.com/kubernetes/charts/tree/master/stable/nginx-ingress通过设置 helm 参数 controller.service.targetPorts.httpscontroller.service.nodePorts.https。设置完成后,适当的 NodePort (443) 将由 helm 配置。

Helm 使用 https://github.com/kubernetes/charts/tree/master/stable/nginx-ingress/templates 中的 YAML 文件.

除了 nginx 入口 Controller ,您还需要一个入口资源。引用https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example例如。

关于ssl - 为 nginx-ingress 配置 http(s) 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689644/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com