【发布时间】:2018-07-19 06:26:32
【问题描述】:
我目前正在尝试创建一个入口,遵循 ssl-termination 方法,它允许我通过 http 和 https 连接到服务。 我设法为http创建了一个工作入口,部分为https,但不是同时使用..
这是我的配置
入口控制器:部署和服务
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 .. 如果我在 url 之前手动放置 https在浏览器中,它再次工作,任何进一步的请求都通过 https。,但我不知道为什么:(
最后的设置(支持http和https)完全不行,好像我尝试通过Ingress的http-nodePort访问应用,总是重定向到ssl,但是在这种情况下,我配置为ssl-redirect到错误,但仍然无法正常工作。
- 我在 github 上阅读了很多帖子,正在处理这个问题,但没有一个对我有用
- 我已将 nginx 控制器映像从 gce_containers 更改为 quay.io,但也无法正常工作
- 我尝试了一些旧版本,但也无法正常工作。
【问题讨论】:
标签: ssl nginx https kubernetes