在Azure子域

时间:2017-06-28 20:42:00

标签: azure docker https kubernetes

作为一项实验,我尝试使用Azure容器服务和Kubernetes作为协调器在Azure上运行docker容器。我正在运行官方的nginx图像。以下是我要采取的步骤:

az group create --name test-group --location westus az acs create --orchestrator-type=kubernetes --resource-group=test-group --name=k8s-cluster --generate-ssh-keys

我使用Kompose从docker撰写文件创建了Kubernetes部署和服务文件。

部署文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: annotations: kompose.service.type: LoadBalancer creationTimestamp: null labels: io.kompose.service: test name: test spec: replicas: 1 strategy: {} template: metadata: creationTimestamp: null labels: io.kompose.service: test spec: containers: - image: nginx:latest name: test ports: - containerPort: 80 resources: {} restartPolicy: Always status: {}

服务文件 apiVersion: v1 kind: Service metadata: annotations: kompose.service.type: LoadBalancer creationTimestamp: null labels: io.kompose.service: test name: test spec: ports: - name: "80" port: 80 targetPort: 80 selector: io.kompose.service: test type: LoadBalancer status: loadBalancer: {}

然后我可以开始一切:

kubectl create -f test-service.yaml,test-deployment.yaml

一旦暴露了IP,我就为它分配了一个dns前缀,这样我就可以像这样访问我正在运行的容器: http ://nginx-test.westus.cloudapp.azure.com/。

我的问题是,如何使用https访问服务?在http s ://nginx-test.westus.cloudapp.azure.com/

我不认为我应该为https配置nginx,因为证书不是我的。我尝试更改负载均衡器以将443流量发送到端口80,但是我收到超时错误。

我尝试将端口443映射到我的Kubernetes服务配置中的端口80。

ports: - name: "443" port: 443 targetPort: 80

但结果是:

SSL peer was not expecting a handshake message it received. Error code: SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT

如何在https://nginx-test.westus.cloudapp.azure.com/处查看正在运行的容器?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为您正在寻找Nginx Ingress controller 如果我们需要在Kubernetes上终止TLS,我们可以使用入口控制器,在Azure上我们可以使用Nginx Ingress controller
要存档,我们可以按照以下步骤进行存档:
1部署Nginx Ingress控制器
2创建TLS证书
3部署测试http服务
4配置TLS终止
有关在Azure上的Kubernetes上配置Nginx Ingress Controller以进行TLS终止的更多信息,请参阅此blog

root@k8s-master-6F403744-0:~/ingress/examples/deployment/nginx# kubectl get services --namespace kube-system -w
NAME                   CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
default-http-backend   10.0.113.185   <none>        80/TCP    42m
heapster   10.0.4.232   <none>    80/TCP    1h
kube-dns   10.0.0.10   <none>    53/UDP,53/TCP   1h
kubernetes-dashboard   10.0.237.125   <nodes>   80:32229/TCP   1h
nginx-ingress-ssl   10.0.92.57   40.71.37.243   443:30215/TCP   13m

enter image description here

enter image description here