Если вы хотите использовать механизмы балансировки нагрузки в k8s, вы должны вместо этого использовать services и запускать несколько экземпляров позади этой службы таким образом, чтобы k8s выполнял балансировку нагрузки.Если вы хотите использовать разные версии своего бэкэнда (например, prod и test), вы можете разделить их хорошо
, если ваша служба доступна только через https, вам нужно добавить следующую аннотацию к входному yaml: ( документация )
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
Чтобы обезопасить сам вход, взгляните на это: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
Но если вы хотите, чтобы вспомогательные службы расшифровали связь TLS, используйтевместо этого следующая аннотация: ( документация )
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
Редактировать:
Входной YAML должен выглядеть следующим образом, если вы хотите достичь бэкэндачерез TLS:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
Входной YAML должен выглядеть следующим образом, если вы хотите получить доступ к бэкенду через TLS с расшифровкой TLS во входном контроллере:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- app.myorg.com
secretName: tls-secret
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
Важно отметить, чтоtls-secret - это имя SecretConfig с действительным сертификатом, выданным для хоста (app.myorg.com)
Ingress YAML должен выглядеть следующим образом, если вы хотите достичь бэкэнда через TLS с расшифровкой TLS в бэкэнде:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
Я никогда не тестировал последнюю версию, поэтому не знаю, работает ли она на самом деле, но я настоятельно рекомендую прочитать этот отрывок дляэтот вариант.