Merge pull request #314 from vickyhella/vk-bilingual

Update 2.7 and 2.6 translation - part 2
This commit is contained in:
Billy Tat
2022-11-30 13:52:54 -08:00
committed by GitHub
8 changed files with 267 additions and 275 deletions
@@ -4,260 +4,241 @@ title: 更新 Rancher 证书
## 更新私有 CA 证书 ## 更新私有 CA 证书
本文介绍如何更新 Rancher [高可用 Kubernetes 安装](../../../pages-for-subheaders/install-upgrade-on-a-kubernetes-cluster.md) 中 Ingress 的 SSL 证书,以及如何从默认的自签名证书切换到自定义证书。 按照以下步骤轮换[安装在 Kubernetes 集群上](../../../pages-for-subheaders/install-upgrade-on-a-kubernetes-cluster.md)、由 Rancher 使用的 SSL 证书和私有 CA,或转用由私有 CA 签发的 SSL 证书。
步骤概述: 步骤概述:
1. 使用新证书和私钥创建或更新 `tls-rancher-ingress` Kubernetes 密文资源。 1. 使用新证书和私钥创建或更新 `tls-rancher-ingress` Kubernetes Secret 对象。
2. 使用根 CA 证书创建或更新 `tls-ca` Kubernetes 密文资源(仅在使用私有 CA 时需要)。 1. 使用根 CA 证书创建或更新 `tls-ca` Kubernetes Secret 对象(仅在使用私有 CA 时需要)。
3. 使用 Helm CLI 更新 Rancher 安装。 1. 使用 Helm CLI 更新 Rancher 安装。
4. 重新配置 Rancher Agent 以信任新的 CA 证书。 1. 重新配置 Rancher Agent 以信任新的 CA 证书。
5. 选择 Fleet 集群的强制更新,来将 fleet-agent 连接到 Rancher。 1. 选择 Fleet 集群的强制更新,来将 fleet-agent 连接到 Rancher。
各个步骤的详细说明如下。 各个步骤的详细说明如下。
### 1. 创建/更新证书密文资源 ### 1. 创建/更新证书 Secret 对象
首先,将服务器证书和所有中间证书合并到名为 `tls.crt` 的文件,并在名为 `tls.key` 的文件中提供相应的证书密钥。 首先,将服务器证书和所有中间证书合并到名为 `tls.crt` 的文件,并在名为 `tls.key` 的文件中提供相应的证书密钥。
如果你想切换 Rancher 自签名证书或 Let's Encrypt 证书,请运行以下命令,在 Rancher 高可用集群中创建 `tls-rancher-ingress` 密文资源: 使用以下命令在 Rancher(本地)管理集群中创建 `tls-rancher-ingress` Secret 对象:
``` ```bash
$ kubectl -n cattle-system create secret tls tls-rancher-ingress \ kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \ --cert=tls.crt \
--key=tls.key --key=tls.key
``` ```
你也可以运行以下命令,更新现有的证书密文: 或者,更新现有的 `tls-rancher-ingress` Secret:
``` ```bash
$ kubectl -n cattle-system create secret tls tls-rancher-ingress \ kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \ --cert=tls.crt \
--key=tls.key \ --key=tls.key \
--dry-run --save-config -o yaml | kubectl apply -f - --dry-run --save-config -o yaml | kubectl apply -f -
``` ```
### 2. 创建/更新证书 CA 密文资源 ### 2. 创建/更新证书 CA Secret 对象
如果新证书由私有 CA 签发的,你需要将相应的根 CA 证书复制到名为 `cacerts.pem` 的文件中,并创建或更新 `cattle-system` 命名空间中的 `tls-ca` 密文。如果证书由中间 CA 签名,则 `cacerts.pem` 必须按顺序同时包含中间 CA 证书和根 CA 证书。 如果新证书由私有 CA 签发的,你需要将相应的根 CA 证书复制到名为 `cacerts.pem` 的文件中,并创建或更新 `cattle-system` 命名空间中的 `tls-ca` Secret。如果证书由中间 CA 签名,则 `cacerts.pem` 必须按顺序同时包含中间 CA 证书和根 CA 证书。
创建初始密文: 创建初始 `tls-ca` Secret:
``` ```bash
$ kubectl -n cattle-system create secret generic tls-ca \ kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem --from-file=cacerts.pem
``` ```
要更新现有的 `tls-ca` 密文: 要更新现有的 `tls-ca` Secret:
``` ```bash
$ kubectl -n cattle-system create secret generic tls-ca \ kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem \ --from-file=cacerts.pem \
--dry-run --save-config -o yaml | kubectl apply -f - --dry-run --save-config -o yaml | kubectl apply -f -
``` ```
### 3. 重新配置 Rancher 部署 ### 3. 重新配置 Rancher 部署
:::note 如果证书源有更改,则需要执行此步骤。如果你的 Rancher 之前使用默认的自签名证书 (`ingress.tls.source=rancher`) 或 Let's Encrypt (`ingress.tls.source=letsEncrypt`) 证书,并且现在正在使用由私有 CA (`ingress.tls.source=secret`) 签名的证书。
在继续之前,在 Rancher UI (<b>用户 > API & 密钥 </b>) 中生成一个 API Token,并保存持有者 Token(你在步骤 4 中可能需要)。 以下步骤更新了 Rancher Chart 的 Helm 值,因此 Rancher pod 和 ingress 会使用在步骤 1 和 2 中创建的新私有 CA 证书。
1. 调整初始安装期间使用的值,将当前值存储为:
```bash
helm get values rancher -n cattle-system -o yaml > values.yaml
```
1. 检索当前部署的 Rancher Chart 的版本字符串:
```bash
helm ls -n cattle-system
```
1. 更新 `values.yaml` 文件中的当前 Helm 值以包含下方内容:
```yaml
ingress:
tls:
source: secret
privateCA: true
```
:::note 重要:
由于证书由私有 CA 签发,因此确保在 `values.yaml` 文件中设置了 [`privateCA: true`](https://docs.ranchermanager.rancher.io/getting-started/installation-and-upgrade/installation-references/helm-chart-options#common-options) 是非常重要的。
::: :::
1. 使用 `values.yaml` 文件和当前 Chart 版本升级 Helm 应用程序实例。版本必须匹配以防止 Rancher 升级。
只有在最初安装 Rancher 时使用了自签名证书 (`ingress.tls.source=rancher`)或 Let's Encrypt 证书(`ingress.tls.source=letsEncrypt`)时,你才需要执行此步骤。 ```bash
helm upgrade rancher rancher-stable/rancher \
这一步骤确保 Rancher Pod 和 Ingress 资源能够重新配置,来使用新的服务器和可选的 CA 证书。
要更新 Helm 部署,请使用初始安装时的选项(`--set`)。运行以下命令检查:
```
$ helm get values rancher -n cattle-system
```
获取当前部署的 Rancher Chart 的版本字符串:
```
$ helm ls -A
```
使用初始配置的值升级 Helm 应用实例,并指定 `ingress.tls.source=secret` 以及当前的 Chart 版本来防止应用升级。
如果证书是由私有 CA 签发的,你需要添加 `set privateCA=true` 参数。请确保你已经阅读了使用自定义证书进行初始安装的文档。
```
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \ --namespace cattle-system \
--version <DEPLOYED_CHART_VERSION> \ -f values.yaml \
--set hostname=rancher.my.org \ --version <DEPLOYED_RANCHER_VERSION>
--set ingress.tls.source=secret \
--set ...
``` ```
升级完成后,访问 `https://<Rancher_SERVER>/v3/settings/cacerts`,验证该值是否与先前写入 `tls-ca` 密文中的 CA 证书匹配。 修改完成后,访问 `https://<RANCHER_SERVER_URL>/v3/settings/cacerts`,验证该值是否与先前写入 `tls-ca` Secret 中的 CA 证书匹配。在所有 Rancher pod 启动之前,CA `cacerts` 值可能不会更新。
### 4. 重新配置 Rancher Agent 以信任私有 CA ### 4. 重新配置 Rancher Agent 以信任私有 CA
本节介绍了重新配置 Rancher Agent 以信任私有 CA 的三种方法。如果你的实际情况符合以下任意一个条件,请执行此步骤: 本节介绍了重新配置 Rancher Agent 以信任私有 CA 的三种方法。如果你的实际情况符合以下任意一个条件,请执行此步骤:
- Rancher 初始配置中使用了 Rancher 自签名证书 (`ingress.tls.source=rancher`) 或 Let's Encrypt 证书 (`ingress.tls.source=letsEncrypt`)。 - Rancher 在先前的配置中使用了 Rancher 自签名证书 (`ingress.tls.source=rancher`) 或 Let's Encrypt 证书 (`ingress.tls.source=letsEncrypt`)。
- 新自定义证书的根 CA 证书已更改。 - 该证书由不同的私有 CA 签发
#### 为什么要执行这一步骤? #### 为什么要执行这一步骤?
如果 Rancher 配置了私有 CA 签名的证书时,CA 证书链会下载到 Rancher Agent 容器中。代理会对下载证书的校验和及 `CATTLE_CA_CHECKSUM` 环境变量进行比较。如果私有 CA 证书在 Rancher Server 端更改了,环境变量 `CATTLE_CA_CHECKSUM` 必须相应进行更新。 如果 Rancher 配置了私有 CA 签名的证书时,CA 证书链将受到 Rancher agent 容器的信任。Agent 会对下载证书的校验和及 `CATTLE_CA_CHECKSUM` 环境变量进行比较。换言之,如果 Rancher 使用的私有 CA 证书发生变化,环境变量 `CATTLE_CA_CHECKSUM` 必须相应更新。
#### 可使用的方法 #### 可使用的方法
- 方法 1(最简单的方法): - 方法 1(最简单的方法):在轮换证书后将所有集群连接到 Rancher。适用于更新 Rancher 部署(步骤 3)后立即执行的情况。
在轮换证书后将所有集群连接到 Rancher。适用于更新 Rancher 部署(步骤 3)后立即执行的情况。
- 方法 2:适用于集群失去了与 Rancher 的连接,但是你已启动了[授权集群端点(ACE)](https://rancher.com/docs/rancher/v2.6/en/cluster-admin/cluster-access/ace/)的情况。 - 方法 2:适用于集群与 Rancher 失去连接,但所有集群都启用了 [Authorized Cluster Endpoint](https://docs.ranchermanager.rancher.io/how-to-guides/new-user-guides/manage-clusters/access-clusters/authorized-cluster-endpoint) (ACE) 的情况。
- 方法 3:方法 1 和方法 2 不可用的情况下可使用。 - 方法 3:如果方法 1 和 2 不可行,则可使用方法 3 进行回退。
#### 方法 1:Kubectl 命令 #### 方法 1:强制重新部署 Rancher Agent
对于**集群管理**中的每个集群(除去 `local` Rancher 管理集群),使用 Rancher 管理集群(RKE 或 K3S)的 `Kubeconfig` 文件运行以下命令: 对于每个下游集群,使用 Rancher(本地)管理集群的 Kubeconfig 文件运行以下命令。
``` ```bash
kubectl patch clusters.management.cattle.io <REPLACE_WITH_CLUSTERID> -p '{"status":{"agentImage":"dummy"}}' --type merge kubectl annotate clusters.management.cattle.io <CLUSTER_ID> io.cattle.agent.force.deploy=true
``` ```
这个命令能使所有 Agent Kubernetes 资源使用新证书的校验和重新配置。 :::note
找到下游集群的集群 ID (c-xxxxx)。你可以在 Rancher UI 的**集群管理**中查看集群时在浏览器 URL 中找到 ID。
:::
此命令将使 Agent 清单重新应用新证书的校验和。
#### 方法 2:手动更新校验和 #### 方法二:手动更新校验和环境变量
通过将 `CATTLE_CA_CHECKSUM` 环境变量更新为匹配新 CA 证书校验和的值,来手动为 Agent Kubernetes 资源打上补丁。通过以下操作生成新的校验和: 将 `CATTLE_CA_CHECKSUM` 环境变量更新为匹配新 CA 证书校验和的值,从而手动为 Agent Kubernetes 对象打上补丁。通过以下操作生成新的校验和:
``` ```bash
$ curl -k -s -fL <RANCHER_SERVER>/v3/settings/cacerts | jq -r .value > cacert.tmp curl -k -s -fL <RANCHER_SERVER_URL>/v3/settings/cacerts | jq -r .value | sha256sum cacert.tmp | awk '{print $1}'
$ sha256sum cacert.tmp | awk '{print $1}'
``` ```
为每个下游集群使用 Kubeconfig 更新两个 Agent 部署的环境变量: 为每个下游集群使用 Kubeconfig 更新两个 Agent 部署的环境变量。如果集群启用了 [ACE](https://docs.ranchermanager.rancher.io/how-to-guides/new-user-guides/manage-clusters/access-clusters/authorized-cluster-endpoint),你可以[调整 kubectl 上下文](https://docs.ranchermanager.rancher.io/how-to-guides/new-user-guides/manage-clusters/access-clusters/use-kubectl-and-kubeconfig#authenticating-directly-with-a-downstream-cluster),从而直接连接到下游集群。
``` ```bash
$ kubectl edit -n cattle-system ds/cattle-node-agent kubectl edit -n cattle-system ds/cattle-node-agent
$ kubectl edit -n cattle-system deployment/cattle-cluster-agent kubectl edit -n cattle-system deployment/cattle-cluster-agent
``` ```
#### 方法 3:重新创建 Rancher Agent #### 方法三:手动重新部署 Rancher agent
你可以在每个下游集群的 controlplane 节点上运行一组命令,来重新创建 Rancher Agent。 该方法通过在每个下游集群的 control plane 节点上运行一组命令,从而重新应用 Rancher agent。
首先,生成 Agent 定义(参见[此处](https://gist.github.com/superseb/076f20146e012f1d4e289f5bd1bd4971))。 对每个下游集群重复以下步骤:
然后,SSH 连接到下游集群的 controlplane 节点,创建 Kubeconfig 并应用定义(参见[此处]( 1. 检索 agent 注册 kubectl 命令:
https://gist.github.com/superseb/b14ed3b5535f621ad3d2aa6a4cd6443b))。 1. 找到下游集群的集群 ID (c-xxxxx)。你可以在 Rancher UI 的**集群管理**中查看集群时在浏览器 URL 中找到 ID。
1. 将 Rancher Server URL 和集群 ID 添加到以下 URL:`https://<RANCHER_SERVER_URL>/v3/clusterregistrationtokens?clusterId=<CLUSTER_ID>`。
1. 复制 `insecureCommand` 字段中的命令,使用此命令是因为未使用私有 CA。
### 5. 选择 Fleet 集群的强制更新,来将 fleet-agent 连接到 Rancher 2. 使用以下其中一种方法,使用 kubeconfig 为下游集群运行上一步中的 kubectl 命令:
1. 如果集群启用了 [ACE](https://docs.ranchermanager.rancher.io/how-to-guides/new-user-guides/manage-clusters/access-clusters/authorized-cluster-endpoint),你可以[调整上下文](https://docs.ranchermanager.rancher.io/how-to-guides/new-user-guides/manage-clusters/access-clusters/use-kubectl-and-kubeconfig#authenticating-directly-with-a-downstream-cluster),从而直接连接到下游集群。
1. 或者,SSH 到 control plane 节点:
- RKE:使用[此处文档中的步骤](https://github.com/rancherlabs/support-tools/tree/master/how-to-retrieve-kubeconfig-from-custom-cluster)生成 kubeconfig
- RKE2/K3s:使用安装时填充的 kubeconfig
### 5. 强制更新 Fleet 集群,从而将 fleet-agent 重新连接到 Rancher
在 Rancher UI 的[持续交付](../../../how-to-guides/new-user-guides/deploy-apps-across-clusters/fleet.md#在-rancher-ui-中访问-fleet)中,为集群选择“强制更新”,来允许下游集群中的 fleet-agent 成功连接到 Rancher。 在 Rancher UI 的[持续交付](../../../how-to-guides/new-user-guides/deploy-apps-across-clusters/fleet.md#在-rancher-ui-中访问-fleet)中,为集群选择“强制更新”,来允许下游集群中的 fleet-agent 成功连接到 Rancher。
#### 为什么要执行这一步骤? #### 为什么要执行这一步骤?
Rancher 管理的集群中的 Fleet agent 存储 kubeconfig,该配置用于连接到 Fleet 系统命名空间的 fleet-agent 密文中的 Rancher 代理 kube-api。kubeconfig 包括一个包含 Rancher CA 的证书授权数据块。更改 Rancher CA 时,需要更新此块来使 fleet-agent 成功连接到 Rancher。 Rancher 管理的集群中的 Fleet agent 存储了用于连接到 Rancher 的 kubeconfig。kubeconfig 包含一个 `certificate-authority-data` 字段,该字段包含 Rancher 使用的证书的 CA。更改 CA 时,你需要更新此块来允许 fleet-agent 信任 Rancher 使用的证书。
## 将私有 CA 证书更改为通用证书 ## 将私有 CA 证书更改为公共证书
:::note 按照以下步骤执行与上面相反的操作,将私有 CA 颁发的证书更改为公共或自签名 CA。
你可以执行与上文描述相反的操作,即将私有证书更改为通用或非私有证书。所涉及的步骤概述如下。 ### 1. 创建/更新证书 Secret 对象
:::
### 1. 创建/更新证书密文资源
首先,将服务器证书和所有中间证书合并到名为 `tls.crt` 的文件,并在名为 `tls.key` 的文件中提供相应的证书密钥。 首先,将服务器证书和所有中间证书合并到名为 `tls.crt` 的文件,并在名为 `tls.key` 的文件中提供相应的证书密钥。
如果你想切换 Rancher 自签名证书或 Let's Encrypt 证书,请运行以下命令,在 Rancher 高可用集群中创建 `tls-rancher-ingress` 密文资源: 使用以下命令在 Rancher(本地)管理集群中创建 `tls-rancher-ingress` Secret 对象:
``` ```bash
$ kubectl -n cattle-system create secret tls tls-rancher-ingress \ kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \ --cert=tls.crt \
--key=tls.key --key=tls.key
``` ```
你也可以运行以下命令,更新现有的证书密文: 或者,更新现有的 `tls-rancher-ingress` Secret:
``` ```bash
$ kubectl -n cattle-system create secret tls tls-rancher-ingress \ kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \ --cert=tls.crt \
--key=tls.key \ --key=tls.key \
--dry-run --save-config -o yaml | kubectl apply -f - --dry-run --save-config -o yaml | kubectl apply -f -
``` ```
### 2. 删除 CA 证书密文资源 ### 2. 删除 CA 证书 Secret 对象
你需要删除 `cattle-system` 命名空间中的 `tls-ca secret`(不再需要它)。如果需要,你还可以选择保存 `tls-ca secret` 的副本。 你需要删除 `cattle-system` 命名空间中的 `tls-ca secret`(不再需要它)。如果需要,你还可以选择保存 `tls-ca` secret 的副本。
要保存现有密文: 要保存现有的 `tls-ca` Secret:
``` ```bash
kubectl -n cattle-system get secret tls-ca -o yaml > tls-ca.yaml kubectl -n cattle-system get secret tls-ca -o yaml > tls-ca.yaml
``` ```
要删除现有的 `tls-ca` 密文: 要删除现有的 `tls-ca` 密文:
``` ```bash
kubectl -n cattle-system delete secret tls-ca kubectl -n cattle-system delete secret tls-ca
``` ```
### 3. 重新配置 Rancher 部署 ### 3. 重新配置 Rancher 部署
:::note 重要提示: 如果证书源有更改,则需要执行此步骤。在这种情况下,它变化的原因很可能是因为 Rancher 之前配置为使用默认的自签名证书 (`ingress.tls.source=rancher`)。
在继续之前,先[在 Rancher UI 中生成 API 令牌](../../../reference-guides/user-settings/api-keys.md#创建-api-密钥)(在 <b>User > API & Keys</b> 中)。 以下步骤更新了 Rancher Chart 的 Helm 值,因此 Rancher pod 和 Ingress 会使用在步骤 1 中创建的新证书。
:::
只有在最初安装 Rancher 时使用了自签名证书 (`ingress.tls.source=rancher`)或 Let's Encrypt 证书(`ingress.tls.source=letsEncrypt`)时,你才需要执行此步骤。
这一步骤确保 Rancher Pod 和 Ingress 资源能够重新配置,来使用新的服务器和可选的 CA 证书。
要更新 Helm 部署,请使用初始安装时的选项(`--set`)。运行以下命令检查:
1. 调整初始安装期间使用的值,将当前值存储为:
```bash
helm get values rancher -n cattle-system -o yaml > values.yaml
``` ```
$ helm get values rancher -n cattle-system 1. 获取当前部署的 Rancher Chart 的版本字符串:
```bash
helm ls -n cattle-system
``` ```
1. 更新 `values.yaml` 文件中的当前 Helm 值:
获取当前部署的 Rancher Chart 的版本字符串: 1. 由于不再使用私有 CA,删除 `privateCA: true` 字段,或将其设置为 `false`。
1. 根据需要调整 `ingress.tls.source` 字段。有关更多信息,请参阅 [Chart 选项](https://docs.ranchermanager.rancher.io/getting-started/installation-and-upgrade/installation-references/helm-chart-options#common-options)。以下是一些示例:
``` 1. 如果使用公共 CA,继续使用 `secret`
$ helm ls -A 1. 如果使用 Let's Encrypt,将值更新为 `letsEncrypt`
``` 1. 使用 `values.yaml` 文件更新 Rancher Chart 的 Helm 值,并使用当前 Chart 版本防止升级:
```bash
使用初始配置的值升级 Helm 应用程序实例,并指定当前的 Chart 版本以防止应用程序升级。 helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
请确保你已经阅读了使用自定义证书进行初始安装的文档。 -f values.yaml \
--version <DEPLOYED_RANCHER_VERSION>
```
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--version <DEPLOYED_CHART_VERSION> \
--set hostname=rancher.my.org \
--set ...
```
升级时,你可以执行以下其中一个操作:
- 从 Helm 升级命令中删除 `--set ingress.tls.source=secret \`,如上所示。
- 删除 `privateCA` 参数或将其设置为 `false` (因为 CA 有效):
```
set privateCA=false
``` ```
### 4. 为非私有/通用证书重新配置 Rancher Agent ### 4. 为非私有/通用证书重新配置 Rancher Agent
下游集群 Agent 上的 `CATTLE_CA_CHECKSUM` 环境变量应该被删除或设置为“”(一个空字符串)。 由于不再使用私有 CA,因此你需要删除下游集群 agent 上的 `CATTLE_CA_CHECKSUM` 环境变量,或将其设置为 ""(空字符串)。
### 5. 选择 Fleet 集群的强制更新,来将 fleet-agent 连接到 Rancher ### 5. 强制更新 Fleet 集群,从而将 fleet-agent 重新连接到 Rancher
在 Rancher UI 的[持续交付](../../../how-to-guides/new-user-guides/deploy-apps-across-clusters/fleet.md#在-rancher-ui-中访问-fleet)中,为集群选择“强制更新”,来允许下游集群中的 fleet-agent 成功连接到 Rancher。 在 Rancher UI 的[持续交付](../../../how-to-guides/new-user-guides/deploy-apps-across-clusters/fleet.md#在-rancher-ui-中访问-fleet)中,为集群选择“强制更新”,来允许下游集群中的 fleet-agent 成功连接到 Rancher。
#### 为什么要执行这一步骤? #### 为什么要执行这一步骤?
Rancher 管理的集群中的 Fleet agent 存储 kubeconfig,该配置用于连接到 Fleet 系统命名空间的 fleet-agent 密文中的 Rancher 代理 kube-api。kubeconfig 包括一个包含 Rancher CA 的证书授权数据块。更改 Rancher CA 时,需要更新此块来使 fleet-agent 成功连接到 Rancher。 Rancher 管理的集群中的 Fleet agent 存储了用于连接到 Rancher 的 kubeconfig。kubeconfig 包含一个 `certificate-authority-data` 字段,该字段包含 Rancher 使用的证书的 CA。更改 CA 时,你需要更新此块来允许 fleet-agent 信任 Rancher 使用的证书。
@@ -2,12 +2,6 @@
title: 配置 Azure AD title: 配置 Azure AD
--- ---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<Tabs>
<TabItem value="Rancher v2.6.7">
## Microsoft Graph API ## Microsoft Graph API
Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用户](#新用户设置)使用新实例来配置 Azure AD,并帮助现有 Azure 应用所有者[迁移到新流程](#从-azure-ad-graph-api-迁移到-microsoft-graph-api)。 Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用户](#新用户设置)使用新实例来配置 Azure AD,并帮助现有 Azure 应用所有者[迁移到新流程](#从-azure-ad-graph-api-迁移到-microsoft-graph-api)。
@@ -29,7 +23,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
:::tip :::tip
在开始之前,我们建议你创建一个空文本文件。你可以将 Azure 相关的值复制到该文件,然后再粘贴到 Rancher 中。 在开始之前,打开两个浏览器选项卡:一个用于 Rancher,一个用于 Azure 门户。这样,你可以轻松将门户的配置值复制并粘贴到 Rancher 中。
::: :::
@@ -42,9 +36,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
1. 使用搜索功能打开 **App registrations** 服务。 1. 使用搜索功能打开 **App registrations** 服务。
![Open App Registrations](/img/search-app-registrations.png) 1. 点击 **New registration** 并填写表单。
1. 单击 **New registrations** 并完成 **Create** 表单。
![New App Registration](/img/new-app-registration.png) ![New App Registration](/img/new-app-registration.png)
@@ -83,20 +75,17 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
![Open Rancher Registration](/img/open-rancher-app-reg.png) ![Open Rancher Registration](/img/open-rancher-app-reg.png)
1. 在左侧的导航窗格中,单击 **Certificates and Secrets**。 1. 在左侧的导航窗格中,单击 **Certificates & secrets**。
1. 单击 **New client secret**。 1. 单击 **New client secret**。
![创建新的客户端密文](/img/new-client-secret.png) ![创建新的客户端密文](/img/new-client-secret.png)
1. 输入 **Description**(例如 `Rancher`)。 1. 输入 **Description**(例如 `Rancher`)。
1. 从 **Expires** 下的选项中选择密钥的持续时间。此下拉菜单设置的是密钥的到期日期。日期越短则越安全,但是在到期后你需要创建新密钥。 1. 从 **Expires** 下的选项中选择密钥的持续时间。此下拉菜单设置的是密钥的到期日期。日期越短则越安全,但是在到期后你需要创建新密钥。
请注意,如果应用程序密钥已过期,用户将无法登录 Rancher,因此请在 Azure 中轮换密钥并在其过期前在 Rancher 中进行更新。
1. 单击 **Add**(无需输入值,保存后会自动填充)。 1. 单击 **Add**(无需输入值,保存后会自动填充)。
<a id="secret"></a> <a id="secret"></a>
1. 将键值复制保存到[空文本文件](#tip)。 1. 稍后你将在 Rancher UI 中输入此密钥作为你的 **Application Secret**。由于你将无法在 Azure UI 中再次访问键值,因此请在其余设置过程中保持打开此窗口。
稍后你将在 Rancher UI 中输入此密钥作为你的 **Application Secret**。
你将无法在 Azure UI 中再次访问该键值。
#### 3. 设置 Rancher 所需的权限 #### 3. 设置 Rancher 所需的权限
@@ -104,65 +93,55 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
:::caution :::caution
请确保你设置了 Application 和 NOT Delegated 的权限类型。否则,你可能无法登录 Azure AD。禁用/重新启用 Azure AD 无法解决此问题,你需要等待一小时或手动删除缓存值。 请确保你设置了 Application 和 NOT Delegated 的权限类型。否则,你可能无法登录 Azure AD。
::: :::
1. 从左侧的导航窗格中,选择 **API permissions**。 1. 从左侧的导航窗格中,选择 **API permissions**。
![Open Required Permissions](/img/select-req-permissions.png)
1. 单击 **Add a permission**。 1. 单击 **Add a permission**。
1. 在 **Microsoft Graph** 中,选择以下 **Application Permissions**: 1. 从 Microsoft Graph API 中,选择以下 **Application Permissions**: `Directory.Read.All`。
- `Group.Read.All`
- `User.Read.All`
![选择 API 权限](/img/api-permissions.png) ![选择 API 权限](/img/api-permissions.png)
1. 返回左侧导航栏中的 **API permissions**。在那里,单击 **Grant admin consent**。然后单击 **Yes**。 1. 返回左侧导航栏中的 **API permissions**。在那里,单击 **Grant admin consent**。然后单击 **Yes**。该应用程序的权限应如下所示:
:::note ![Open Required Permissions](/img/select-req-permissions.png)
你必须以 Azure 管理员身份登录才能保存你的权限设置。 :::note
::: Rancher 不会验证你授予 Azure 应用程序的权限。我们仅支持使用 `Directory.Read.All` 应用程序权限。
:::
#### 4. 复制 Azure 应用数据 #### 4. 复制 Azure 应用数据
这是在 Azure 中执行的的最后一步。你需要复制用于配置 Rancher 以进行 Azure AD 身份验证的数据,并将其粘贴到一个空文本文件中。 ![Application ID](/img/app-configuration.png)
1. 获取你的 Rancher **租户 ID**。 1. 获取你的 Rancher **租户 ID**。
1. 使用搜索打开 **App registrations**。 1. 使用搜索打开 **App registrations**。
![Open App Registrations](/img/search-app-registrations.png)
1. 找到你为 Rancher 创建的项。 1. 找到你为 Rancher 创建的项。
1. 复制 **Directory ID** 并粘贴到你的[文本文件](#tip)。 1. 复制 **Directory ID** 并将其作为 **Tenant ID** 粘贴到 Rancher 中。
![Tenant ID](/img/tenant-id.png)
- 你将把这个值作为 **Tenant ID** 粘贴到 Rancher。
1. 获取你的 Rancher **Application (Client) ID**。 1. 获取你的 Rancher **Application (Client) ID**。
2.1. 使用搜索打开 **App registrations**(如果还没有的话)。 1. 使用搜索打开 **App registrations**(如果还没有的话)。
2.2. 在 **Overview**中,找到你为 Rancher 创建的条目。 1. 在 **Overview**中,找到你为 Rancher 创建的条目。
2.3. 复制 **Application (Client) ID** 并将其粘贴到你的[文本文件](#tip)。 1. 复制 **Application (Client) ID** 并将其作为 **Application ID** 粘贴到 Rancher 中。
![Application ID](/img/application-client-id.png) 1. 你的端点选项通常 [Standard](#global) 或 [China](#china)。使用这些选项,你只需要输入 **Tenant ID**、**Application ID** 和 **Application Secret**。
1. 你的端点选项通常是 [Standard](#global) 和 [China](#china)。使用这些选项,你只需要输入 **Tenant ID**、**Application ID** 和 **Application Secret**(Rancher 将负责其余的工作)。
![标准端点选项](/img/tenant-application-id-secret.png) ![标准端点选项](/img/tenant-application-id-secret.png)
**对于自定义端点**: **对于自定义端点**:
**警告**:Rancher 不支持也不完全测试自定义端点。 **警告**:Rancher 未测试也未完全支持自定义端点。
你还需要手动输入 Graph、Token 和 Auth Endpoints。 你还需要手动输入 Graph、Token 和 Auth Endpoints。
@@ -170,7 +149,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
![点击端点](/img/endpoints.png) ![点击端点](/img/endpoints.png)
- 将以下端点复制并粘贴到你的[文本文件](#tip)中(这些值将是你的 Rancher 端点值):确保复制端点的 v1 版本。 - 请注意以下端点 - 这些值将是你的 Rancher 端点值。请使用端点的 v1 版本。
- **Microsoft Graph API endpoint**(Graph 端点) - **Microsoft Graph API endpoint**(Graph 端点)
- **OAuth 2.0 token endpoint (v1)**(Token 端点) - **OAuth 2.0 token endpoint (v1)**(Token 端点)
- **OAuth 2.0 authorization endpoint (v1)** (Auth 端点) - **OAuth 2.0 authorization endpoint (v1)** (Auth 端点)
@@ -179,8 +158,6 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
在 Rancher UI 中,输入托管在 Azure 中的 AD 实例的信息以完成配置。 在 Rancher UI 中,输入托管在 Azure 中的 AD 实例的信息以完成配置。
输入你复制到[文本文件](#tip)的值。
1. 登录到 Rancher。 1. 登录到 Rancher。
1. 在左上角,单击 **☰ > 用户 & 认证**。 1. 在左上角,单击 **☰ > 用户 & 认证**。
1. 在左侧导航栏,单击**认证**。 1. 在左侧导航栏,单击**认证**。
@@ -209,7 +186,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
**重要提示**:在自定义配置中输入 Graph Endpoint 时,请从 URL 中删除 Tenant ID,如下所示: **重要提示**:在自定义配置中输入 Graph Endpoint 时,请从 URL 中删除 Tenant ID,如下所示:
<code>http<span>s://g</span>raph.microsoft.com/<del>abb5adde-bee8-4821-8b03-e63efdc7701c</del></code> <code>http<span>s://g</span>raph.microsoft.com<del>/abb5adde-bee8-4821-8b03-e63efdc7701c</del></code>
1. 点击**启用**。 1. 点击**启用**。
@@ -218,14 +195,19 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
### 从 Azure AD Graph API 迁移到 Microsoft Graph API ### 从 Azure AD Graph API 迁移到 Microsoft Graph API
由于 [Azure AD Graph API](https://docs.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview) 已于 2022 年 6 月弃用并将于 2023 年 6 月 30 日停用,因此用户应更新其 Azure AD 应用程序以在 Rancher 中使用新的 [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/use-the-api)。 由于 [Azure AD Graph API](https://docs.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview) 已于 2020 年 6 月弃用并将于 2023 年 6 月停用,因此管理员应更新其 Azure AD 应用程序以在 Rancher 中使用新的 [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/use-the-api)。
你需要在端点弃用之前完成操作。
如果 Rancher 在停用后仍配置为使用旧的 Azure AD Graph API,用户可能无法使用 Azure AD 登录 Rancher。
#### 在 Rancher UI 中更新端点 #### 在 Rancher UI 中更新端点
> **重要提示**:管理员应该在他们提交下面第 4 步中的端点迁移之前创建一个[备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。 :::caution
1. 按照[此处](#3-设置-rancher-所需的权限)所述更新 Azure AD 应用注册的权限 管理员需要在进行下述端点迁移之前创建一个[备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。
(**重要**)。
:::
1. 按照[此处](#3-设置-rancher-所需的权限)所述更新 Azure AD 应用注册的权限。这很关键。
1. 登录到 Rancher。 1. 登录到 Rancher。
@@ -257,17 +239,16 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
1. 如果 Azure 应用程序所有者想要轮换应用程序密钥,他们也需要在 Rancher 中进行轮换(因为在 Azure 中更改应用程序密钥时,Rancher 不会自动更新应用程序密钥)。在 Rancher 中,它存储在名为 `azureadconfig-applicationsecret` 的 Kubernetes 密文中,该密文位于 `cattle-global-data` 命名空间中。 1. 如果 Azure 应用程序所有者想要轮换应用程序密钥,他们也需要在 Rancher 中进行轮换(因为在 Azure 中更改应用程序密钥时,Rancher 不会自动更新应用程序密钥)。在 Rancher 中,它存储在名为 `azureadconfig-applicationsecret` 的 Kubernetes 密文中,该密文位于 `cattle-global-data` 命名空间中。
1. **注意**:如果管理员使用现有 Azure AD 设置升级到 Rancher v2.6.7 并选择了禁用身份验证提供程序,他们将无法恢复以前的设置,也无法设置使用旧流程重新设置 Azure AD。然后,管理员需要使用新的身份验证流程重新注册。Rancher 现在使用了新的 Graph API,因此,用户需要在 Azure 门户中设置[适当的权限](#3-设置-rancher-所需的权限)。 1. **注意**:如果管理员使用现有 Azure AD 设置升级到 Rancher v2.7.0+ 并选择了禁用身份验证提供程序,他们将无法恢复以前的设置,也无法设置使用旧流程重新设置 Azure AD。然后,管理员需要使用新的身份验证流程重新注册。Rancher 现在使用了新的 Graph API,因此,用户需要在 Azure 门户中设置[适当的权限](#3-设置-rancher-所需的权限)。
#### Global: #### Global:
Rancher 字段 | 已弃用端点 | Rancher 字段 | 已弃用的端点 |
---------------- | ------------------------------------------------------------- ---------------- | -------------------------------------------------------------
Auth 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/authorize | Auth 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/authorize |
端点 | https://login.microsoftonline.com/ | 端点 | https://login.microsoftonline.com/ |
Graph 端点 | https://graph.windows.net/ | Graph 端点 | https://graph.windows.net/ |
Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token | Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token |
---
| Rancher 字段 | 新端点 | | Rancher 字段 | 新端点 |
---------------- | ------------------------------------------------------------------ ---------------- | ------------------------------------------------------------------
@@ -278,13 +259,12 @@ Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token
#### 中国: #### 中国:
Rancher 字段 | 已弃用端点 | Rancher 字段 | 已弃用的端点 |
---------------- | ---------------------------------------------------------- ---------------- | ----------------------------------------------------------
Auth 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/authorize | Auth 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/authorize |
端点 | https://login.chinacloudapi.cn/ | 端点 | https://login.chinacloudapi.cn/ |
Graph 端点 | https://graph.chinacloudapi.cn/ | Graph 端点 | https://graph.chinacloudapi.cn/ |
Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token | Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token |
---
| Rancher 字段 | 新端点 | | Rancher 字段 | 新端点 |
---------------- | ------------------------------------------------------------------------- ---------------- | -------------------------------------------------------------------------
@@ -294,22 +274,16 @@ Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token
| Token 端点 | https://login.partner.microsoftonline.cn/{tenantID}/oauth2/v2.0/token | | Token 端点 | https://login.partner.microsoftonline.cn/{tenantID}/oauth2/v2.0/token |
</TabItem> ## 已弃用的 Azure AD Graph API
<TabItem value="Rancher v2.6.0 - v2.6.6">
## Azure AD Graph API
> **重要提示**: > **重要提示**:
> >
> - [Azure AD Graph API](https://docs.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview) 已于 2022 年 6 月弃用,并将于 2022 年底停用。我们将更新我们的文档,以便在停用时向社区提供建议。Rancher 现在使用 [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/use-the-api) 来将 Azure AD 设置为外部身份验证提供程序。 > - [Azure AD Graph API](https://docs.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview) 已于 2022 年 6 月弃用,并将于 2022 年底停用。我们将更新我们的文档,以便在停用时向社区提供建议。Rancher 现在使用 [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/use-the-api) 来将 Azure AD 设置为外部身份验证提供程序。
> >
> >
> - 对于想要迁移的新用户或现有用户,请参阅 <a href="#microsoft-graph-api/" target="_blank">Rancher v2.6.7</a> 选项卡。 > - 对于想要迁移的新用户或现有用户,请参阅流程说明 - <a href="#microsoft-graph-api/" target="_blank">Rancher v2.7.0+</a>。
> >
> >
> - 对于在 Azure AD Graph API 停用后不希望升级到 v2.6.7 的现有用户,他们需要: > - 对于在 Azure AD Graph API 停用后不希望升级到 v2.7.0+ 的现有用户,他们需要:
> - 使用内置的 Rancher 身份验证,或者 > - 使用内置的 Rancher 身份验证,或者
> - 使用另一个第三方身份验证系统并在 Rancher 中进行设置。请参阅[身份验证文档](../../../../pages-for-subheaders/authentication-config.md),了解如何配置其他开放式身份验证提供程序。 > - 使用另一个第三方身份验证系统并在 Rancher 中进行设置。请参阅[身份验证文档](../../../../pages-for-subheaders/authentication-config.md),了解如何配置其他开放式身份验证提供程序。
</TabItem>
</Tabs>
@@ -31,26 +31,24 @@ kubectl create clusterrolebinding cluster-admin-binding \
默认情况下,GKE 用户没有此权限,因此你需要在注册 GKE 集群之前运行该命令。要详细了解 GKE RBAC,请单击[此处](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control)。 默认情况下,GKE 用户没有此权限,因此你需要在注册 GKE 集群之前运行该命令。要详细了解 GKE RBAC,请单击[此处](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control)。
如果你正在注册 K3s 集群,请确保 `cluster.yml` 是可读的。默认情况下它受到保护。详情请参考[配置 K3s 集群以导入到 Rancher](#配置-k3s-集群以在-rancher-中启用注册)。 ### EKS、AKS 和 GKE 集群
### EKS 集群 EKS、AKS 和 GKE 集群必须至少有一个托管节点组才能导入 Rancher 或通过 Rancher 进行配置。
EKS 集群必须至少有一个托管节点组才能导入 Rancher 或通过 Rancher 进行配置。
## 注册集群 ## 注册集群
1. 点击 **☰ > 集群管理**。 1. 点击 **☰ > 集群管理**。
1. 在**集群**页面上,单击**导入集群**。 2. 在**集群**页面上,单击**导入集群**。
1. 选择集群类型。 3. 选择集群类型。
1. 使用**成员角色**为集群配置用户授权。点击**添加成员**添加可以访问集群的用户。使用**角色**下拉菜单为每个用户设置权限。 4. 使用**成员角色**为集群配置用户授权。点击**添加成员**添加可以访问集群的用户。使用**角色**下拉菜单为每个用户设置权限。
1. 如果你在 Rancher 中导入一个通用 Kubernetes 集群,请执行以下步骤:<br/> 5. 如果你在 Rancher 中导入一个通用 Kubernetes 集群,请执行以下步骤:<br/>
a. 点击**集群选项**下的 **Agent 环境变量**,为 [rancher cluster agent](../launch-kubernetes-with-rancher/about-rancher-agents.md) 设置环境变量。你可以使用键值对设置环境变量。如果 Rancher Agent 需要使用代理与 Rancher Server 通信,则可以使用 Agent 环境变量设置 `HTTP_PROXY`,`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。<br/> a. 点击**集群选项**下的 **Agent 环境变量**,为 [rancher cluster agent](../launch-kubernetes-with-rancher/about-rancher-agents.md) 设置环境变量。你可以使用键值对设置环境变量。如果 Rancher Agent 需要使用代理与 Rancher Server 通信,则可以使用 Agent 环境变量设置 `HTTP_PROXY`,`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。<br/>
b. 启用项目网络隔离,确保集群支持 Kubernetes `NetworkPolicy` 资源。用户可以通过**项目网络隔离**选项下的**高级选项**下拉菜单进行操作。 b. 启用项目网络隔离,确保集群支持 Kubernetes `NetworkPolicy` 资源。用户可以通过**项目网络隔离**选项下的**高级选项**下拉菜单进行操作。
1. 单击**创建**。 6. 单击**创建**。
1. 此处会显示 `cluster-admin` 权限的先决条件(参见上文的**先决条件**),其中包括满足先决条件的示例命令。 7. 此处会显示 `cluster-admin` 权限的先决条件(参见上文的**先决条件**),其中包括满足先决条件的示例命令。
1. 将 `kubectl` 命令复制到剪贴板,并在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。如果你不确定配置是否正确,请在运行 Rancher 显示的命令之前运行 `kubectl get nodes` 进行验证。 8. 将 `kubectl` 命令复制到剪贴板,并在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。如果你不确定配置是否正确,请在运行 Rancher 显示的命令之前运行 `kubectl get nodes` 进行验证。
1. 如果你使用自签名证书,你将收到 `certificate signed by unknown authority` 的消息。要解决此验证问题,请将 Rancher 中显示的以 `curl` 开头的命令复制到剪贴板。然后在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。 9. 如果你使用自签名证书,你将收到 `certificate signed by unknown authority` 的消息。要解决此验证问题,请将 Rancher 中显示的以 `curl` 开头的命令复制到剪贴板。然后在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。
1. 在节点上运行完命令后,单击**完成**。 10. 在节点上运行完命令后,单击**完成**。
**结果**: **结果**:
@@ -65,29 +63,13 @@ EKS 集群必须至少有一个托管节点组才能导入 Rancher 或通过 Ran
::: :::
### 配置 K3s 集群以在 Rancher 中启用注册 ### 使用 Terraform 配置导入的 EKS、AKS 或 GKE 集群
K3s server 需要配置为允许写入 kubeconfig 文件。 你**仅**需要定义 Rancher 使用 Terraform 导入 EKS、AKS 或 GKE 集群所需的最少字段。请谨记这点,因为 Rancher 会使用用户提供的任何配置覆盖集群的配置。
这可以通过在安装期间传递 `--write-kubeconfig-mode 644` 作为标志来完成:
```
$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
```
你也可以使用 `K3S_KUBECONFIG_MODE` 环境变量来指定该选项:
```
$ curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s -
```
### 使用 Terraform 配置导入的 EKS 集群
你**仅**需要定义 Rancher 使用 Terraform 导入 EKS 集群所需的最少字段。请谨记这点,因为 Rancher 会使用用户提供的任何配置覆盖 EKS 集群中的配置。
:::caution :::caution
即使当前 EKS 集群的配置与用户提供的配置之间只存在微小差异,但是微小的差异也有可能产生很大的影响。 即使当前集群的配置与用户提供的配置之间只存在微小差异,但是微小的差异也有可能产生很大的影响。
::: :::
@@ -113,13 +95,15 @@ resource "rancher2_cluster" "my-eks-to-import" {
} }
``` ```
你可以在 [Rancher2 Terraform Provider 文档](https://registry.terraform.io/providers/rancher/rancher2/latest/docs/resources/cluster)中找到其他云提供商的更多示例。
## 对注册集群的管理能力 ## 对注册集群的管理能力
Rancher 管理注册集群的范围取决于集群的类型。 Rancher 管理注册集群的范围取决于集群的类型。
- [所有已注册集群的功能](#2-5-8-所有已注册集群的功能) - [所有已注册集群的功能](#所有已注册集群的功能)
- [已注册 K3s 集群的附加功能](#2-5-8-已注册-k3s-集群的附加功能) - [已注册 RKE2 和 K3s 集群的附加功能](#已注册-rke2-和-k3s-集群的附加功能)
- [已注册的 EKS 和 GKE 集群的附加功能](#已注册的-eks-和-gke-集群的附加功能) - [已注册 EKS, AKS 和 GKE 集群的附加功能](#已注册-eks-aks-和-gke-集群的附加功能)
### 所有已注册集群的功能 ### 所有已注册集群的功能
@@ -131,27 +115,28 @@ Rancher 管理注册集群的范围取决于集群的类型。
- 启用 [Istio](../../../pages-for-subheaders/istio.md) - 启用 [Istio](../../../pages-for-subheaders/istio.md)
- 管理项目和工作负载 - 管理项目和工作负载
### 已注册 K3s 集群的附加功能 ### 已注册 RKE2 和 K3s 集群的附加功能
[K3s](https://rancher.com/docs/k3s/latest/en/) 是一个轻量且完全兼容的 Kubernetes 发行版。 [K3s](https://rancher.com/docs/k3s/latest/en/) 是用于边缘安装的轻量级、完全兼容的 Kubernetes 发行版。
[RKE2](https://docs.rke2.io) 是 Rancher 用于数据中心和云安装的下一代 Kubernetes 发行版。
K3s 集群注册到 Rancher 后,Rancher 会将它识别为 K3s。Rancher UI 将开放[所有已注册集群](#所有已注册集群的功能)的功能,以及以下用于编辑和升级集群的功能: RKE2 或 K3s 集群注册到 Rancher 后,Rancher 会识别它。Rancher UI 将开放[所有已注册集群](#所有已注册集群的功能)的功能,以及以下用于编辑和升级集群的功能:
- [升级 K3s 版本](../../../getting-started/installation-and-upgrade/upgrade-and-roll-back-kubernetes.md) - [升级 Kubernetes 版本](../../../getting-started/installation-and-upgrade/upgrade-and-roll-back-kubernetes.md)的能力
- 配置能同时升级的最大节点数 - 配置能同时升级的最大节点数
- 查看 K3s 集群的配置参数和用于启动集群中每个节点的环境变量的只读版本 - 查看集群的配置参数和用于启动集群中每个节点的环境变量的只读版本
### 已注册的 EKS 和 GKE 集群的附加功能 ### 已注册 EKS, AKS 和 GKE 集群的附加功能
如果你注册了 Amazon EKS 或 GKE 集群,Rancher 将视其为在 Rancher 中创建的集群。 如果你注册了 Amazon EKS、Azure AKS 或 GKE 集群,Rancher 将视其为在 Rancher 中创建的集群。
你现在可以将 Amazon EKS 和 GKE 集群注册到 Rancher。在大多数情况下,注册的集群和在 Rancher UI 中创建的集群的处理方式相同(除了删除)。 你现在可以将 Amazon EKS、Azure AKS 和 GKE 集群注册到 Rancher。在大多数情况下,注册的集群和在 Rancher UI 中创建的集群的处理方式相同(除了删除)。
删除在 Rancher 中创建的 EKS 或 GKE 集群后,该集群将被销毁。删除在 Rancher 中注册集群时,它与 Rancher Server 会断开连接,但它仍然存在。你仍然可以像在 Rancher 中注册之前一样访问它。 删除在 Rancher 中创建的 EKS、AKS 或 GKE 集群后,该集群将被销毁。删除在 Rancher 中注册集群时,它与 Rancher Server 会断开连接,但它仍然存在。你仍然可以像在 Rancher 中注册之前一样访问它。
[此页面](../../../pages-for-subheaders/kubernetes-clusters-in-rancher-setup.md)上的表格中列出了已注册集群的功能。 [此页面](../../../pages-for-subheaders/kubernetes-clusters-in-rancher-setup.md)上的表格中列出了已注册集群的功能。
## 配置 K3s 集群升级 ## 配置 RKE2 和 K3s 集群升级
:::tip :::tip
@@ -164,13 +149,13 @@ Kubernetes 的最佳实践是在升级之前备份集群。使用外部数据库
- **controlplane 并发**:可以同时升级的最大服务器节点数;也是最大不可用服务器节点数 - **controlplane 并发**:可以同时升级的最大服务器节点数;也是最大不可用服务器节点数
- **Worker 并发**:可以同时升级的最大 worker 节点数;也是最大不可用 worker 节点数 - **Worker 并发**:可以同时升级的最大 worker 节点数;也是最大不可用 worker 节点数
在 K3s 文档中,controlplane 节点也称为 server 节点。Kubernetes master 节点运行在这些节点上,用于维护集群的状态。在 K3s 中,controlplane 节点默认能够让工作负载调度到节点上。 在 RKE2 和 K3s 文档中,control plane 节点也称为 Server 节点。Kubernetes master 节点运行在这些节点上,用于维护集群的状态。默认情况下,control plane 节点默认能够让工作负载调度到节点上。
类似的,在 K3s 文档中,具有 worker 角色的节点称为 Agent 节点。默认情况下,部署在集群中的任何工作负载或 Pod 都能调度到这些节点上。 类似的,在 RKE2 和 K3s 文档中,具有 worker 角色的节点称为 Agent 节点。默认情况下,部署在集群中的任何工作负载或 Pod 都能调度到这些节点上。
## 已注册 K3s 集群的 Logging 调试和故障排除 ## 已注册 RKE2 和 K3s 集群的 Logging 调试和故障排除
节点由运行在下游集群中的 `system-upgrade-controller` 升级。基于集群配置,Rancher 部署了两个[计划](https://github.com/rancher/system-upgrade-controller#example-upgrade-plan)来升级 K3s 节点,分别用于升级 controlplane 节点和 worker 节点。`system-upgrade-controller` 会按照计划对节点进行升级。 节点由运行在下游集群中的 `system-upgrade-controller` 升级。基于集群配置,Rancher 部署了两个[计划](https://github.com/rancher/system-upgrade-controller#example-upgrade-plan)来升级节点,分别用于升级 control plane 节点和 worker 节点。`system-upgrade-controller` 会按照计划对节点进行升级。
要在 `system-upgrade-controller` deployment 上启用调试日志记录,请编辑 [configmap](https://github.com/rancher/system-upgrade-controller/blob/50a4c8975543d75f1d76a8290001d87dc298bdb4/manifests/system-upgrade-controller.yaml#L32) 以将调试环境变量设置为 true。然后重启 `system-upgrade-controller` pod。 要在 `system-upgrade-controller` deployment 上启用调试日志记录,请编辑 [configmap](https://github.com/rancher/system-upgrade-controller/blob/50a4c8975543d75f1d76a8290001d87dc298bdb4/manifests/system-upgrade-controller.yaml#L32) 以将调试环境变量设置为 true。然后重启 `system-upgrade-controller` pod。
@@ -229,18 +214,18 @@ _从 v2.6.3 起可用_
cluster: Default cluster: Default
``` ```
1. 将以下内容添加到配置文件中(如果文件不存在,则创建一个)。请注意,默认位置是 `/etc/rancher/{rke2,k3s}/config.yaml`: 2. 将以下内容添加到配置文件中(如果文件不存在,则创建一个)。请注意,默认位置是 `/etc/rancher/{rke2,k3s}/config.yaml`:
```yaml ```yaml
kube-apiserver-arg: kube-apiserver-arg:
- authentication-token-webhook-config-file=/var/lib/rancher/{rke2,k3s}/kube-api-authn-webhook.yaml - authentication-token-webhook-config-file=/var/lib/rancher/{rke2,k3s}/kube-api-authn-webhook.yaml
``` ```
1. 运行以下命令: 3. 运行以下命令:
sudo systemctl stop {rke2,k3s}-server sudo systemctl stop {rke2,k3s}-server
sudo systemctl start {rke2,k3s}-server sudo systemctl start {rke2,k3s}-server
1. 最后,你**必须**返回 Rancher UI 并在那里编辑导入的集群,从而完成 ACE 启用。单击 **⋮ > 编辑配置**,然后单击**集群配置**下的**网络**选项卡。最后,单击**授权端点**的**启用**按钮。启用 ACE 后,你可以输入完全限定的域名 (FQDN) 和证书信息。 4. 最后,你**必须**返回 Rancher UI 并在那里编辑导入的集群,从而完成 ACE 启用。单击 **⋮ > 编辑配置**,然后单击**集群配置**下的**网络**选项卡。最后,单击**授权端点**的**启用**按钮。启用 ACE 后,你可以输入完全限定的域名 (FQDN) 和证书信息。
:::note :::note
@@ -250,7 +235,7 @@ _从 v2.6.3 起可用_
## 注释已注册的集群 ## 注释已注册的集群
Rancher 没有注册的 Kubernetes 集群(除了 K3s Kubernetes 集群之外)如何预置或配置集群的任何信息。 Rancher 没有注册的 Kubernetes 集群(除了 RKE2 和 K3s Kubernetes 集群之外)如何预置或配置集群的任何信息。
因此,当 Rancher 注册集群时,它假设某些功能是默认禁用的。Rancher 这样做是为了避免向用户暴露 UI 选项(即使注册的集群没有启用这些功能)。 因此,当 Rancher 注册集群时,它假设某些功能是默认禁用的。Rancher 这样做是为了避免向用户暴露 UI 选项(即使注册的集群没有启用这些功能)。
@@ -289,10 +274,10 @@ Rancher 没有注册的 Kubernetes 集群(除了 K3s Kubernetes 集群之外
要注释已注册的集群: 要注释已注册的集群:
1. 点击 **☰ > 集群管理**。 1. 点击 **☰ > 集群管理**。
1. 在**集群**页面上,转到要注释的自定义集群,然后单击 **⋮ > 编辑配置**。 2. 在**集群**页面上,转到要注释的自定义集群,然后单击 **⋮ > 编辑配置**。
1. 展开**标签 & 注释**。 3. 展开**标签 & 注释**。
1. 单击**添加注释**。 4. 单击**添加注释**。
1. 使用 `capabilities/<capability>: <value>` 格式向集群添加注释,其中 `value` 是要使用注释覆盖的集群功能。在这种情况下,Rancher 在你添加注释之前都不知道集群的任何功能。 5. 使用 `capabilities/<capability>: <value>` 格式向集群添加注释,其中 `value` 是要使用注释覆盖的集群功能。在这种情况下,Rancher 在你添加注释之前都不知道集群的任何功能。
1. 单击**保存**。 6. 单击**保存**。
**结果**:注释并不是给集群提供功能,而是告知 Rancher 集群具有这些功能。 **结果**:注释并不是给集群提供功能,而是告知 Rancher 集群具有这些功能。
@@ -31,7 +31,7 @@ _kubeconfig 文件_ 是与 kubectl 命令行工具(或其他客户端)结合
### 关于 kube-api-auth 身份验证 Webhook ### 关于 kube-api-auth 身份验证 Webhook
`kube-api-auth` 微服务是为[授权集群端点](../../../../pages-for-subheaders/rancher-manager-architecture.md#4-授权集群端点)提供用户认证功能而部署的,该功能仅适用于[RKE 集群](../../../../pages-for-subheaders/launch-kubernetes-with-rancher.md)。当你使用 `kubectl` 访问下游集群时,集群的 Kubernetes API server 会使用 `kube-api-auth` 服务作为 webhook 对你进行身份验证。 `kube-api-auth` 微服务是为[授权集群端点](../../../../pages-for-subheaders/rancher-manager-architecture.md#4-授权集群端点)提供用户认证功能而部署的。当你使用 `kubectl` 访问下游集群时,集群的 Kubernetes API server 会使用 `kube-api-auth` 服务作为 webhook 对你进行身份验证。
在集群配置期间会部署 `/etc/kubernetes/kube-api-authn-webhook.yaml` 文件,并使用 `--authentication-token-webhook-config-file=/etc/kubernetes/kube-api-authn-webhook.yaml` 配置 `kube-apiserver`。这会将 `kube-apiserver` 配置为通过查询 `http://127.0.0.1:6440/v1/authenticate` 来确定持有者 token 的身份验证。 在集群配置期间会部署 `/etc/kubernetes/kube-api-authn-webhook.yaml` 文件,并使用 `--authentication-token-webhook-config-file=/etc/kubernetes/kube-api-authn-webhook.yaml` 配置 `kube-apiserver`。这会将 `kube-apiserver` 配置为通过查询 `http://127.0.0.1:6440/v1/authenticate` 来确定持有者 token 的身份验证。
@@ -40,9 +40,9 @@ Rancher 使用以下 Kubernetes 发行版:
### K3s 指南 ### K3s 指南
| Kubernetes 版本 | CIS Benchmark 版本 | 自我评估指南 | 强化指南 | | 类型 | Kubernetes 版本 | CIS Benchmark 版本 | 自我评估指南 | 强化指南 |
| ------------------ | --------------------- | --------------------- | ---------------- | | ---- | ------------------ | --------------------- | --------------------- | ---------------- |
| Kubernetes v1.21 和 v1.22 | CIS v1.6 | [链接](https://rancher.com/docs/k3s/latest/en/security/self_assessment/) | [链接](https://rancher.com/docs/k3s/latest/en/security/hardening_guide/) | | 独立 K3s | Kubernetes v1.21 和 v1.22 | CIS v1.6 | [链接](https://docs.k3s.io/security/self-assessment) | [链接](https://docs.k3s.io/security/hardening-guide) |
## 使用 SELinux 的 Rancher ## 使用 SELinux 的 Rancher
@@ -0,0 +1,52 @@
---
title: Rancher v2.7 的自我评估和强化指南
---
Rancher 为每个受支持的 Rancher Kubernetes 发行版提供了对应的安全强化指南。
## Rancher Kubernetes 发行版
Rancher 使用以下 Kubernetes 发行版:
- [**RKE**](https://rancher.com/docs/rke/latest/en/):全称是 Rancher Kubernetes Engine,一个 CNCF 认证的 Kubernetes 发行版,能完全在 Docker 容器中运行。
- [**RKE2**](https://docs.rke2.io/):一个完全合规的 Kubernetes 发行版,专注于安全和合规性。
- [**K3s**](https://rancher.com/docs/k3s/latest/en/):一个完全符合要求的轻量级 Kubernetes 发行版。它易于安装,仅需要上游 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。
要在 Rancher 发行版之外强化 Kubernetes 集群,请参阅你的 Kubernetes 提供商文档。
## 强化指南和 Benchmark 版本
这些指南已与 Rancher 2.7 版本一起测试。每个自我评估指南都附有强化指南,并在特定的 Kubernetes 版本和 CIS Benchmark 版本上进行了测试。如果 CIS Benchmark 测试尚未针对你的 Kubernetes 版本进行验证,你可以先使用现有指南。
### RKE 指南
| Kubernetes 版本 | CIS Benchmark 版本 | 自我评估指南 | 强化指南 |
| ------------------ | --------------------- | --------------------- | ---------------- |
| Kubernetes v1.18 到 v1.23 | CIS v1.6 | [链接](../reference-guides/rancher-security/rancher-v2.6-hardening-guides/rke1-self-assessment-guide-with-cis-v1.6-benchmark.md) | [链接](../reference-guides/rancher-security/rancher-v2.6-hardening-guides/rke1-hardening-guide-with-cis-v1.6-benchmark.md) |
:::note
- Kubernetes v1.19 和 v1.20 的 CIS v1.20 Benchmark 版本尚未作为配置文件发布在 Rancher 的 CIS Benchmark Chart 中。
:::
### RKE2 指南
| 类型 | Kubernetes 版本 | CIS Benchmark 版本 | 自我评估指南 | 强化指南 |
| ---- | ------------------ | --------------------- | --------------------- | ---------------- |
| Rancher 配置的 RKE2 集群 | Kubernetes v1.21 到 v1.23 | CIS v1.6 | [链接](../reference-guides/rancher-security/rancher-v2.6-hardening-guides/rke2-self-assessment-guide-with-cis-v1.6-benchmark.md) | [链接](../reference-guides/rancher-security/rancher-v2.6-hardening-guides/rke2-hardening-guide-with-cis-v1.6-benchmark.md) |
| 独立 RKE2 | Kubernetes v1.21 到 v1.23 | CIS v1.6 | [链接](https://docs.rke2.io/security/cis_self_assessment16/) | [链接](https://docs.rke2.io/security/hardening_guide/) |
### K3s 指南
| 类型 | Kubernetes 版本 | CIS Benchmark 版本 | 自我评估指南 | 强化指南 |
| ---- | ------------------ | --------------------- | --------------------- | ---------------- |
| Rancher 配置的 K3s 集群 | Kubernetes v1.21 到 v1.24 | CIS v1.20 和 v1.23 | [CIS v1.20](../reference-guides/rancher-security/rancher-v2.7-hardening-guides/k3s-self-assessment-guide-with-cis-v1.20-benchmark.md) 和 [CIS v1.23](../reference-guides/rancher-security/rancher-v2.7-hardening-guides/k3s-self-assessment-guide-with-cis-v1.23-benchmark.md) | [链接](../reference-guides/rancher-security/rancher-v2.7-hardening-guides/k3s-hardening-guide-with-cis-benchmark.md) |
| 独立 K3s | Kubernetes v1.21 和 v1.22 | CIS v1.6 | [链接](https://docs.k3s.io/security/self-assessment) | [链接](https://docs.k3s.io/security/hardening-guide) |
## 使用 SELinux 的 Rancher
[安全增强型 Linux (SELinux)](https://en.wikipedia.org/wiki/Security-Enhanced_Linux) 是对 Linux 的安全增强。被政府机构使用之后,SELinux 已成为行业标准,并在 RHEL 和 CentOS 上默认启用。
要配合使用 Rancher 与 SELinux,我们建议你根据[此页面](selinux-rpm.md#安装-rancher-selinux-rpm)的安装说明安装 `rancher-selinux` RPM。
@@ -48,7 +48,7 @@ $ kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem --from-file=cacerts.pem
``` ```
要更新现有的 `tls-ca` 密文: 要更新现有的 `tls-ca` Secret:
``` ```
$ kubectl -n cattle-system create secret generic tls-ca \ $ kubectl -n cattle-system create secret generic tls-ca \
@@ -104,7 +104,7 @@ helm upgrade rancher rancher-stable/rancher \
#### 为什么要执行这一步骤? #### 为什么要执行这一步骤?
如果 Rancher 配置了私有 CA 签名的证书时,CA 证书链会下载到 Rancher Agent 容器中。代理会对下载证书的校验和及 `CATTLE_CA_CHECKSUM` 环境变量进行比较。如果私有 CA 证书在 Rancher Server 端更改了,环境变量 `CATTLE_CA_CHECKSUM` 必须相应进行更新。 如果 Rancher 配置了私有 CA 签名的证书时,CA 证书链会下载到 Rancher Agent 容器中。Agent 会对下载证书的校验和及 `CATTLE_CA_CHECKSUM` 环境变量进行比较。如果私有 CA 证书在 Rancher Server 端更改了,环境变量 `CATTLE_CA_CHECKSUM` 必须相应进行更新。
#### 可使用的方法 #### 可使用的方法
@@ -135,7 +135,7 @@ $ curl -k -s -fL <RANCHER_SERVER>/v3/settings/cacerts | jq -r .value > cacert.tm
$ sha256sum cacert.tmp | awk '{print $1}' $ sha256sum cacert.tmp | awk '{print $1}'
``` ```
为每个下游集群使用 Kubeconfig 更新两个 Agent 部署的环境变量: 为每个下游集群使用 Kubeconfig 更新两个 Agent 部署的环境变量。
``` ```
$ kubectl edit -n cattle-system ds/cattle-node-agent $ kubectl edit -n cattle-system ds/cattle-node-agent
@@ -224,7 +224,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
> **重要提示**:管理员应该在他们提交下面第 4 步中的端点迁移之前创建一个[备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。 > **重要提示**:管理员应该在他们提交下面第 4 步中的端点迁移之前创建一个[备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。
1. 按照[此处](#3-设置-rancher-所需的权限)所述更新 Azure AD 应用注册的权限 1. 按照[此处](#3-设置-rancher-所需的权限)所述更新 Azure AD 应用注册的权限。
(**重要**)。 (**重要**)。
1. 登录到 Rancher。 1. 登录到 Rancher。