【问题标题】:What is the quickest way to expose a LoadBalancer service over HTTPS?通过 HTTPS 公开 LoadBalancer 服务的最快方法是什么?
【发布时间】:2021-11-20 21:43:24
【问题描述】:

我在 GKE 上的单个 pod 中运行了一个简单的 Web 服务器。我还使用负载平衡器服务公开了它。让这个 pod 可以通过 HTTPS 访问的最简单方法是什么?

gcloud container clusters list
NAME              LOCATION       MASTER_VERSION    MASTER_IP     MACHINE_TYPE  NODE_VERSION      NUM_NODES  STATUS
personal.....  us-central1-a  1.19.14-gke.1900  34.69.....  e2-medium     1.19.14-gke.1900  1          RUNNING
kubectl get service
NAME           TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)        AGE
kubernetes     ClusterIP      10.....    <none>           443/TCP        437d
my-service     LoadBalancer   10.....    34.71......      80:30066/TCP   12d

kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
nodeweb-server-9pmxc       1/1     Running   0          2d15h

编辑:如果使用它而不是 https://34.71....

更容易使用,我也注册了一个域名

【问题讨论】:

    标签: ssl kubernetes https google-kubernetes-engine


    【解决方案1】:

    首先,您的集群应该有配置连接器installed 并且可以正常运行。

    首先删除您现有的负载平衡器服务kubectl delete service my-service

    创建一个静态 IP。

    apiVersion: compute.cnrm.cloud.google.com/v1beta1
    kind: ComputeAddress
    metadata:
      name: <name your IP>
    spec:
      location: global
    

    检索创建的IPkubectl get computeaddress &lt;the named IP&gt; -o jsonpath='{.spec.address}'

    创建一个 DNS“A”记录,将您的注册域与创建的 IP 地址映射。检查nslookup &lt;your registered domain name&gt; 以确保返回正确的 IP。

    通过在type: LoadBalancer 之后插入以下行来更新您的负载平衡器服务规范:loadBalancerIP: "&lt;the created IP address&gt;"

    重新创建服务并检查kubectl get service my-service 是否正确设置了EXTERNAL-IP。

    创建ManagedCertificate

    apiVersion: networking.gke.io/v1
    kind: ManagedCertificate
    metadata:
      name: <name your cert>
    spec:
      domains:
      - <your registered domain name>
    

    然后创建 Ingress。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: <name your ingress>
      annotations:
        networking.gke.io/managed-certificates: <the named certificate>
    spec:
      rules:
      - host: <your registered domain name>
        http:
          paths:
          - pathType: ImplementationSpecific
            backend:
              service:
                name: my-service
                port:
                  number: 80
    

    检查kubectl describe ingress &lt;named ingress&gt;,查看规则和注释部分。

    注意:负载平衡器最多可能需要 15 分钟才能完全准备好。使用curl https://&lt;your registered domain name&gt; 进行测试。

    【讨论】:

      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      相关资源
      最近更新 更多