Назад | Перейти на главную страницу

Слушатели сбрасываются на HTTP после каждого развертывания

Моя установка такова: 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: