gce-ingress HTTPS后端

时间:2018-05-10 10:47:08

标签: django kubernetes google-cloud-platform google-kubernetes-engine

我正在我的kubernetes集群上配置gce ingress并且我将Django应用程序指定为默认后端。该应用程序强制执行HTTPS,因此如果您尝试执行简单的HTTP请求,Django将返回301.显然,HTTP运行状况检查不会通过。我正在关注此example以启用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

2 个答案:

答案 0 :(得分:0)

要检查的事情:

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

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

答案 1 :(得分:0)

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

它必须是NodePort的值。

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

kubectl get services

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

12345:32605/TCP

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