我已经设法将.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
答案 0 :(得分:1)
据我了解,您将需要NGINX入口控制器之类的东西来处理SSL终止,并且还需要管理证书。 Kubernetes cert-manager是一个很好的软件包,可以帮助您获得证书。
这是有关如何在AKS集群中同时执行这两项操作的文章:
答案 1 :(得分:0)
如果我没有误会,您想通过简单的步骤通过https访问您的服务。是的,如果您没有特别严格的安全要求(例如SSL证书),则可以将端口公开给负载均衡器并从Internet访问服务,这很容易配置。
您发布的yaml文件看起来还不错。您可以从Kubernetes仪表板和Azure门户进行检查,并查看以下屏幕截图:
您还可以使用命令kubectl get svc
进行检查,屏幕截图将如下所示:
但是,如果您对安全性有特别严格的要求,则需要像本case中的答案那样的nginx入口控制器。实际上,https是一种网络安全协议,您确实需要配置nginx入口控制器。