【发布时间】: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