在 Azure Kubernetes 上为内部 IP 配置 HTTPS

Configuring HTTPS for an internal IP on Azure Kubernetes

我已经使用 acs-engine 将 Kubernetes 集群部署到 Azure 上的自定义虚拟网络。代理 VM 上有一个 ASP.NET Core 2.0 Kestrel 应用程序 运行,该应用程序通过 Azure 内部负载均衡器类型的服务通过 VPN 访问。现在我想在服务上启用 HTTPS。我已经获得了域名和证书,但不知道如何进行。显然,将 Kestrel 配置为使用 HTTPS 并将证书复制到每个容器并不是可行的方法。

我已经查看了诸如 ingress on k8s using acs and configure Nginx Ingress Controller for TLS termination on k8s on Azure 之类的教程,但它们最终都暴露了一个 public 外部 IP,我想将 IP 保留在内部并且无法从 Internet 访问。这可能吗?没有入口及其控制器可以完成吗?

您 link 编辑的教程有点过时了,至少说明让您转到 GitHub 存储库中的 'examples' 文件夹,他们 link 但是不存在。无论如何,一个普通的 nginx 入口控制器由几个部分组成:nginx 部署、公开它的服务和默认支持的部分。您需要查看他们要求您部署的 yaml,查找我列出的第二部分 - 入口服务 - 并将类型从 LoadBalancer 更改为 ClusterIP(或完全删除类型,因为 ClusterIP 是默认值)

虽然出于某种原因我仍然无法通过入口访问该应用程序,但我能够通过以下配置使用我想要的 IP 创建一个内部入口服务:

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"
  name: nginx-ingress-svc
spec:
  type: LoadBalancer
  ports:
  - port: 443
    targetPort: 443
  loadBalancerIP: 130.10.1.9
  selector:
    k8s-app: nginx-ingress-controller