【问题标题】:Cannot apply SSL cert to Kubernetes LoadBalancing Service on Kubernetes无法将 SSL 证书应用于 Kubernetes 上的 Kubernetes 负载平衡服务
【发布时间】:2018-09-15 16:55:21
【问题描述】:

问题

我在将 TLS 应用到我的 Kubernetes 集群的 LoadBalancer 服务的 DNS 名称时遇到问题,我有点不知所措。

这是我第一次使用 Kubernetes 以及 Azure 的管理容器服务。由于我无法控制的原因,此 api 需要在 Azure 的托管容器服务上运行。

环境

集群正在使用托管容器服务(预览版)在 Azure 上运行。我按照这里的步骤创建了我的环境:https://docs.microsoft.com/en-us/azure/aks/tutorial-kubernetes-deploy-cluster

我在 Azure 中创建了一个静态 IP,以在 yaml 中用于负载均衡器服务。此外,我使用以下命令为 IP 创建了一个myprefix.cloudapp.azure.com DNS 名称 (https://docs.microsoft.com/en-us/azure/aks/static-ip)

IP="XX.XX.XX.XX"

DNSNAME="myprefix"

RESOURCEGROUP=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[resourceGroup]" --output tsv)

PIPNAME=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[name]" --output tsv)

az network public-ip update --resource-group $RESOURCEGROUP --name $PIPNAME --dns-name $DNSNAME

部署

这是我用于部署的 yaml:

apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-node-express-api-deployment spec: replicas: 2 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 minReadySeconds: 5 template: metadata: labels: app: my-node-express-api spec: containers: - name: my-node-express-api-container image: myrepo/my-node-express-api-image:latest ports: - containerPort: 3000 volumes: - name: tls secret: secretName: my-tls-secret

服务

这是我的负载平衡服务的 yaml

apiVersion: v1 kind: Service metadata: name: my-node-express-api-loadbalancer spec: loadBalancerIP: 52.176.148.91 type: LoadBalancer ports: - port: 80 targetPort: 3000 port: 443 targetPort: 3000 selector: app: my-node-express-api

秘密

用于秘密的 Yaml

apiVersion: v1 kind: Secret metadata: name: my-tls-secret namespace: default data: tls.crt: (base64 for myprefix.cloudapp.azure.com.crt) tls.key: (base64 for myprefix.cloudapp.azure.com.key)

注意:

当我从部署中删除 Secret 并从 LoadBalancer 服务中删除端口 443 时,一切都在 http 上正常工作。

【问题讨论】:

    标签: azure kubernetes azure-container-service kubernetes-ingress azure-aks


    【解决方案1】:

    在 Azure 上,如果您需要 Kubernetes 上的 TLS 终止,您可以使用 Nginx Ingress 控制器(现在,Microsoft 正在使用使用应用程序网关的 Azure 入口控制器)。

    要存档,我们可以按照以下步骤操作:
    1 部署 Nginx 入口控制器
    2 创建 TLS 证书
    3 部署测试http服务
    4 配置TLS终止

    有关在 Azure 上的 kubernetes 上配置 Nginx 入口控制器以终止 TLS 的更多信息,请参阅此blog

    【讨论】:

      猜你喜欢
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多