在本部分中,您将了解如何使用 Helm CLI 在 Kubernetes 集群上部署 Rancher。
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877
先决条件
- Kubernetes集群
- 入口控制器
- CLI工具
Kubernetes集群
设置 Rancher 服务器的本地 Kubernetes 集群。
Rancher 可以安装在任何 Kubernetes 集群上。该集群可以使用上游 Kubernetes,也可以使用 Rancher 的 Kubernetes 发行版之一,也可以是来自 Amazon EKS 等提供商的托管 Kubernetes 集群。
为了帮助设置 Kubernetes 集群,我们提供了以下教程:
- RKE:有关安装 RKE Kubernetes 集群的教程。
- K3S:有关安装 K3s Kubernetes 集群的教程。
- RKE2:有关安装 RKE2 Kubernetes 集群的教程。
- Amazon EKS:有关如何在 Amazon EKS 上安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便可以访问 Rancher 服务器。
- AKS:有关如何使用 Azure Kubernetes 服务安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便可以访问 Rancher 服务器。
- GKE:有关如何使用 Google Kubernetes Engine 安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便可以访问 Rancher 服务器。GKE 在创建 Kubernetes 集群时有两种操作模式:Autopilot 和 Standard 模式。Autopilot 模式的集群配置对编辑 kube-system 命名空间有限制。然而,Rancher 在安装过程中需要在 kube-system 命名空间中创建资源。因此,您将无法在 Autopilot 模式下创建的 GKE 集群上安装 Rancher。
入口控制器
Rancher UI 和 API 通过 Ingress 公开。这意味着您安装 Rancher 的 Kubernetes 集群必须包含 Ingress 控制器。
对于 RKE、RKE2 和 K3s 安装,您无需手动安装 Ingress 控制器,因为默认情况下会安装 Ingress 控制器。
对于默认情况下不包含 Ingress Controller 的发行版(例如 EKS、GKE 或 AKS 等托管 Kubernetes 集群),您必须首先部署 Ingress 控制器。请注意,默认情况下,Rancher Helm 图表不会ingressClassName在入口上设置。因此,您必须将 Ingress 控制器配置为在没有ingressClassName.
上面的Amazon EKS、AKS和GKE教程中包含示例。
CLI工具
设置 Kubernetes 集群需要以下 CLI 工具。请确保这些工具已安装并在您的$PATH.
- kubectl - Kubernetes 命令行工具。
- helm - Kubernetes 的包管理。请参考Helm 版本要求选择 Helm 版本来安装 Rancher。请参阅Helm 项目为您的特定平台提供的说明。
安装 Rancher Helm Chart
Rancher 是使用Kubernetes 的Helm包管理器安装的。Helm 图表为 Kubernetes YAML 清单文档提供模板语法。使用 Helm,我们可以创建可配置的部署,而不仅仅是使用静态文件。
设置 Rancher,
- 添加 Helm Chart 存储库
- 为Rancher创建命名空间
- 选择您的 SSL 配置
- 安装 cert-manager(除非您携带自己的证书,否则 TLS 将在负载均衡器上终止)
- 使用 Helm 和您选择的证书选项安装 Rancher
- 验证Rancher服务器是否部署成功
- 保存您的选择
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877
1. 添加Helm Chart存储库
使用helm repo add命令添加包含要安装 Rancher 的图表的 Helm 图表存储库。有关存储库选择以及最适合您的用例的更多信息,请参阅选择 Rancher 版本。
- 最新:推荐尝试最新功能
- helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
- 稳定:推荐用于生产环境
- helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
- Alpha:即将发布的版本的实验预览。
- helm repo add rancher-alpha https://releases.rancher.com/server-charts/alpha
- 注意:不支持在 Alpha 之间进行升级、从 Alpha 升级。
2. 为Rancher创建命名空间
我们需要定义一个 Kubernetes 命名空间,其中应安装 Chart 创建的资源。这应该始终是cattle-system:
kubectl create namespace cattle-system
3. 选择您的 SSL配置
Rancher管理服务器默认设计为安全的,并且需要SSL/TLS配置。
备注
如果您想要从外部终止 SSL/TLS,请参阅外部负载均衡器上的 TLS 终止。
对于 Rancher 服务器上用于 TLS 终止的证书来源,建议使用三个选项:
- Rancher 生成的 TLS 证书:在这种情况下,您需要安装cert-manager到集群中。Rancher 用于cert-manager颁发和维护其证书。Rancher 将生成自己的 CA 证书,并使用该 CA 签署证书。cert-manager然后负责管理该证书。
- Let's Encrypt: Let's Encrypt 选项还使用cert-manager. 但是,在这种情况下,证书管理器与 Let's Encrypt 的特殊颁发者结合在一起,该颁发者执行获取 Let's Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证 ( HTTP-01),因此负载均衡器必须具有公共 DNS 记录并且可从 Internet 访问。
- 携带您自己的证书:此选项允许您携带您自己的公共或私人 CA 签名的证书。Rancher 将使用该证书来保护 websocket 和 HTTPS 流量。在这种情况下,您必须将此证书(和关联密钥)上传为 PEM 编码文件,其名称tls.crt为tls.key. 如果您使用私有 CA,则还必须上传该证书。这是因为您的节点可能不信任此私有 CA。Rancher 将获取该 CA 证书,并从中生成一个校验和,各个 Rancher 组件将使用该校验和来验证其与 Rancher 的连接。
配置 | 舵图选项 | 需要证书管理器 |
Rancher 生成的证书(默认) | ingress.tls.source=rancher | 需要 |
让我们加密 | ingress.tls.source=letsEncrypt | 需要 |
文件中的证书 | ingress.tls.source=secret | 不需要 |
4.安装证书管理器
如果您携带自己的证书文件(选项),或者如果您在外部负载均衡器上ingress.tls.source=secret使用TLS 终止,则应跳过此步骤。
ingress.tls.source=rancher仅当使用 Rancher 生成的 CA 颁发的证书 ( ) 或请求 Let's Encrypt 颁发的证书 ( )时才需要执行此步骤ingress.tls.source=letsEncrypt。
要查看有关如何自定义 cert-manager 安装的选项(包括集群使用 PodSecurityPolicies 的情况),请参阅cert-manager 文档。
# If you have installed the CRDs manually instead of with the `--set installCRDs=true` option added to your Helm install command, you should upgrade your CRD resources before upgrading the Helm chart:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/<VERSION>/cert-manager.crds.yaml
# Add the Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io
# Update your local Helm chart repository cache
helm repo update
# Install the cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace
安装 cert-manager 后,您可以通过检查正在运行的 pod 的 cert-manager 命名空间来验证它是否已正确部署:
kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-5c6866597-zw7kh 1/1 Running 0 2m
cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m
cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
5. 使用 Helm 和您选择的证书选项
安装 Rancher 的确切命令因证书配置而异。
但是,无论证书配置如何,命名空间中 Rancher 安装的名称cattle-system应始终为rancher。
测试和开发:
安装 Rancher 的最后一个命令需要一个将流量转发到 Rancher 的域名。如果您使用 Helm CLI 设置概念验证,则可以在传递选项时使用假域名hostname。假域名的一个例子是<IP_OF_LINUX_NODE>.sslip.io,它会将 Rancher 暴露在其运行的 IP 上。生产安装需要真实的域名。
- Rancher 生成的证书
默认情况下,Rancher 会生成一个 CA,并用于cert-manager颁发访问 Rancher 服务器接口的证书。
因为rancher是 的默认选项,所以我们在运行命令时ingress.tls.source没有指定。ingress.tls.sourcehelm install
- 将 设为hostname您指向负载均衡器的 DNS 名称。
- 将 设为用户bootstrapPassword独有的值admin。
- 要安装特定的 Rancher 版本,请使用该--version标志,例如:--version 2.7.0
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时设置global.cattle.psp.enabled为。false对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但如果您选择,您仍然可以手动设置该选项。
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set bootstrapPassword=admin
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877
- 使用Let's Encrypt
此选项用于cert-manager自动请求和续 订Let's Encrypt证书。这是一项免费服务,可为您提供有效的证书,因为 Let's Encrypt 是受信任的 CA。
备注
您需要打开端口 80,因为 HTTP-01 质询只能在端口 80 上完成。
在以下命令中,
- hostname设置为公共 DNS 记录,
- 将 设为用户bootstrapPassword独有的值admin。
- ingress.tls.source被设定为letsEncrypt
- letsEncrypt.email设置为用于与您的证书进行通信的电子邮件地址(例如,到期通知)
- 设置letsEncrypt.ingress.class为您的入口控制器,例如traefik、nginx、haproxy等。
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时设置global.cattle.psp.enabled为。false对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但如果您选择,您仍然可以手动设置该选项。
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set bootstrapPassword=admin \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=me@example.org \
--set letsEncrypt.ingress.class=nginx
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877
- 使用自己创建的证书
在此选项中,Kubernetes 密钥是根据您自己的证书创建的,供 Rancher 使用。
运行此命令时,该选项必须与服务器证书中的或条目hostname匹配,否则 Ingress 控制器将无法正确配置。Common NameSubject Alternative Names
Subject Alternative Names尽管在技术上需要一个条目,但拥有一个匹配Common Name可以最大限度地提高与旧浏览器和应用程序的兼容性。
备注
- 设置hostname.
- 将 设为用户bootstrapPassword独有的值admin。
- 设置。ingress.tls.source_secret
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时设置global.cattle.psp.enabled为。false对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但如果您选择,您仍然可以手动设置该选项。
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set bootstrapPassword=admin \
--set ingress.tls.source=secret
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877
如果您要安装 alpha 版本,Helm 需要将选项添加--devel到安装命令中:
helm install rancher rancher-alpha/rancher --devel
等待 Rancher 推出:
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
如果您使用的是私有 CA 签名证书,请添加--set privateCA=true
到命令:
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set bootstrapPassword=admin \
--set ingress.tls.source=secret \
--set privateCA=true
Rancher 图表配置有许多选项可用于自定义安装以适合您的特定环境。以下是一些常见的高级场景。
- HTTP代理
- 私有容器镜像注册表
- 外部负载均衡器上的 TLS 终止
请参阅图表选项以获取完整的选项列表。
6.验证Rancher Server是否部署
添加秘密后,检查 Rancher 是否已成功推出:
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
如果您看到以下错误:error: deployment "rancher" exceeded its progress deadline,您可以通过运行以下命令来检查部署的状态:
kubectl -n cattle-system get deploy rancher
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rancher 3 3 3 3 3m
DESIRED它应该显示和的相同计数AVAILABLE。
7. 保存您的选项
确保保存您--set使用的选项。当您使用 Helm 将 Rancher 升级到新版本时,您将需要使用相同的选项。
完成
就是这样。您应该有一个功能齐全的 Rancher 服务器。
在 Web 浏览器中,转到将流量转发到负载均衡器的 DNS 名称。然后您应该会看到丰富多彩的登录页面。
SUSE Rancher 国内服务商,提供最佳实践,欢迎来咨询:W-X:FM0058 ,Q-Q:80815877