首页 文章

gce-ingress HTTPS后端

提问于
浏览
1

我正在我的kubernetes集群上配置gce ingress并且我将Django应用程序指定为默认后端 . 该应用程序强制执行HTTPS,因此如果您尝试执行简单的HTTP请求,Django将返回301.显然,HTTP运行状况检查不会通过 . 我正在关注此example以启用HTTPS运行状况检查 . 一旦生成 Health 检查,我手动编辑了计算引擎中的路径,但是从Django应用程序日志中看来它似乎没有让入口工作 .

在这种情况下,如何使 Health 检查工作?

组态:

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

    要检查的事情:

    1)Django应用程序是否实际上在端口8000上侦听HTTPS(您还没有为应用程序本身指定TLS证书机密)?

    2)您尚未为应用程序指定就绪探测器(也用于GCE HTTP LB运行状况检查),请参阅您为配置HTTPS运行状况检查而发布的示例:https://github.com/kubernetes/ingress-gce/blob/master/examples/backside-https/app.yaml

  • 0

    当您单击运行状况检查(网络服务>负载均衡器>单击您的运行状况检查名称)时,它在“端口”下显示了什么?

    它必须是NodePort的值 .

    当您运行以下内容时,服务'app-https'的NodePort值是多少?

    kubectl get services
    

    它应该生成一个包含这样的输出:

    12345:32605/TCP
    

    在此示例中,32605将是NodePort,这是应该在运行状况检查的“端口”部分中的值 .

  • 0

    作为一种解决方法,我禁用了 DJANGO_SECURE_SSL_REDIRECT 并强制入口在GCE入口的情况下仅接受HTTPS请求 . kubernetes.io/ingress.allow-http: "false"

    如果你使用NGINX作为入口只需设置 nginx.ingress.kubernetes.io/ssl-redirect: "True"

相关问题