使用 DNS 设置 Rancher + Kubernetes 的最佳方法是什么

What is the best approach for setting up Rancher + Kubernetes with DNS

首先,我不是专家,请耐心等待。我设法在家里的 vcenter 中安装和设置了 Rancher(免费获得了裸机设置,有点旧,但仍然可以)。我有 3 个节点 运行ning 很好,我也可以用它在 vmware 中配置虚拟机。最重要的是,我还在 Rancher 中添加了 Kubernetes。现在,我的计划是部署应该自动获取外部端点(可从互联网访问)和 SSL 的服务。 我已经从 Namecheap mydomain.com 购买了它的通配符证书。 此外,在我的 vcenter 中,我有一个 nginx 服务器 运行ning,并且 namecheap dns 指向它,但我认为我应该 运行 它在 Kubernetes 中,只是我不想管理手动配置 nginx 文件。

最好的方法是什么?我不明白入口控制器是如何工作的或如何正确设置它们。我遵循了许多教程,但到目前为止没有成功。 我也玩过 Traefik,但没有成功。我总是在外部端点部分什么也得不到。

我不想一步步指导如何操作,但至少请有人为我指明正确的方向。 我也在考虑使用 Let'sEncrypt,但不确定这是否是个好主意,因为我已经拥有我的域和 ssl 证书。

谢谢!

您遇到困难的原因可能是因为在使用 BareMetal 时,您没有配置外部 LoadBalancer。当使用像 Traefik 这样的东西时,你需要在 NodePort 或其他东西上暴露入口控制器。

如果您使用的是裸机,则可以通过多种方式进入集群。

MetalLB is one such controller which will use layer2 or BGP configuration to advertise your Services 外部。使用 metallb,您将能够定义类型为 LoadBalancer 的服务,如下所示:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: LoadBalancer

这将在 metallb 中为您配置一个 LoadBalancer。此时,您可以开始使用 Ingress Controller,通过部署类似 traefik 的东西,定义一个服务,然后在 Ingress Controller 上使用 LoadBalancer 类型。

对于 TLS,您可以 cert-manager 自动为您提供证书,假设您的 DNS 解析为您使用的入口。

最后,你自动化DNS,考虑external-dns