首页 文章

无法将SSL证书应用于Kubernetes上的Kubernetes LoadBalancing Service

提问于
浏览
1

问题

我无法将TLS应用于我的Kubernetes集群的LoadBalancer服务的DNS名称,我有点亏本 .

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

环境

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

我在Azure中创建了一个静态IP,用于yaml中的loadbalancer服务 . 此外,我使用以下命令为_创建了一个 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

服务

这是我的LoadBalancing服务的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 Service中删除端口443时,一切都在http上正常工作 .

1 回答

  • 1

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

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

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

相关问题