如何使用控制台为Google Kubernetes Engine启用HTTPS

时间:2019-06-12 10:50:33

标签: kubernetes google-cloud-platform load-balancing google-kubernetes-engine

我已经阅读了很多有关GCP的SO帖子,文章和文档,但是我仍然感到困惑,主要是因为我不是devOps的人。我想象使用GCP的控制台,我可以单击一些东西,上传一些证书和中提琴!,我的API在HTTPS上运行。

This post made me understand a little more about Ingress,但我还读了一些文章,指出使用ClusterIP不利于安全。因此,我希望在不添加终端的情况下,在添加HTTPS支持的同时继续使用Load Balancer类型。有可能吗?

编辑1:

我偶然发现了GCP的负载平衡产品,并开始对其进行研究。据我所知,从概念上讲这是完美的,但我还不能完全正常工作。我的步骤是:

  • 创建负载均衡器
  • 为该LB创建指向GKE运行所在的Compute Engine VM的后端服务
  • 创建为我提供静态IP地址的前端服务
  • 在我的DNS提供商上为该IP地址设置A记录

但是尝试在浏览器上访问我的域名时,仍然出现错误The server encountered a temporary error and could not complete your request,这告诉我负载均衡器可能在某种程度上起作用了,但它已连接到GKE中的docker应用程序节点。

有人知道如何将带有HTTPS的负载平衡产品连接到GKE吗?还是我最初的问题,如何使用HTTPS完全获取GKE?

编辑2: 我最终在文档中找到设置Ingress here的特定步骤(步骤2b)。设置工作正常,但是现在我在运行不正常的后端服务时遇到了麻烦。

编辑3 关于UNHEALTHY后端服务的许多讨论。我试图将livenessprobereadinessprobe添加到部署yaml文件中,如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "4"
  creationTimestamp: 2019-06-13T00:46:01Z
  generation: 4
  labels:
    app: video-api-alpha
  name: video-api-alpha
  namespace: video-api
  resourceVersion: "926307"
  selfLink: /apis/extensions/v1beta1/namespaces/video-api/deployments/video-api-alpha
  uid: 9dd774ae-8d74-11e9-aec9-42010af0024b
spec:
  progressDeadlineSeconds: 2147483647
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: video-api-alpha
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: video-api-alpha
    spec:
      containers:
      - image: gcr.io/mc-service-video/service-video:alpha
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthcheck
            port: 8080
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        name: service-video-sha256
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthcheck
            port: 8080
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 3
  conditions:
  - lastTransitionTime: 2019-06-13T00:46:03Z
    lastUpdateTime: 2019-06-13T00:46:03Z
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  observedGeneration: 4
  readyReplicas: 3
  replicas: 3
  updatedReplicas: 3

但是仍然没有运气。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果要公开GKE上托管的HTTP(S)服务,建议使用HTTP(S)负载平衡进行负载平衡。

https://cloud.google.com/load-balancing/docs/https/