如何正确配置readinessProbe该做的HTTP到HTTPS重定向容器?

问题描述 投票:2回答:1

我们有一个使用下面的前端服务的GKE进入。入口终止TLS为好。我们希望有HTTP到HTTPS永久重定向为来自HTTP的任何流量。

通过下面的配置,我们所有的工作,以及HTTP和HTTPS(无重定向)服务的流量。

用于部署该容器可以被配置来重写HTTP到HTTPS与--https重定向标记。它也尊重和信任的X转发,原头,并会考虑在标头值设置为https它是安全的。

所以最合理的配置,我可以看到的readinessProbe将低于配置,但与注释行注释。但是,只要我们运用这个版本中,我们从来没有进入一个健康的状态,而是用入口配置的终止域中的502返回和永无翻身之日。

那么,什么是错误的下面的方法呢?我一直在使用端口转发两舱和服务测试,他们都返回301,如果我不提供X-转发 - 协议头,并返回200,如果我提供的X转发,原标题为https值。

apiVersion: v1
kind: Service
metadata:
  name: frontend-service
spec:
  type: NodePort
  ports:
    - port: 8080
  selector:
    app: frontend
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - image: eu.gcr.io/someproject/frontend:master
        imagePullPolicy: Always
        # args:
        # - '--https-redirect'
        name: frontend
        resources:
          limits:
            memory: 1Gi
            cpu: '0.5'
        ports:
        - containerPort: 8080
          name: frontend
        readinessProbe:
          httpGet:
            path: /_readinessProbe
            port: 8080
            # httpHeaders:
            # - name: X-Forwarded-Proto
            #   value: https
kubernetes google-kubernetes-engine kubernetes-ingress kubernetes-health-check
1个回答
2
投票

该GCP健康检查是它回来的HTTP响应代码非常挑剔。它必须是200,而不是重定向。如果在配置您发布时,NLB会从你的服务器301/302的响应。然后它会将您的后端为不健康的,因为这不是一个200响应。如果健康检查HTTP发送不带X - 转发,原头,这是可能的。

您可以通过检查部署的豆荚kubectl日志检查。

如果你移动到一个HTTPS健康检查,以试图解决这个问题我以前的答案可能是有用的。


GKE documentation:您将需要把一个注解你的服务定义,告诉GKE使用HTTPS进行健康检查。否则,它会试图发送HTTP和混淆。

kind: Service
metadata:
  name: my-service-3
  annotations:
    cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
  type: NodePort
  selector:
    app: metrics
    department: sales
  ports:
  - name: my-https-port
    port: 443
    targetPort: 8443
  - name: my-http-port
    port: 80
    targetPort: 50001

我没有使用最新的语法,但这个曾经为我工作。

然而,这是如此笨重使用我结束了去那边Istio并获得该做的所有HTTPS终止。这是不小的任务然而,但你想使用证书管理器的/我们的加密这可能是值得探讨的。

© www.soinside.com 2019 - 2024. All rights reserved.