Merge branch 'main' into release/v2.7.2

This commit is contained in:
Marty Hernandez Avedon
2023-04-10 16:17:10 -04:00
committed by GitHub
46 changed files with 7177 additions and 1124 deletions
@@ -18,7 +18,7 @@ title: 部署带有 Ingress 的工作负载
1. 单击**创建**。
1. 点击 **Deployment**。
1. 为工作负载设置**名称**。
1. 在 **Docker 镜像**字段中,输入 `rancher/hello-world`。注意区分大小写。
1. 在**容器镜像**字段中,输入 `rancher/hello-world`。注意区分大小写。
1. 在 `Service Type` 点击 **Add Port** 和 `Cluster IP`,并在 **Private Container Port** 字段中输入`80`。你可以将 `Name` 留空或指定名称。通过添加端口,你可以访问集群内外的应用。有关详细信息,请参阅 [Service](../../../pages-for-subheaders/workloads-and-pods.md#services)。
1. 单击**创建**。
@@ -3,12 +3,14 @@ title: 配置 Azure AD
---
<Tabs>
<TabItem value="Rancher v2.6.7">
<TabItem value="Rancher v2.6.7+">
## Microsoft Graph API
Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用户](#新用户设置)使用新实例来配置 Azure AD,并帮助现有 Azure 应用所有者[迁移到新流程](#从-azure-ad-graph-api-迁移到-microsoft-graph-api)。
Rancher 中的 Microsoft Graph API 流程正在不断发展。建议你使用最新的 2.6 补丁版本,该版本仍在积极开发中,并将持续获得新功能和改进。
### 新用户设置
如果你在 Azure 中托管了一个 Active Directory(AD)实例,你可以将 Rancher 配置为允许你的用户使用 AD 账号登录。你需要在 Azure 和 Rancher 中进行 Azure AD 外部身份验证。
@@ -26,7 +28,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
:::tip
在开始之前,我们建议你创建一个空文本文件。你可以将 Azure 相关的值复制到该文件,然后再粘贴到 Rancher 中。
在开始之前,打开两个浏览器选项卡:一个用于 Rancher,另一个用于 Azure 门户。这样,你可以将门户的配置值复制并粘贴到 Rancher 中。
:::
@@ -39,9 +41,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
1. 使用搜索功能打开 **App registrations** 服务。
![Open App Registrations](/img/search-app-registrations.png)
1. 单击 **New registrations** 并完成 **Create** 表单。
1. 点击 **New registration** 并填写表单。
![New App Registration](/img/new-app-registration.png)
@@ -80,20 +80,17 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
![Open Rancher Registration](/img/open-rancher-app-reg.png)
1. 在左侧的导航窗格中,单击 **Certificates and Secrets**。
1. 在导航窗格中,单击 **Certificates & secrets**。
1. 单击 **New client secret**。
![创建新的客户端密文](/img/new-client-secret.png)
1. 输入 **Description**(例如 `Rancher`)。
1. 从 **Expires** 下的选项中选择密钥的持续时间。此下拉菜单设置的是密钥的到期日期。日期越短则越安全,但是在到期后你需要创建新密钥。
1. 从 **Expires** 下的选项中选择持续时间。此下拉菜单设置的是密钥的到期日期。日期越短则越安全,但需要你更频繁地创建新密钥。
请注意,如果检测到应用程序 Secret 已过期,用户将无法登录 Rancher。为避免此问题,请在 Azure 中轮换 Secret 并在过期前在 Rancher 中更新它。
1. 单击 **Add**(无需输入值,保存后会自动填充)。
<a id="secret"></a>
1. 将键值复制保存到[空文本文件](#tip)。
稍后你将在 Rancher UI 中输入此密钥作为你的 **Application Secret**。
你将无法在 Azure UI 中再次访问该键值。
1. 稍后你将在 Rancher UI 中输入此密钥作为你的 **Application Secret**。由于你将无法在 Azure UI 中再次访问键值,因此请在其余设置过程中保持打开此窗口。
#### 3. 设置 Rancher 所需的权限
@@ -101,63 +98,75 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
:::caution
请确保你设置了 Application 和 NOT Delegated 的权限类型。否则,你可能无法登录 Azure AD。禁用/重新启用 Azure AD 无法解决此问题,你需要等待一小时或手动删除缓存值。
确保你设置了 Application 权限,而*不是* Delegated 权限。否则,你将无法登录 Azure AD。
:::
1. 从左侧的导航窗格中,选择 **API permissions**。
![Open Required Permissions](/img/select-req-permissions.png)
1. 在导航窗格中,选择 **API permissions**。
1. 单击 **Add a permission**。
1. 在 **Microsoft Graph** 中,选择以下 **Application Permissions**:
- `Group.Read.All`
- `User.Read.All`
1. 从 Microsoft Graph API 中,选择以下 **Application Permissions**: `Directory.Read.All`。
![选择 API 权限](/img/api-permissions-2-6.png)
![选择 API 权限](/img/api-permissions.png)
1. 返回左侧导航栏中的 **API permissions**。在那里,单击 **Grant admin consent**。然后单击 **Yes**。
:::note
:::note
在 Rancher 2.6.7-2.6.10 版本中,你需要使用 `User.Read.All` 和 `Group.Read.All` 来获取权限。在 v2.6.11 中已更改为允许范围较小的权限(例如 `Directory.Read.All`)。
你必须以 Azure 管理员身份登录才能保存你的权限设置。
:::
:::
1. 返回导航栏中的 **API permissions**。在那里,单击 **Grant admin consent**。然后单击 **Yes**。该应用程序的权限应如下所示:
![Open Required Permissions](/img/select-req-permissions.png)
:::note
Rancher 不会验证你授予 Azure 应用程序的权限。你可以自由使用任何你所需的权限,只要这些权限允许 Rancher 使用 AD 用户和组。
具体来说,Rancher 需要允许以下操作的权限:
- 获取一个用户。
- 列出所有用户。
- 列出给定用户所属的组。
- 获取一个组。
- 列出所有组。
Rancher 执行这些操作来登录用户或搜索用户/组。请记住,权限必须是 `Application` 类型。
下面是几个满足 Rancher 需求的权限组合示例:
- `Directory.Read.All`
- `User.Read.All` 和 `GroupMember.Read.All`
- `User.Read.All` 和 `Group.Read.All`
:::
#### 4. 复制 Azure 应用数据
![Application ID](/img/app-configuration.png)
1. 获取你的 Rancher **租户 ID**。
1. 使用搜索打开 **App registrations**。
![Open App Registrations](/img/search-app-registrations.png)
1. 找到你为 Rancher 创建的项。
1. 复制 **Directory ID** 并粘贴到你的[文本文件](#tip)。
![Tenant ID](/img/tenant-id.png)
- 你将把这个值作为 **Tenant ID** 粘贴到 Rancher。
1. 复制 **Directory ID** 并将其作为 **Tenant ID** 粘贴到 Rancher 中。
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**(Rancher 将负责其余的工作)。
1. 你的端点选项通常是 [Standard](#global) 或 [China](#china)。对于这两个选项,你只需要输入 **Tenant ID**、**Application ID** 和 **Application Secret**。
![标准端点选项](/img/tenant-application-id-secret.png)
**对于自定义端点**:
**警告**:Rancher 不支持也不完全测试自定义端点。
**警告**:Rancher 未测试也未完全支持自定义端点。
你还需要手动输入 Graph、Token 和 Auth Endpoints。
@@ -165,7 +174,7 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
![点击端点](/img/endpoints.png)
- 将以下端点复制并粘贴到你的[文本文件](#tip)中(这些值将是你的 Rancher 端点值):确保复制端点的 v1 版本。
- 以下端点将是你的 Rancher 端点值。请使用这些端点的 v1 版本。
- **Microsoft Graph API endpoint**(Graph 端点)
- **OAuth 2.0 token endpoint (v1)**(Token 端点)
- **OAuth 2.0 authorization endpoint (v1)** (Auth 端点)
@@ -222,14 +231,19 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
### 从 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 月弃用并将于 2022 年底停用,因此用户应更新其 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) 已弃用并计划于 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 中更新端点
> **重要提示**:管理员应该在他们提交下面第 4 步中的端点迁移之前创建一个[备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。
:::caution
1. 按照[此处](#3-设置-rancher-所需的权限)所述更新 Azure AD 应用注册的权限。
(**重要**)。
管理员需要在迁移下述端点之前创建一个 [Rancher 备份](../../../new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher.md)。
:::
1. [更新](#3-设置-rancher-所需的权限) Azure AD 应用程序注册的权限。这个步骤非常关键。
1. 登录到 Rancher。
@@ -261,17 +275,20 @@ Microsoft Graph API 现在是设置 Azure AD 的流程。下文将帮助[新用
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-所需的权限)。
:::caution
如果你使用现有的 Azure AD 设置升级到 Rancher v2.6.7+,并选择了禁用认证提供程序,你将无法恢复以前的设置。你也无法使用旧流程设置 Azure AD。你需要使用新的认证流程重新注册。由于 Rancher 现在使用 Graph API,因此用户需要[在 Azure 门户中设置适当的权限](#3-设置-rancher-所需的权限)。
:::
#### Global:
Rancher 字段 | 已弃用端点
| Rancher 字段 | 已弃用的端点 |
---------------- | -------------------------------------------------------------
Auth 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/authorize
端点 | https://login.microsoftonline.com/
Graph 端点 | https://graph.windows.net/
Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token
---
| Auth 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/authorize |
| 端点 | https://login.microsoftonline.com/ |
| Graph 端点 | https://graph.windows.net/ |
| Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token |
| Rancher 字段 | 新端点 |
---------------- | ------------------------------------------------------------------
@@ -282,13 +299,12 @@ Token 端点 | https://login.microsoftonline.com/{tenantID}/oauth2/token
#### 中国:
Rancher 字段 | 已弃用端点
| Rancher 字段 | 已弃用的端点 |
---------------- | ----------------------------------------------------------
Auth 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/authorize
端点 | https://login.chinacloudapi.cn/
Graph 端点 | https://graph.chinacloudapi.cn/
Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token
---
| Auth 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/authorize |
| 端点 | https://login.chinacloudapi.cn/ |
| Graph 端点 | https://graph.chinacloudapi.cn/ |
| Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token |
| Rancher 字段 | 新端点 |
---------------- | -------------------------------------------------------------------------
@@ -301,19 +317,19 @@ Token 端点 | https://login.chinacloudapi.cn/{tenantID}/oauth2/token
</TabItem>
<TabItem value="Rancher v2.6.0 - v2.6.6">
## Azure AD Graph API
## 已弃用的 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) 已被弃用,Microsoft 将在 2023 年 6 月 30 日后随时停用它且不会另行通知。我们将更新我们的文档,以便在停用时向社区提供建议。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.6.7+</a>。
>
>
> - 对于在 Azure AD Graph API 停用后不希望升级到 v2.6.7 的现有用户,他们需要:
> - 使用内置的 Rancher 身份验证,或者
> - 使用另一个第三方身份验证系统并在 Rancher 中进行设置。请参阅[身份验证文档](../../../../pages-for-subheaders/authentication-config.md),了解如何配置其他开放式身份验证提供程序。
> - 如果你不想在 Azure AD Graph API 停用后升级到 v2.6.7+,你需要:
> - 使用内置的 Rancher 身份认证,或者
> - 使用另一个第三方身份认证系统并在 Rancher 中进行设置。请参阅[身份验证文档](../../../../pages-for-subheaders/authentication-config.md),了解如何配置其他开放式身份验证提供程序。
</TabItem>
</Tabs>
@@ -1,110 +0,0 @@
---
title: 克隆集群
---
如果你在 Rancher 中有一个集群并想将这个集群用作创建集群的模板,你可以使用 Rancher CLI 克隆集群的配置,编辑配置,然后使用这些配置来快速启动克隆的集群。
不支持复制已注册的集群。
| 集群类型 | 是否可克隆 |
|----------------------------------|---------------|
| [由基础设施提供商托管的节点](../../../pages-for-subheaders/use-new-nodes-in-an-infra-provider.md) | ✓ |
| [托管的 Kubernetes 提供商](../../../pages-for-subheaders/set-up-clusters-from-hosted-kubernetes-providers.md) | ✓ |
| [自定义集群](../../../pages-for-subheaders/use-existing-nodes.md) | ✓ |
| [已注册集群](../../new-user-guides/kubernetes-clusters-in-rancher-setup/register-existing-clusters.md) | |
:::caution
在复制集群的过程中,你将编辑一个包含所有集群设置的配置文件。但是,由于集群复制 **_not_** 大规模更改配置,因此我们建议仅编辑本文中明确列出的值。编辑其他值可能会使配置文件失效,从而导致集群部署失败。
:::
## 先决条件
下载并安装 [Rancher CLI](../../../pages-for-subheaders/cli-with-rancher.md)。如有必要,请[创建 API 持有者令牌](../../../reference-guides/user-settings/api-keys.md)。
## 1. 导出集群配置
首先,使用 Rancher CLI 导出要克隆的集群的配置。
1. 打开终端并转到 Rancher CLI 二进制文件所在的位置 `rancher`。
1. 运行以下命令以列出 Rancher 管理的集群:
./rancher cluster ls
1. 找到要克隆的集群,并将其资源 `ID` 或 `NAME` 复制到剪贴板。从此处开始,我们将资源 `ID` 或 `NAME` 称为 `<RESOURCE_ID>`,它在接下来用作占位符。
1. 运行以下命令以导出集群的配置:
./rancher clusters export <RESOURCE_ID>
**步骤结果**:已将克隆集群的 YAML 打印到终端。
1. 将 YAML 粘贴到新文件中。将文件另存为 `cluster-template.yml`(或任何其他名称,确保扩展名是 `.yml` 即可)。
## 2. 修改集群配置
使用文本编辑器为克隆集群修改 `cluster-template.yml` 中的集群配置。
:::note
集群配置参数必须嵌套在 `cluster.yml` 中的 `rancher_kubernetes_engine_config` 下。有关详细信息,请参阅 [Rancher 2.3.0+ 配置文件结构](../../../reference-guides/cluster-configuration/rancher-server-configuration/rke1-cluster-configuration.md#rancher-中的配置文件结构)。
:::
1. 在文本编辑器中打开 `cluster-template.yml`(或你重命名了的配置文件)。
:::caution
仅需编辑下面明确指出的集群配置项。此文件中列出的很多值均用于配置克隆的集群,因此编辑它们的值可能会中断配置过程。
:::
1. 如下例所示,在 `<CLUSTER_NAME>` 占位符处将原始集群的名称替换为唯一名称 (`<CLUSTER_NAME>`)。如果克隆的集群名称重复,则集群将无法成功配置。
```yml
Version: v3
clusters:
<CLUSTER_NAME>: # 输入唯一的名称
dockerRootDir: /var/lib/docker
enableNetworkPolicy: false
rancherKubernetesEngineConfig:
addonJobTimeout: 30
authentication:
strategy: x509
authorization: {}
bastionHost: {}
cloudProvider: {}
ignoreDockerVersion: true
```
1. 对于每个 `nodePools`,将原始节点池名称替换为 `<NODEPOOL_NAME>` 占位符处的唯一名称。如果克隆集群具有重复的节点池名称,则集群将无法成功配置。
```yml
nodePools:
<NODEPOOL_NAME>:
clusterId: do
controlPlane: true
etcd: true
hostnamePrefix: mark-do
nodeTemplateId: do
quantity: 1
worker: true
```
1. 完成后,保存并关闭配置。
## 3. 启动克隆的集群
将 `cluster-template.yml` 移动到 Rancher CLI 二进制文件所在的目录中。然后运行这个命令:
./rancher up --file cluster-template.yml
**结果**:开始配置你克隆的集群。输入 `./rancher cluster ls` 进行确认。
@@ -1,109 +0,0 @@
---
title: 创建 EKS 集群
---
Amazon EKS 为 Kubernetes 集群提供托管的 controlplane。Amazon EKS 跨多个可用区运行 Kubernetes controlplane 实例,以确保高可用性。Rancher 提供了一个直观的用户界面,用于管理和部署你运行在 Amazon EKS 中的 Kubernetes 集群。通过本指南,你将使用 Rancher 在你的 AWS 账户中快速轻松地启动 Amazon EKS Kubernetes 集群。有关 Amazon EKS 的更多信息,请参阅此[文档](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)。
## Amazon Web 服务的先决条件
:::caution
部署到 Amazon AWS 会产生费用。有关详细信息,请参阅 [EKS 定价页面](https://aws.amazon.com/eks/pricing/)。
:::
要在 EKS 上设置集群,你需要设置 Amazon VPC(虚拟私有云)。你还需要确保用于创建 EKS 集群的账号具有适当的[权限](#最小-eks-权限)。详情请参阅 [Amazon EKS 先决条件官方指南](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html#eks-prereqs)。
### Amazon VPC
你需要建立一个 Amazon VPC 来启动 EKS 集群。VPC 使你能够将 AWS 资源启动到你定义的虚拟网络中。你可以自己设置一个 VPC,并在 Rancher 中创建集群时提供它。如果你创建过程中没有提供,Rancher 将创建一个 VPC。详情请参阅[教程:为你的 Amazon EKS 集群创建具有公有和私有子网的 VPC](https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html)。
### IAM 策略
Rancher 需要访问你的 AWS 账户才能在 Amazon EKS 中预置和管理你的 Kubernetes 集群。你需要在 AWS 账户中为 Rancher 创建一个用户,并定义该用户可以访问的内容。
1. 按照[此处](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)的步骤创建具有编程访问权限的用户。
2. 创建一个 IAM 策略,定义该用户在 AWS 账户中有权访问的内容。请务必仅授予此用户所需的最小访问权限。[此处](#最小-eks-权限)列出了 EKS 集群所需的最低权限。请按照[此处](https://docs.aws.amazon.com/eks/latest/userguide/EKS_IAM_user_policies.html)的步骤创建 IAM 策略并将策略绑定到你的用户。
3. 最后,按照[此处](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey)的步骤为该用户创建访问密钥和密文密钥。
:::note 重要提示:
定期轮换访问密钥和密文密钥非常重要。有关详细信息,请参阅此[文档](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#rotating_access_keys_console)。
:::
有关 EKS 的 IAM 策略的更多详细信息,请参阅 [Amazon EKS IAM 策略、角色和权限的官方文档](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html)。
## 创建 EKS 集群
使用 Rancher 配置你的 Kubernetes 集群。
1. 点击 **☰ > 集群管理**。
1. 在**集群**页面上,单击**创建**。
1. 选择 **Amazon EKS**。
1. 输入**集群名称**。
1. 使用**成员角色**为集群配置用户授权。点击**添加成员**添加可以访问集群的用户。使用**角色**下拉菜单为每个用户设置权限。
1. 完成表单的其余部分。如需帮助,请参阅[配置参考](#eks-集群配置参考)。
1. 单击**创建**。
**结果**:
你已创建集群,集群的状态是**配置中**。Rancher 已在你的集群中。
当集群状态变为 **Active** 后,你可访问集群。
**Active** 状态的集群会分配到两个项目:
- `Default`:包含 `default` 命名空间
- `System`:包含 `cattle-system`,`ingress-nginx`,`kube-public` 和 `kube-system` 命名空间。
## EKS 集群配置参考
有关 EKS 集群配置选项的完整列表,请参阅[此页面](../reference-guides/cluster-configuration/rancher-server-configuration/eks-cluster-configuration.md)。
## 架构
下图展示了 Rancher 2.x 的上层架构。下图中,Rancher Server 管理两个 Kubernetes 集群,其中一个由 RKE 创建,另一个由 EKS 创建。
<figcaption>通过 Rancher 的认证代理管理 Kubernetes 集群</figcaption>
![架构](/img/rancher-architecture-rancher-api-server.svg)
## AWS 服务事件
有关 AWS 服务事件的信息,请参阅[此页面](https://status.aws.amazon.com/)。
## 安全与合规
默认情况下,只有创建集群的 IAM 用户或角色才能访问该集群。在没有额外配置的情况下,使用其他用户或角色访问集群将导致错误。在 Rancher 中,这意味着使用映射到未用于创建集群的用户或角色的凭证,导致未经授权的错误。除非用于注册集群的凭证与 EKSCtl 使用的角色或用户匹配,否则 EKSCtl 集群将不会注册到 Rancher。通过将其他用户和角色添加到 kube-system 命名空间中的 aws-auth configmap,可以授权其他用户和角色访问集群。如需更深入的解释和详细说明,请参阅此[文档](https://aws.amazon.com/premiumsupport/knowledge-center/amazon-eks-cluster-access/)。
有关 Amazon EKS Kubernetes 集群的安全性和合规性的更多信息,请参阅此[文档](https://docs.aws.amazon.com/eks/latest/userguide/shared-responsibilty.html)。
## 教程
AWS 开源博客上的这篇[教程](https://aws.amazon.com/blogs/opensource/managing-eks-clusters-rancher/)将指导你使用 Rancher 设置一个 EKS 集群,部署一个可公开访问的示例应用来测试集群,并部署一个使用其他开源软件(如 Grafana 和 influxdb)来实时监控地理信息的示例项目。
## 最小 EKS 权限
请参阅[此页面](../reference-guides/amazon-eks-permissions/minimum-eks-permissions.md),了解在 Rancher 中使用 EKS 驱动所有功能所需的最小权限。
## 同步
EKS 配置者可以在 Rancher 和提供商之间同步 EKS 集群的状态。有关其工作原理的技术说明,请参阅[同步](../reference-guides/cluster-configuration/rancher-server-configuration/sync-clusters.md)。
有关配置刷新间隔的信息,请参阅[本节](../reference-guides/cluster-configuration/rancher-server-configuration/eks-cluster-configuration.md#配置刷新间隔)。
## 故障排除
如果你的更改被覆盖,可能是集群数据与 EKS 同步的方式导致的。不要在使用其他源(例如 EKS 控制台)对集群进行更改后,又在五分钟之内在 Rancher 中进行更改。有关其工作原理,以及如何配置刷新间隔的信息,请参阅[同步](#同步)。
如果在修改或注册集群时返回未经授权的错误,并且集群不是使用你的凭证所属的角色或用户创建的,请参阅[安全与合规](#安全与合规)。
有关 Amazon EKS Kubernetes 集群的任何问题或故障排除详细信息,请参阅此[文档](https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html)。
## 以编程方式创建 EKS 集群
通过 Rancher 以编程方式部署 EKS 集群的最常见方法是使用 Rancher 2 Terraform Provider。详情请参见[使用 Terraform 创建集群](https://registry.terraform.io/providers/rancher/rancher2/latest/docs/resources/cluster)。
@@ -26,9 +26,7 @@ Rancher 身份验证代理支持与以下外部身份验证服务集成:
| [Google OAuth](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/configure-google-oauth.md) |
| [Shibboleth](configure-shibboleth-saml.md) |
<br/>
同时,Rancher 也提供了[本地验证](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/create-local-users.md)。
同时,Rancher 也提供了[本地身份验证](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/create-local-users.md)。
大多数情况下,应该使用外部身份验证服务,而不是本地身份验证,因为外部身份验证允许对用户进行集中管理。但是你可能需要一些本地身份验证用户,以便在特定的情况下(例如在外部身份验证系统不可用或正在进行维护时)管理 Rancher。
@@ -109,3 +107,27 @@ Rancher 依赖用户和组来决定允许登录到 Rancher 的用户,以及他
如果你需要重新配置或禁用以前设置的提供程序然后再重新启用它,请确保进行此操作的用户使用外部用户身份登录 Rancher,而不是本地管理员。
:::
## 禁用认证提供程序
禁用身份认证提供程序时,Rancher 会删除与其关联的所有资源,例如:
- 密文
- 全局角色绑定
- 集群角色模板绑定
- 项目角色模板绑定
- 与提供商关联的外部用户,这些用户从未以本地用户身份登录到 Rancher
由于此操作可能会导致许多资源丢失,因此你可能希望在提供程序上添加保护措施。
为确保在禁用身份认证提供程序时不会运行此清理,请向相应的身份认证配置添加特殊注释。
例如,要为 Azure AD 提供程序添加安全措施,请注释 `azuread` authconfig 对象:
`kubectl annotate --overwrite authconfig azuread management.cattle.io/auth-provider-cleanup='user-locked'`
在你将注释设置为 `unlocked` 之前,Rancher 不会执行清理。
### 手动运行资源清理
即使在你配置了另一个身份认证提供程序,Rancher 也可能会保留 local 集群中已禁用的身份认证提供程序配置的资源。例如,如果你使用 Provider A,然后禁用了它并开始使用 Provider B,当你升级到新版本的 Rancher 时,你可以手动触发对 Provider A 配置的资源的清理。
要为已禁用的身份认证提供程序手动触发清理,请将带有 `unlocked` 值的 `management.cattle.io/auth-provider-cleanup` 注释添加到 auth 配置中。
@@ -1,223 +0,0 @@
---
title: 最小 EKS 权限
---
此处提供在 Rancher 中使用 EKS 驱动所有功能所需的最小权限。Rancher 需要额外的权限来配置`服务角色`和 `VPC` 资源。你可以选择在创建集群**之前**创建这些资源,以便在定义集群配置时选择这些资源。
| 资源 | 描述 |
---------|------------
| 服务角色 | 服务角色向 Kubernetes 提供管理资源所需的权限。Rancher 可以使用以下[服务角色权限](#服务角色权限)来创建服务角色。 |
| VPC | 提供 EKS 和 Worker 节点使用的隔离网络资源。Rancher 使用以下 [VPC 权限](#vpc-权限)创建 VPC 资源。 |
资源定位使用 `*` 作为在 Rancher 中创建 EKS 集群之前,无法已知创建的资源的名称(ARN)。
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EC2Permisssions",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:RevokeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:DescribeInstanceTypes",
"ec2:DescribeRegions",
"ec2:DescribeVpcs",
"ec2:DescribeTags",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeRouteTables",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeKeyPairs",
"ec2:DescribeInternetGateways",
"ec2:DescribeImages",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeAccountAttributes",
"ec2:DeleteTags",
"ec2:DeleteSecurityGroup",
"ec2:DeleteKeyPair",
"ec2:CreateTags",
"ec2:CreateSecurityGroup",
"ec2:CreateLaunchTemplateVersion",
"ec2:CreateLaunchTemplate",
"ec2:CreateKeyPair",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress"
],
"Resource": "*"
},
{
"Sid": "CloudFormationPermisssions",
"Effect": "Allow",
"Action": [
"cloudformation:ListStacks",
"cloudformation:ListStackResources",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackResources",
"cloudformation:DescribeStackResource",
"cloudformation:DeleteStack",
"cloudformation:CreateStackSet",
"cloudformation:CreateStack"
],
"Resource": "*"
},
{
"Sid": "IAMPermissions",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"iam:ListRoles",
"iam:ListRoleTags",
"iam:ListInstanceProfilesForRole",
"iam:ListInstanceProfiles",
"iam:ListAttachedRolePolicies",
"iam:GetRole",
"iam:GetInstanceProfile",
"iam:DetachRolePolicy",
"iam:DeleteRole",
"iam:CreateRole",
"iam:AttachRolePolicy"
],
"Resource": "*"
},
{
"Sid": "KMSPermisssions",
"Effect": "Allow",
"Action": "kms:ListKeys",
"Resource": "*"
},
{
"Sid": "EKSPermisssions",
"Effect": "Allow",
"Action": [
"eks:UpdateNodegroupVersion",
"eks:UpdateNodegroupConfig",
"eks:UpdateClusterVersion",
"eks:UpdateClusterConfig",
"eks:UntagResource",
"eks:TagResource",
"eks:ListUpdates",
"eks:ListTagsForResource",
"eks:ListNodegroups",
"eks:ListFargateProfiles",
"eks:ListClusters",
"eks:DescribeUpdate",
"eks:DescribeNodegroup",
"eks:DescribeFargateProfile",
"eks:DescribeCluster",
"eks:DeleteNodegroup",
"eks:DeleteFargateProfile",
"eks:DeleteCluster",
"eks:CreateNodegroup",
"eks:CreateFargateProfile",
"eks:CreateCluster"
],
"Resource": "*"
}
]
}
```
### 服务角色权限
指的是 Rancher 在 EKS 集群创建过程中,代表用户创建服务角色所需的权限。
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IAMPermisssions",
"Effect": "Allow",
"Action": [
"iam:AddRoleToInstanceProfile",
"iam:AttachRolePolicy",
"iam:CreateInstanceProfile",
"iam:CreateRole",
"iam:CreateServiceLinkedRole",
"iam:DeleteInstanceProfile",
"iam:DeleteRole",
"iam:DetachRolePolicy",
"iam:GetInstanceProfile",
"iam:GetRole",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfiles",
"iam:ListInstanceProfilesForRole",
"iam:ListRoles",
"iam:ListRoleTags",
"iam:PassRole",
"iam:RemoveRoleFromInstanceProfile"
],
"Resource": "*"
}
]
}
```
创建 EKS 集群时,Rancher 将创建具有以下信任策略的服务角色:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
```
此角色还将具有两个角色策略,其中包含以下策略 ARN:
```
arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
arn:aws:iam::aws:policy/AmazonEKSServicePolicy
```
### VPC 权限
Rancher 创建 VPC 和关联资源所需的权限。
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VPCPermissions",
"Effect": "Allow",
"Action": [
"ec2:ReplaceRoute",
"ec2:ModifyVpcAttribute",
"ec2:ModifySubnetAttribute",
"ec2:DisassociateRouteTable",
"ec2:DetachInternetGateway",
"ec2:DescribeVpcs",
"ec2:DeleteVpc",
"ec2:DeleteTags",
"ec2:DeleteSubnet",
"ec2:DeleteRouteTable",
"ec2:DeleteRoute",
"ec2:DeleteInternetGateway",
"ec2:CreateVpc",
"ec2:CreateSubnet",
"ec2:CreateSecurityGroup",
"ec2:CreateRouteTable",
"ec2:CreateRoute",
"ec2:CreateInternetGateway",
"ec2:AttachInternetGateway",
"ec2:AssociateRouteTable"
],
"Resource": "*"
}
]
}
```