mirror of
https://github.com/rancher/rancher-docs.git
synced 2026-05-05 20:53:33 +00:00
Adding preview for v2.12 Rancher documentation.
Signed-off-by: Sunil Singh <sunil.singh@suse.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: API 参考
|
||||
---
|
||||
|
||||
<head>
|
||||
<link rel="canonical" href="https://ranchermanager.docs.rancher.com/zh/api/api-reference"/>
|
||||
</head>
|
||||
|
||||
:::note
|
||||
|
||||
目前,并非所有的 Rancher 资源都可以通过 Rancher Kubernetes API 操作。
|
||||
|
||||
:::
|
||||
|
||||
import ApiDocMdx from '@theme/ApiDocMdx';
|
||||
|
||||
<ApiDocMdx id="rancher-api-v2-11" />
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: API 令牌
|
||||
---
|
||||
|
||||
默认情况下,某些集群级别的 API 令牌是使用无限期 TTL(`ttl=0`)生成的。换言之,除非你让令牌失效,否则 `ttl=0` 的 API 令牌永远不会过期。令牌不会因为更改密码而失效。
|
||||
|
||||
要停用 API 令牌,你可以删除令牌或停用用户账号。
|
||||
|
||||
## 删除令牌
|
||||
要删除令牌:
|
||||
|
||||
1. 转到 `https://<Rancher-Server-IP>/v3/tokens`,在 Rancher API 视图中查看包含所有令牌的列表。
|
||||
|
||||
1. 通过 ID 访问要删除的令牌。例如,`https://<Rancher-Server-IP>/v3/tokens/kubectl-shell-user-vqkqt`。
|
||||
|
||||
1. 单击**删除**。
|
||||
|
||||
以下是使用 `ttl=0` 生成的完整令牌列表:
|
||||
|
||||
| 令牌 | 描述 |
|
||||
| ----------------- | -------------------------------------------------------------------------------------- |
|
||||
| `kubeconfig-*` | Kubeconfig 令牌 |
|
||||
| `kubectl-shell-*` | 在浏览器中访问 `kubectl` shell |
|
||||
| `agent-*` | Agent deployment 令牌 |
|
||||
| `compose-token-*` | compose 令牌 |
|
||||
| `helm-token-*` | Helm Chart deployment 令牌 |
|
||||
| `telemetry-*` | 遥测令牌 |
|
||||
| `drain-node-*` | 用于清空的令牌(由于没有原生 Kubernetes API,我们使用 `kubectl` 来清空) |
|
||||
|
||||
|
||||
## 在 Kubeconfig 令牌上设置 TTL
|
||||
|
||||
管理员可以在 Kubeconfig 令牌上设置全局存活时间 (time-to-live,TTL)。如需更改默认 kubeconfig TTL,你可以导航到全局设置并将 [`kubeconfig-default-token-ttl-minutes`](#kubeconfig-default-token-ttl-minutes) 设置为所需的持续时间(单位:分钟)。[`kubeconfig-default-token-ttl-minutes`](#kubeconfig-default-token-ttl-minutes) 的默认值为 0,表示令牌永不过期。
|
||||
|
||||
:::note
|
||||
|
||||
除了由 CLI 创建的用于[生成 kubeconfig 令牌](#在生成的-kubeconfig-中禁用令牌)的令牌之外,所有 kubeconfig 令牌都使用此设置。
|
||||
|
||||
:::
|
||||
|
||||
## 在生成的 Kubeconfig 中禁用令牌
|
||||
|
||||
1. 将 `kubeconfig-generate-token` 设置为 `false`。此设置让 Rancher 不再在用户单击下载 kubeconfig 文件时自动生成令牌。如果停用此设置,生成的 kubeconfig 将引用 [Rancher CLI](../reference-guides/cli-with-rancher/kubectl-utility.md#使用-kubectl-和-kubeconfig-令牌进行-ttl-认证) 来检索集群的短期令牌。当这个 kubeconfig 在客户端(例如 `kubectl`)中使用时,你需要安装 Rancher CLI 来完成登录请求。
|
||||
|
||||
2. 将 `kubeconfig-token-ttl-minutes` 设置为所需的时长(单位:分钟)。`kubeconfig-token-ttl-minutes` 默认设置为 960(即 16 小时)。
|
||||
|
||||
## 令牌哈希
|
||||
|
||||
你可以启用令牌哈希,令牌将使用 SHA256 算法进行单向哈希。这是一个不可逆的操作,一旦启用,此功能将无法禁用。在启用功能或在测试环境中评估之前,建议你先进行备份。
|
||||
|
||||
要启用令牌哈希,请参阅[本节](../how-to-guides/advanced-user-guides/enable-experimental-features/enable-experimental-features.md)。
|
||||
|
||||
此功能将影响所有令牌,包括但不限于以下内容:
|
||||
|
||||
- Kubeconfig 令牌
|
||||
- 持有者令牌 API 密钥/调用
|
||||
- 内部操作使用的令牌
|
||||
|
||||
## 令牌设置
|
||||
|
||||
以下全局设置会影响 Rancher 令牌的行为:
|
||||
|
||||
| 设置 | 描述 |
|
||||
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| [`auth-user-session-ttl-minutes`](#auth-user-session-ttl-minutes) | 用户认证会话令牌的 TTL(单位:分钟)。 |
|
||||
| [`kubeconfig-default-token-TTL-minutes`](#kubeconfig-default-token-ttl-minutes) | 默认 TTL,应用于所有 kubeconfig 令牌(除了[由 Rancher CLI 生成的令牌](#在生成的-kubeconfig-中禁用令牌))。**此设置从 2.6.6 版本开始引入。** |
|
||||
| [`kubeconfig-token-ttl-minutes`](#kubeconfig-token-ttl-minutes) | 在 CLI 中生成的令牌 TTL。**自 2.6.6 起已弃用,并将在 2.8.0 中删除**。请知悉,`kubeconfig-default-token-TTL-minutes` 将用于所有 kubeconfig 令牌。 |
|
||||
| [`auth-token-max-ttl-minutes`](#auth-token-max-ttl-minutes) | 除了由 [`auth-user-session-ttl-minutes`](#auth-user-session-ttl-minutes) 控制的令牌外,所有令牌的最大 TTL。 |
|
||||
| [`kubeconfig-generate-token`](#kubeconfig-generate-token) | 如果为 true,则在用户下载 kubeconfig 时自动生成令牌。 |
|
||||
|
||||
### auth-user-session-ttl-minutes
|
||||
存活时间(TTL)(单位:分钟),用于确定用户身份验证会话令牌的到期时间。过期后,用户将需要登录并获取新令牌。此设置不受 [`auth-token-max-ttl-minutes`](#auth-token-max-ttl-minutes) 的影响。会话令牌是在用户登录 Rancher 时创建的。
|
||||
|
||||
### kubeconfig-default-token-TTL-minutes
|
||||
存活时间(TTL)(单位:分钟),用于确定 kubeconfig 令牌的到期时间。令牌过期后,API 将拒绝令牌。此设置的值不能大于 [`auth-token-max-ttl-minutes`](#auth-token-max-ttl-minutes) 的值。此设置适用于在请求的 kubeconfig 文件中生成的令牌,不包括[由 Rancher CLI 生成的](#在生成的-kubeconfig-中禁用令牌)令牌。
|
||||
**此设置从 2.6.6 版本开始引入**。
|
||||
|
||||
### kubeconfig-token-ttl-minutes
|
||||
存活时间(TTL)(单位:分钟),用于确定由 CLI 生成的 kubeconfig 令牌的到期时间。当 [`kubeconfig-generate-token`](#kubeconfig-generate-token) 设为 false 时,则由 CLI 生成令牌。令牌过期后,API 将拒绝令牌。此设置的值不能大于 [`auth-token-max-ttl-minutes`](#auth-token-max-ttl-minutes) 的值。
|
||||
**自版本 2.6.6 起已弃用,并将在 2.8.0 中删除。请知悉,此设置将被 [`kubeconfig-default-token-TTL-minutes`](#kubeconfig-default-token-ttl-minutes) 的值替换**。
|
||||
|
||||
### auth-token-max-ttl-minutes
|
||||
身份验证令牌的最大生存时间 (TTL)(单位:分钟)。如果用户尝试创建一个 TTL 大于 `auth-token-max-ttl-minutes` 的令牌,Rancher 会将令牌 TTL 设置为 `auth-token-max-ttl-minutes` 的值。身份验证令牌是为验证 API 请求而创建的。
|
||||
**2.6.6 版本更改:适用于所有 kubeconfig 令牌和 API 令牌。**
|
||||
|
||||
### kubeconfig-generate-token
|
||||
如果设置为 true,则通过 UI 请求的 kubeconfig 将包含一个有效的令牌。如果设置为 false,kubeconfig 将包含一个使用 Rancher CLI 提示用户登录的命令。然后,[CLI 将为用户检索和缓存令牌](../reference-guides/cli-with-rancher/kubectl-utility.md#使用-kubectl-和-kubeconfig-令牌进行-ttl-认证)。
|
||||
@@ -0,0 +1,152 @@
|
||||
---
|
||||
title: API 快速入门指南
|
||||
---
|
||||
|
||||
<head>
|
||||
<link rel="canonical" href="https://ranchermanager.docs.rancher.com/zh/api/quickstart"/>
|
||||
</head>
|
||||
|
||||
你可以通过 Kubernetes API 访问 Rancher 的资源。本指南将帮助你以 Rancher 用户的身份开始使用此 API。
|
||||
|
||||
1. 在左上角,点击 **☰ > 全局设置**.
|
||||
2. 找到 `server-url` 字段并复制其地址。
|
||||
3. [创建](../reference-guides/user-settings/api-keys.md#创建-api-密钥)一个没有作用域的 Rancher API 密钥。
|
||||
|
||||
:::danger
|
||||
|
||||
没有作用域的 Rancher API 密钥授予用户可以访问的所有资源的无限制的访问权限。为防止未经授权的使用,此密钥应安全存储并经常轮换。
|
||||
|
||||
:::
|
||||
|
||||
4. 创建一个 `kubeconfig.yaml` 文件,将 `$SERVER_URL` 替换成上面从全局设置中复制的地址,并且将 `$API_KEY` 替换为上面创建的 Rancher API 密钥:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Config
|
||||
clusters:
|
||||
- name: "rancher"
|
||||
cluster:
|
||||
server: "$SERVER_URL"
|
||||
|
||||
users:
|
||||
- name: "rancher"
|
||||
user:
|
||||
token: "$API_KEY"
|
||||
|
||||
contexts:
|
||||
- name: "rancher"
|
||||
context:
|
||||
user: "rancher"
|
||||
cluster: "rancher"
|
||||
|
||||
current-context: "rancher"
|
||||
```
|
||||
|
||||
你可以使用任何兼容的工具来引用这个文件,例如 kubectl 或 [client-go](https://github.com/kubernetes/client-go)。快速演示内容请参阅 [kubectl 示例](#api-kubectl-示例)
|
||||
|
||||
更多有关处理更复杂证书的设置信息,请参阅[指定 CA 证书](#指定-ca-证书)。
|
||||
|
||||
更多关于可用的 kubeconfig 选项,请参阅[上游文档](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)。
|
||||
|
||||
## API kubectl 示例
|
||||
|
||||
在此示例中,我们将展示如何使用 kubectl 创建一个项目,然后删除它。关于其他可用的 Rancher 资源列表,请参阅 [API 参考](./api-reference.mdx)。
|
||||
|
||||
:::note
|
||||
|
||||
目前,并非所有的 Rancher 资源都可以通过 Rancher Kubernetes API 操作。
|
||||
|
||||
:::
|
||||
|
||||
1. 将 KUBECONFIG 环境变量设置为刚才创建的 kubeconfig 文件:
|
||||
|
||||
```bash
|
||||
export KUBECONFIG=$(pwd)/kubeconfig.yaml
|
||||
```
|
||||
|
||||
2. 使用 `kubectl explain` 查看项目的可用字段,或者复杂资源的子字段:
|
||||
|
||||
```bash
|
||||
kubectl explain projects
|
||||
kubectl explain projects.spec
|
||||
```
|
||||
|
||||
不是所有的资源都有详细的输出。
|
||||
|
||||
3. 在名称为 `project.yaml` 的文件中添加以下内容:
|
||||
|
||||
```yaml
|
||||
apiVersion: management.cattle.io/v3
|
||||
kind: Project
|
||||
metadata:
|
||||
# name 应在每个集群的所有项目中都是唯一的
|
||||
name: p-abc123
|
||||
# generateName 可以替代 `name` 来随机生成一个名称
|
||||
# generateName: p-
|
||||
# namespace 应与 spec.ClusterName 匹配
|
||||
namespace: local
|
||||
spec:
|
||||
# clusterName 应与目标集群的 `metadata.Name` 匹配
|
||||
clusterName: local
|
||||
description: Example Project
|
||||
# displayName 是人类可读的名称并且从 UI 中显示
|
||||
displayName: Example
|
||||
```
|
||||
|
||||
4. 创建项目:
|
||||
|
||||
```bash
|
||||
kubectl create -f project.yaml
|
||||
```
|
||||
|
||||
5. 删除项目:
|
||||
|
||||
项目删除的方式取决于项目名称的创建方式。
|
||||
|
||||
**A. 如果在创建项目时使用 `name`**:
|
||||
|
||||
```bash
|
||||
kubectl delete -f project.yaml
|
||||
```
|
||||
|
||||
**B. 如果你使用 `generateName`**:
|
||||
|
||||
将 `$PROJECT_NAME` 替换为 kubectl 创建项目后随机生成的项目名称。
|
||||
|
||||
```bash
|
||||
kubectl delete project $PROJECT_NAME -n local
|
||||
```
|
||||
|
||||
## 指定 CA 证书
|
||||
|
||||
为确保你的工具能够识别 Rancher 的 CA 证书,大多数设置都需要对上述模板进行额外修改。
|
||||
|
||||
1. 在左上角点击 **☰ > 全局设置**.
|
||||
2. 查找并复制 `ca-certs` 字段中的值。
|
||||
3. 将复制的值保存在名称为 `rancher.crt` 的文件中。
|
||||
|
||||
:::note
|
||||
如果你的 Rancher 实例由其他服务代理,你必须提取该服务正在使用的证书,并将其添加到 kubeconfig 文件中,如步骤 5 所示。
|
||||
:::
|
||||
|
||||
4. 以下命令会将 `rancher.crt` 转换为 base64 输出,除去所有换行符,并使用证书内容更新 kubeconfig 中的 cluster 选项,然后删除 `rancher.crt` 文件:
|
||||
|
||||
```bash
|
||||
export KUBECONFIG=$PATH_TO_RANCHER_KUBECONFIG
|
||||
kubectl config set clusters.rancher.certificate-authority-data $(cat rancher.crt | base64 -i - | tr -d '\n')
|
||||
rm rancher.crt
|
||||
```
|
||||
5. (可选项)如果你使用不受系统信任的自签名证书,则可以通过 kubectl 在 kubeconfig 中设置不安全选项:
|
||||
|
||||
:::danger
|
||||
|
||||
此选项不应该在生产环境中使用,因为它存在安全风险。
|
||||
|
||||
:::
|
||||
|
||||
```bash
|
||||
export KUBECONFIG=$PATH_TO_RANCHER_KUBECONFIG
|
||||
kubectl config set clusters.rancher.insecure-skip-tls-verify true
|
||||
```
|
||||
|
||||
如果你的 Rancher 实例由其他服务代理,你必须提取该服务正在使用的证书,并如上面演示的方法,将其添加到 kubeconfig 文件中。
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: API
|
||||
---
|
||||
|
||||
<head>
|
||||
<link rel="canonical" href="https://ranchermanager.docs.rancher.com/zh/reference-guides/about-the-api"/>
|
||||
</head>
|
||||
|
||||
## 如何使用 API
|
||||
|
||||
API 有自己的用户界面,你可以从 Web 浏览器访问它。这是查看资源、执行操作以及查看等效 cURL 或 HTTP 请求和响应的一种简单的方法。要访问它:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="Rancher v2.6.4+">
|
||||
|
||||
1. 单击右上角的用户头像。
|
||||
1. 单击**账号 & API 密钥**。
|
||||
1. 在 **API 密钥**下,找到 **API 端点**字段并单击链接。该链接类似于 `https://<RANCHER_FQDN>/v3`,其中 `<RANCHER_FQDN>` 是 Rancher deployment 的完全限定域名。
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="Rancher 版本低于 v2.6.4">
|
||||
|
||||
转到位于 `https://<RANCHER_FQDN>/v3` 的 URL 端点,其中 `<RANCHER_FQDN>` 是你的 Rancher deployment 的完全限定域名。
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## 认证
|
||||
|
||||
API 请求必须包含认证信息。认证是通过 [API 密钥](../reference-guides/user-settings/api-keys.md)使用 HTTP 基本认证完成的。API 密钥可以创建新集群并通过 `/v3/clusters/` 访问多个集群。[集群和项目角色](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/cluster-and-project-roles.md)会应用于这些键,并限制账号可以查看的集群和项目以及可以执行的操作。
|
||||
|
||||
默认情况下,某些集群级别的 API 令牌是使用无限期 TTL(`ttl=0`)生成的。换言之,除非你让令牌失效,否则 `ttl=0` 的 API 令牌永远不会过期。有关如何使 API 令牌失效的详细信息,请参阅 [API 令牌](api-tokens.md)。
|
||||
|
||||
## 发出请求
|
||||
|
||||
该 API 通常是 RESTful 的,但是还具有多种功能。这些功能可以使客户端发现所有内容,因此可以编写通用客户端,而不必为每种资源编写特定代码。有关通用 API 规范的详细信息,请参阅[此处](https://github.com/rancher/api-spec/blob/master/specification.md)。
|
||||
|
||||
- 每种类型都有一个 Schema,这个 Schema 描述了以下内容:
|
||||
- 用于获取此类资源集合的 URL
|
||||
- 资源可以具有的每个字段及其类型、基本验证规则、是必填还是可选字段等
|
||||
- 在此类资源上可以执行的每个操作,以及它们的输入和输出(也作为 schema)
|
||||
- 允许过滤的每个字段
|
||||
- 集合本身或集合中的单个资源可以使用的 HTTP 操作方法
|
||||
|
||||
|
||||
- 因此,你可以只加载 schema 列表并了解 API 的所有信息。实际上,这是 API 的 UI 工作方式,它不包含特定于 Rancher 本身的代码。每个 HTTP 响应中的 `X-Api-Schemas` 标头都会发送获取 Schemas 的 URL。你可以按照每个 schema 上的 `collection` 链接了解要在哪里列出资源,并在返回资源中的其他 `links` 中获取其他信息。
|
||||
|
||||
- 在实践中,你可能只想构造 URL 字符串。我们强烈建议将此限制为在顶层列出的集合 (`/v3/<type>`),或获取特定资源 (`/v3/<type>/<id>`)。除此之外的任何内容都可能在将来的版本中发生更改。
|
||||
|
||||
- 资源之间相互之间有联系,称为链接(links)。每个资源都包含一个 `links` 映射,其中包含链接名称和用于检索该信息的 URL。同样,你应该 `GET` 资源并遵循 `links` 映射中的 URL,而不是自己构造这些字符串。
|
||||
|
||||
- 大多数资源都有操作(action),表示可以执行某个操作或改变资源的状态。要使用操作,请将 HTTP `POST` 请求发送到 `actions` 映射中你想要的操作的 URL。某些操作需要输入或生成输出,请参阅每种类型的独立文档或 schema 以获取具体信息。
|
||||
|
||||
- 要编辑资源,请将 HTTP `PUT` 请求发送到资源上的 `links.update` 链接,其中包含要更改的字段。如果链接丢失,则你无权更新资源。未知字段和不可编辑的字段将被忽略。
|
||||
|
||||
- 要删除资源,请将 HTTP `DELETE` 请求发送到资源上的 `links.remove` 链接。如果链接丢失,则你无权更新资源。
|
||||
|
||||
- 要创建新资源,HTTP `POST` 到 schema(即 `/v3/<type>`)中的集合 URL。
|
||||
|
||||
## 过滤
|
||||
|
||||
你可以使用 HTTP 查询参数的公共字段在服务器端过滤大多数集合。`filters` 映射显示了可以过滤的字段,以及过滤后的值在你发起的请求中是什么。API UI 具有设置过滤和显示适当请求的控件。对于简单的 "equals" 匹配,它只是 `field=value`。你可以将修饰符添加到字段名称,例如 `field_gt=42` 表示“字段大于 42”。详情请参阅 [API 规范](https://github.com/rancher/api-spec/blob/master/specification.md#filtering)。
|
||||
|
||||
## 排序
|
||||
|
||||
你可以使用 HTTP 查询参数的公共字段在服务器端排序大多数集合。`sortLinks` 映射显示了可用的排序,以及用于获取遵循该排序的集合的 URL。它还包括当前响排序依据的信息(如果指定)。
|
||||
|
||||
## 分页
|
||||
|
||||
默认情况下,API 响应以每页 100 个资源的限制进行分页。你可以通过 `limit` 查询参数进行更改,最大为 1000,例如 `/v3/pods?limit=1000`。集合响应中的 `pagination` 映射能让你知道你是否拥有完整的结果集,如果没有,则会指向下一页的链接。
|
||||
|
||||
## 捕获 Rancher API 调用
|
||||
|
||||
你可以使用浏览器开发人员工具来捕获 Rancher API 的调用方式。例如,你可以按照以下步骤使用 Chrome 开发人员工具来获取用于配置 RKE 集群的 API 调用:
|
||||
|
||||
1. 在 Rancher UI 中,转到**集群管理**并单击**创建**。
|
||||
1. 单击某个集群类型。此示例使用 Digital Ocean。
|
||||
1. 使用集群名称和节点模板填写表单,但不要单击**创建**。
|
||||
1. 在创建集群之前,你需要打开开发人员工具才能看到正在记录的 API 调用。要打开工具,右键单击 Rancher UI,然后单击**检查**。
|
||||
1. 在开发者工具中,单击 **Network** 选项卡。
|
||||
1. 在 **Network** 选项卡上,确保选择了 **Fetch/XHR**。
|
||||
1. 在 Rancher UI 中,单击**创建**。在开发者工具中,你应该会看到一个名为 `cluster?_replace=true` 的新网络请求。
|
||||
1. 右键单击 `cluster?_replace=true` 并单击**复制 > 复制为 cURL**。
|
||||
1. 将结果粘贴到文本编辑器中。你将能够看到 POST 请求,包括被发送到的 URL、所有标头以及请求的完整正文。此命令可用于从命令行创建集群。请注意,请求包含凭证,因此请将请求存储在安全的地方。
|
||||
|
||||
### 启用在 API 中查看
|
||||
|
||||
你还可以查看针对各自集群和资源捕获的 Rancher API 调用。 默认情况下不启用此功能。 要启用它:
|
||||
|
||||
1. 单击 UI 右上角的 **用户图标**,然后从下拉菜单中选择 **偏好设置**
|
||||
1. 在**高级功能**部分下,单击**启用"在 API 中查看"**
|
||||
|
||||
选中后,**在 API 中查看**链接现在将显示在 UI 资源页面上的 **⋮** 子菜单下。
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: 项目
|
||||
---
|
||||
|
||||
<head>
|
||||
<link rel="canonical" href="https://ranchermanager.docs.rancher.com/zh/api/workflows/projects"/>
|
||||
</head>
|
||||
|
||||
## 创建项目
|
||||
|
||||
项目资源只能在管理集群上创建,请参考下文了解如何[在管理集群中的项目下创建命名空间](#在项目中创建命名空间)
|
||||
|
||||
### 创建一个基本项目
|
||||
|
||||
```bash
|
||||
kubectl create -f - <<EOF
|
||||
apiVersion: management.cattle.io/v3
|
||||
kind: Project
|
||||
metadata:
|
||||
generateName: p-
|
||||
namespace: c-m-abcde
|
||||
spec:
|
||||
clusterName: c-m-abcde
|
||||
displayName: myproject
|
||||
EOF
|
||||
```
|
||||
|
||||
使用 `metadata.generateName` 来确保一个唯一的项目 ID,但是需要注意 `kubectl apply` 不能与 `metadata.generateName` 一起使用,因此必须使用 `kubectl create` 来替代。
|
||||
|
||||
将 `metadata.namespace` 和 `spec.clusterName` 设置为项目所属的集群 ID。
|
||||
|
||||
如果你通过集群成员账户创建项目,则必须包含注释 `field.cattle.io/creatorId`,并将注释值设置为集群成员账号的用户 ID。
|
||||
|
||||
```bash
|
||||
kubectl create -f - <<EOF
|
||||
apiVersion: management.cattle.io/v3
|
||||
kind: Project
|
||||
metadata:
|
||||
annotations:
|
||||
field.cattle.io/creatorId:
|
||||
user-id
|
||||
generateName: p-
|
||||
namespace: c-m-abcde
|
||||
spec:
|
||||
clusterName: c-m-abcde
|
||||
displayName: myproject
|
||||
EOF
|
||||
```
|
||||
|
||||
设置 `field.cattle.io/creatorId` 字段允许集群成员账户通过 `get` 命令查看项目资源,并可以在 Rancher UI 中查看项目。集群所有者和管理员账号不需要设置此注释。
|
||||
|
||||
### 创建一个具有 Resource Quota 的项目
|
||||
|
||||
请查看 [Kubernetes Resource Quota](https://kubernetes.io/docs/concepts/policy/resource-quotas/)。
|
||||
|
||||
```bash
|
||||
kubectl create -f - <<EOF
|
||||
apiVersion: management.cattle.io/v3
|
||||
kind: Project
|
||||
metadata:
|
||||
generateName: p-
|
||||
namespace: c-m-abcde
|
||||
spec:
|
||||
clusterName: c-m-abcde
|
||||
displayName: myproject
|
||||
resourceQuota:
|
||||
limit:
|
||||
limitsCpu: 1000m
|
||||
namespaceDefaultResourceQuota:
|
||||
limit:
|
||||
limitsCpu: 50m
|
||||
EOF
|
||||
```
|
||||
|
||||
### 创建一个具有 Container Limit Ranges 的项目
|
||||
|
||||
请查看 [Kubernetes Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)。
|
||||
|
||||
```bash
|
||||
kubectl create -f - <<EOF
|
||||
apiVersion: management.cattle.io/v3
|
||||
kind: Project
|
||||
metadata:
|
||||
generateName: p-
|
||||
namespace: c-m-abcde
|
||||
spec:
|
||||
clusterName: c-m-abcde
|
||||
displayName: myproject
|
||||
containerDefaultResourceLimit:
|
||||
limitsCpu: 100m
|
||||
limitsMemory: 100Mi
|
||||
requestsCpu: 50m
|
||||
requestsMemory: 50Mi
|
||||
```
|
||||
|
||||
## 在项目中创建命名空间
|
||||
|
||||
项目资源保存在管理集群中,即使该项目使用于托管集群也是如此。项目下的命名空间保存在托管集群中。
|
||||
|
||||
在管理集群上查找你正在管理的集群的项目 ID,因为它是使用 `metadata.generateName` 生成的:
|
||||
|
||||
```bash
|
||||
kubectl --namespace c-m-abcde get projects
|
||||
```
|
||||
|
||||
在托管集群上,使用项目注释创建命名空间:
|
||||
|
||||
```bash
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: mynamespace
|
||||
annotations:
|
||||
field.cattle.io/projectId: c-m-abcde:p-vwxyz
|
||||
EOF
|
||||
```
|
||||
|
||||
注意格式:`<cluster ID>:<project ID>`
|
||||
|
||||
## 删除项目
|
||||
|
||||
在集群命名空间中查找要删除的项目:
|
||||
|
||||
```bash
|
||||
kubectl --namespace c-m-abcde get projects
|
||||
```
|
||||
|
||||
删除集群命名空间下的项目:
|
||||
|
||||
```bash
|
||||
kubectl --namespace c-m-abcde delete project p-vwxyz
|
||||
```
|
||||
|
||||
请注意此命令不会删除以前属于该项目的命名空间和资源。
|
||||
Reference in New Issue
Block a user