gce-ingress HTTPS серверная часть - PullRequest
0 голосов
/ 10 мая 2018

Я настраивал вход gce на своем кластере kubernetes и указал приложение Django в качестве бэкенда по умолчанию. Приложение применяет HTTPS, поэтому если вы попытаетесь выполнить простой HTTP-запрос, Django вернет 301. Очевидно, проверка работоспособности HTTP не пройдет. Я следовал этому примеру , чтобы включить проверку состояния HTTPS. После запуска проверки работоспособности я вручную отредактировал путь в вычислительном движке, но из журналов приложения Django кажется, что он не получал никаких запросов, поэтому это приводит к НЕЗДОРОВЬЮ, и я не могу заставить вход работать.

Как я могу проверить работоспособность в этом случае?

Конфигурация:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.global-static-ip-name: web-static-ip
spec:
  tls:
  - hosts:
    - foo.domain.it
    secretName: production-tls
  backend:
    serviceName: app
    servicePort: app-https

apiVersion: v1
kind: Service
metadata:
  name: app
  annotations:
    service.alpha.kubernetes.io/app-protocols: '{"app-https":"HTTPS"}'
  labels:
    component: app
    role: web
spec:
  type: NodePort
  ports:
  - port: 12345
    targetPort: 8000
    protocol: TCP
    name: app-https
  selector:
    component: app
    role: web
  type: LoadBalancer

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: app
  labels:
    component: app
    role: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        component: app
        role: web
    spec:
      containers:
        - name: app
          image: [my-image]
          imagePullPolicy: Always
          ports:
          - containerPort: 8000
          envFrom:
          - configMapRef:
              name: app-config

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Когда вы нажимаете на проверку вашего состояния (Сетевые службы> Балансировщик нагрузки> щелкните на имени вашего проверки состояния), что отображается в поле «порт»?

Это должно быть значение NodePort.

Когда вы запускаете следующее, каково значение NodePort для службы 'app-https'?

kubectl get services

Он должен сгенерировать вывод, содержащий что-то вроде этого:

12345:32605/TCP

В этом примере 32605 будет NodePort, и это значение должно быть в разделе «port» проверки работоспособности.

0 голосов
/ 22 августа 2018

В качестве обходного пути я отключил DJANGO_SECURE_SSL_REDIRECT и заставил вход принимать только HTTPS-запрос в случае входа GCE. kubernetes.io/ingress.allow-http: "false"

Если вы используете NGINX в качестве входа, просто установите nginx.ingress.kubernetes.io/ssl-redirect: "True"

0 голосов
/ 10 мая 2018

Несколько вещей для проверки:

1) Действительно ли приложение Django прослушивает HTTPS на порту 8000 (вы не указали секрет сертификата TLS для самого приложения)?

2) Вы не указали проверку готовности приложения (которая также используется для проверки работоспособности GB HTTP LB), см. Пример, который вы опубликовали для настройки проверки работоспособности HTTPS: https://github.com/kubernetes/ingress-gce/blob/master/examples/backside-https/app.yaml

...