Azure Kubernetes托管服务上的外部https

时间:2018-08-12 07:02:09

标签: azure kubernetes

我已经设法将.netcore api部署到天蓝色的kubernetes托管服务(ACS),并且按预期工作。该图像托管在一个天蓝色的容器注册表中。

我现在正在尝试通过https访问该服务。我想要一个非常简单的设置。

  • 首先,我必须创建一个openssl证书还是向letencrypt注册?理想情况下,我希望避免不必单独管理ssl证书,但是从文档来看,尚不清楚是否需要这样做。

  • 其次,我在下面有一个清单文件。我仍然可以使用此清单访问端口80。但是,我无法访问端口443。我看不到任何错误,因此不清楚问题出在哪里。有什么想法吗?

谢谢

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: someappservice-deployment
  annotations:
    service.beta.kubernetes.io/openstack-internal-load-balancer: "false"
    loadbalancer.openstack.org/floating-network-id: "9be23551-38e2-4d27-b5ea-ea2ea1321bd6"
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: someappservices
    spec:
      containers:
      - name: someappservices
        image: myimage.azurecr.io/someappservices
        ports:
        - containerPort: 80
        - containerPort: 443
---
kind: Service
apiVersion: v1
metadata:
  name: external-http-someappservice
spec:
  selector:
    app: someappservices
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP        
    targetPort: 443

2 个答案:

答案 0 :(得分:1)

据我了解,您将需要NGINX入口控制器之类的东西来处理SSL终止,并且还需要管理证书。 Kubernetes cert-manager是一个很好的软件包,可以帮助您获得证书。

这是有关如何在AKS集群中同时执行这两项操作的文章:

Deploy an HTTPS enabled ingress controller on AKS

答案 1 :(得分:0)

如果我没有误会,您想通过简单的步骤通过https访问您的服务。是的,如果您没有特别严格的安全要求(例如SSL证书),则可以将端口公开给负载均衡器并从Internet访问服务,这很容易配置。

您发布的yaml文件看起来还不错。您可以从Kubernetes仪表板和Azure门户进行检查,并查看以下屏幕截图:

enter image description here enter image description here

您还可以使用命令kubectl get svc进行检查,屏幕截图将如下所示: enter image description here

但是,如果您对安全性有特别严格的要求,则需要像本case中的答案那样的nginx入口控制器。实际上,https是一种网络安全协议,您确实需要配置nginx入口控制器。