Я управляю входным контроллером nginx в мини-кубе через штурвал и вижу, что в контроллере включена сквозная передача SSL, просматривая журналы модуля входного контроллера nginx.
helm upgrade ingress stable/nginx-ingress --install --namespace kube-system --set "controller.extraArgs.annotations-prefix=nginx.ingress.kubernetes.io" --set "controller.extraArgs.enable-ssl-passthrough=" --set controller.hostNetwork=true
Внутренне у меня есть служба HTTPS REST API, доступная через порт 19000. Мне нужен взаимный TLS между клиентом и службой, работающей внутри k8s, поэтому я пытаюсь настроить свой вход с включенной передачей SSL, но когда я устанавливаю nginx. ingress.kubernetes.io/ssl-passthrough аннотации к « true » на моем входе, серверная часть по-прежнему показывает sslPassthrough, установленный в false, и когда я отправляю запросы в службу, nginx удаляет Сертификат TLS из моих запросов.
Есть ли какая-то конфигурация, которой мне не хватает для включения сквозной передачи SSL на сервере?
$ kubectl ingress-nginx --deployment ingress-nginx-ingress-controller -n kube-system backends
[
{
"name": "default-tlsapi-service-19000",
"service": {
"metadata": {
"creationTimestamp": null
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 19000,
"targetPort": 19000,
"nodePort": 30000
}
],
"selector": {
"app": "tlsapi"
},
"clusterIP": "10.96.218.188",
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"port": 19000,
"sslPassthrough": false,
"endpoints": [
{
"address": "172.17.0.7",
"port": "19000"
}
],
"sessionAffinityConfig": {
"name": "",
"mode": "",
"cookieSessionAffinity": {
"name": ""
}
},
"upstreamHashByConfig": {
"upstream-hash-by-subset-size": 3
},
"noServer": false,
"trafficShapingPolicy": {
"weight": 0,
"header": "",
"headerValue": "",
"cookie": ""
}
}
ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tlsapi-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
rules:
- host: tlsapi.k8s
- http:
paths:
- path: /
backend:
serviceName: tlsapi-service
servicePort: 19000
service.yaml
apiVersion: v1
kind: Service
metadata:
name: tlsapi-service
spec:
type: NodePort
selector:
app: tlsapi
ports:
- port: 19000
targetPort: 19000
nodePort: 30000
deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tlsapi-deployment
spec:
selector:
matchLabels:
app: tlsapi
replicas: 1
template:
metadata:
name: tlsapi-pod
labels:
app: tlsapi
spec:
containers:
- name: tlsapi-container
image: tlsapi:latest
imagePullPolicy: IfNotPresent