|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
在 Kubernetes 集群上安装/升级 SUSE Rancher Prime
在本节中,您将学习如何使用 Helm CLI 在 Kubernetes 集群上部署 Rancher。
先决条件
Kubernetes 集群
设置 Rancher 服务器的本地 Kubernetes 集群。
Rancher 可以安装在任何 Kubernetes 集群上。该集群可以使用上游 Kubernetes,或者可以使用 Rancher 的 Kubernetes 发行版,或者可以是来自 Amazon EKS 等提供商的托管 Kubernetes 集群。
有关设置 Kubernetes 集群的帮助,我们提供以下教程:
-
*K3s:*有关安装 K3s Kubernetes 集群的教程,请参阅 此页面。有关设置高可用性 K3s 集群基础设施的帮助,请参阅 此页面。
-
*RKE2:*有关安装 RKE2 Kubernetes 集群的教程,请参阅 此页面。有关设置高可用性 RKE2 集群基础设施的帮助,请参阅 此页面。
-
*Amazon EKS:*有关如何在 Amazon EKS 上安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便访问 Rancher 服务器,请参阅 此页面。
-
*AKS:*有关如何使用 Azure Kubernetes Service 安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便访问 Rancher 服务器,请参阅 此页面。
-
*GKE:*有关如何使用 Google Kubernetes Engine 安装 Rancher 的详细信息,包括如何安装 Ingress 控制器以便访问 Rancher 服务器,请参阅 此页面。 GKE 在创建 Kubernetes 集群时有两种操作模式:Autopilot 和标准模式。自动驾驶模式的集群配置对编辑 kube-system 命名空间有限制。然而,Rancher 在安装过程中需要在 kube-system 命名空间中创建资源。因此,您将无法在以 Autopilot 模式创建的 GKE 集群上安装 Rancher。
Ingress 控制器
Rancher UI 和 API 通过 Ingress 暴露。这意味着您安装 Rancher 的 Kubernetes 集群必须包含一个 Ingress 控制器。
对于 RKE2 和 K3s 安装,您不必手动安装 Ingress 控制器,因为默认已安装一个。
对于默认不包含 Ingress 控制器的发行版,例如 EKS、GKE 或 AKS 等托管 Kubernetes 集群,您必须先部署一个 Ingress 控制器。请注意,Rancher Helm 图表默认不在 ingress 上设置 ingressClassName。因此,您必须配置 Ingress 控制器以监视没有 ingressClassName 的 ingress。
示例包含在上述 Amazon EKS、AKS 和 GKE 教程中。
CLI 工具
设置 Kubernetes 集群需要以下 CLI 工具。请确保这些工具已安装并在您的 $PATH 中可用。
-
kubectl - Kubernetes 命令行工具。
-
helm - Kubernetes 的软件包管理。请参考 Helm 版本要求 以选择要安装 Rancher 的 Helm 版本。请参考 Helm 项目提供的说明 以获取您特定平台的指导。
安装 Rancher Helm 图表
Rancher 是使用 Helm 包管理器为 Kubernetes 安装的。Helm图表为Kubernetes YAML清单文档提供模板语法。使用 Helm,我们可以创建可配置的部署,而不仅仅是使用静态文件。
对于没有直接互联网访问的系统,请参见 隔离:Kubernetes 安装。Kubernetes 安装]。
要选择要安装的 Rancher 版本,请参考 xref:[选择 Rancher 版本。]
要选择一个 Helm 版本以安装 Rancher,请参考 Helm 版本要求。
|
安装说明假设您正在使用 Helm 3。 |
要设置 Rancher,
-
安装 cert-manager(除非您使用自己的证书,或者 TLS 将在负载均衡器上终止)
1.添加 Helm 图表储存库
使用 helm repo add 命令添加包含安装 Rancher Prime 的图表的 Helm 图表储存库。
helm repo add rancher-prime <helm-chart-repo-url>
|
To learn more about the Rancher Prime Helm chart repository URL, see our Prime-only documentation. Authentication is required. Use your SUSE Customer Center (SCC) credentials to log in. |
2.为 Rancher 创建一个名称空间
我们需要定义一个 Kubernetes 名称空间,以便 Chart 创建的资源安装在其中。这应该始终是 cattle-system:
kubectl create namespace cattle-system
3.选择您的 SSL 配置
Rancher 管理服务器默认设计为安全,并需要 SSL/TLS 配置。
|
如果您想在外部终止 SSL/TLS,请参见 在外部负载均衡器上终止 TLS。正如该页面所述,此选项确实有额外的 TLS 验证要求。 |
对于在 Rancher 服务器上进行 TLS 终止所使用的证书来源,推荐三种选项:
-
*Rancher 生成的 TLS 证书:*在这种情况下,您需要将`cert-manager`安装到集群中。Rancher 利用
cert-manager来颁发和维护其证书。Rancher 将生成自己的 CA 证书,并使用该 CA 签署证书。cert-manager随后负责管理该证书。当agent-tls-mode设置为严格时,无需额外操作。有关此设置的更多信息,请参见 代理 TLS 强制执行。 -
*Let’s Encrypt:*Let’s Encrypt 选项也使用
cert-manager。然而,在这种情况下,cert-manager 与 Let’s Encrypt 的特殊发行者结合,执行获取 Let’s Encrypt 颁发证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01),因此负载均衡器必须具有公共 DNS 记录,并且可以从互联网访问。在将agent-tls-mode设置为strict时,您还必须指定--privateCA=true并上传 Let’s Encrypt CA,如 添加 TLS 密钥中所述。有关此设置的更多信息,请参见 代理 TLS 强制执行。 -
*自带证书:*此选项允许您自带公共或私有CA签名的证书。Rancher将使用该证书来保护websocket和HTTPS流量。在这种情况下,您必须将此证书(及相关密钥)作为PEM编码文件上传,文件名为`tls.crt`和`tls.key`。如果您使用的是私有 CA,您还必须上传该证书。这是因为该私有 CA 可能不被您的节点信任。Rancher 将获取该 CA 证书,并从中生成一个校验和,各个 Rancher 组件将使用该校验和来验证与 Rancher 的连接。如果
agent-tls-mode设置为strict,则必须上传 CA,以便下游集群能够成功连接。有关此设置的更多信息,请参见代理TLS强制执行。
| 配置 | Helm Chart 选项 | 需要 cert-manager |
|---|---|---|
Rancher 生成的证书(默认) |
|
|
Let’s Encrypt |
|
|
来自文件的证书 |
|
否 |
4.安装 cert-manager
如果您使用自己的证书文件(选项
ingress.tls.source=secret),或者使用 外部负载均衡器上的 TLS 终止,则应跳过此步骤。
此步骤仅在使用 Rancher 生成的 CA (ingress.tls.source=rancher) 颁发的证书或请求 Let’s Encrypt 颁发的证书 (ingress.tls.source=letsEncrypt) 时需要。
点击展开
|
重要说明:
对 cert-manager 的最近更改需要进行升级。如果您正在升级 Rancher,并且使用的 cert-manager 版本低于 v0.11.0,请参阅我们的 升级文档。 |
这些说明改编自 官方 cert-manager 文档。
|
要查看如何自定义 cert-manager 安装的选项(包括在集群使用 PodSecurityPolicies 的情况下),请参阅 cert-manager 文档。 |
# If you have installed the CRDs manually, instead of setting `installCRDs` or `crds.enabled` to `true` in 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 \ --set crds.enabled=true
安装 cert-manager 后,您可以通过检查 cert-manager 的名称空间中正在运行的 Pod 来验证其是否已正确部署。
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 需要一个将流量转发到 Rancher 的域名。如果您使用 Helm CLI 设置概念验证,可以在传递 |
-
Rancher 生成的证书
-
Let’s Encrypt
-
来自文件的证书
默认情况下,Rancher 会生成一个 CA,并使用 cert-manager 来颁发访问 Rancher 服务器界面的证书。
因为 rancher 是 ingress.tls.source 的默认选项,所以在运行 ingress.tls.source 命令时我们不指定 helm install。
-
将
hostname设置为您指向负载均衡器的 DNS 名称。 -
将
bootstrapPassword设置为admin用户的唯一值。 -
要安装特定的 Rancher 版本,请使用
--version标志,例如:--version 2.7.0
helm install rancher rancher-prime/rancher \ --namespace cattle-system \ --set hostname=rancher.my.org \ --set bootstrapPassword=admin
等待 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
此选项使用 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等。
helm install rancher rancher-prime/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
等待 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
在此选项中,Kubernetes 密钥是从您自己的证书中创建的,以供 Rancher 使用。
当您运行此命令时,hostname 选项必须与服务器证书中的 Common Name 或 Subject Alternative Names 条目匹配,否则入口控制器将无法正确配置。
尽管 Subject Alternative Names 中的条目在技术上是必需的,但拥有匹配的 Common Name 可以最大限度地提高与旧版浏览器和应用程序的兼容性。
|
如果您想检查您的证书是否正确,请参见 我如何检查服务器证书中的通用名称和主题备用名称? |
-
设置
hostname。 -
将
bootstrapPassword设置为admin用户的唯一值。 -
将
ingress.tls.source设置为secret。
helm install rancher rancher-prime/rancher \ --namespace cattle-system \ --set hostname=rancher.my.org \ --set bootstrapPassword=admin \ --set ingress.tls.source=secret
如果您使用的是私有 CA 签名的证书,请将 --set privateCA=true 添加到命令中:
helm install rancher rancher-prime/rancher \ --namespace cattle-system \ --set hostname=rancher.my.org \ --set bootstrapPassword=admin \ --set ingress.tls.source=secret \ --set privateCA=true
现在 Rancher 已经部署,请参见 添加 TLS 密钥 以发布证书文件,以便 Rancher 和入口控制器使用它们。
Rancher 图表配置有许多选项,可以根据您的特定环境自定义安装。以下是一些常见的高级场景。
请参见 图表选项 获取完整的选项列表。
6.验证 Rancher 服务器是否成功部署
添加密钥后,检查 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 的相同计数。