Моя установка такова: Azure AKS со шлюзом приложений в качестве входа. у меня есть deploy.yml
и service.yml
описываю мою службу, и у меня правильно настроен секрет tls.
Проблема в том, что я могу использовать портал Azure, чтобы вручную создать прослушиватель HTTPS с созданным мной секретом, и все работает нормально. Как я узнаю, что он работает правильно? Использую curl с протоколом https и получаю желаемый результат. Также я смотрю журнал модуля и вижу, что запрос поступает правильно.
тем не мение как только я обновлю развертывание (используя kubectl apply -f deploy.yml
) вся моя ручная работа сбрасывается, и слушатели воссоздаются с использованием HTTP, и мне нужно повторить всю работу: создать слушателя HTTPS, переместить правила в новый слушатель и т. д.
Это мое ingress.yml
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: "/"
appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- my.website.com
secretName: my-secret
rules:
- http:
paths:
- path: /api1/*
backend:
serviceName: my-first-svc
servicePort: 80
- path: /api2/*
backend:
serviceName: my-first-svc
servicePort: 8081
А это мой deploy.yml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-pod
image: myuser/my-app:v10
ports:
- containerPort: 80
- containerPort: 6666
env:
- name: ConnectionStrings__DefaultConnection
valueFrom:
secretKeyRef:
name: app-secrets
key: connection-string
livenessProbe:
httpGet:
path: /api/values
port: 80
initialDelaySeconds: 10
periodSeconds: 10
Что я делаю не так? Спасибо
ОБНОВИТЬ Нашел ответ, проблема в ingress.yml
файл, мне не хватало host
запись в первый spec.rules
объект:
spec:
tls:
- hosts:
- my.website.com
secretName: my-secret
rules:
- host: my.website.com # <----- THIS WAS MISSING!
http:
paths:
- path: /api1/*
backend:
Я публикую ответ OP для лучшей видимости:
ОБНОВИТЬ Нашел ответ, проблема в
ingress.yml
файл, мне не хваталоhost
запись в первыйspec.rules
объект:spec: tls: - hosts: - my.website.com secretName: my-secret rules: - host: my.website.com # <----- THIS WAS MISSING! http: paths: - path: /api1/* backend: