Skip to content

Commit c102328

Browse files
authored
Merge pull request #36986 from windsonsea/cryhf
[zh]sync /api-extension/custom-resources.md
2 parents 60e5ff7 + 983d17a commit c102328

File tree

1 file changed

+43
-32
lines changed

1 file changed

+43
-32
lines changed

content/zh-cn/docs/concepts/extend-kubernetes/api-extension/custom-resources.md

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,10 @@ When creating a new API, consider whether to
106106
[aggregate your API with the Kubernetes cluster APIs](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)
107107
or let your API stand alone.
108108
-->
109-
## 我是否应该向我的 Kubernetes 集群添加定制资源?
109+
## 我是否应该向我的 Kubernetes 集群添加定制资源? {#should-i-add-a-cr-to-my-k8s-cluster}
110110

111-
在创建新的 API 时,请考虑是
112-
[将你的 API 与 Kubernetes 集群 API 聚合起来](/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)
111+
在创建新的 API 时,
112+
请考虑是[将你的 API 与 Kubernetes 集群 API 聚合起来](/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)
113113
还是让你的 API 独立运行。
114114

115115
<!--
@@ -145,7 +145,7 @@ In a Declarative API, typically:
145145
- The main operations on the objects are CRUD-y (creating, reading, updating and deleting).
146146
- Transactions across objects are not required: the API represents a desired state, not an exact state.
147147
-->
148-
### 声明式 APIs {#declarative-apis}
148+
### 声明式 API {#declarative-apis}
149149

150150
典型地,在声明式 API 中:
151151

@@ -176,7 +176,7 @@ Signs that your API might not be declarative include:
176176
- 客户端发出“做这个操作”的指令,之后在该操作结束时获得同步响应。
177177
- 客户端发出“做这个操作”的指令,并获得一个操作 ID,之后需要检查一个 Operation(操作)
178178
对象来判断请求是否成功完成。
179-
- 你会将你的 API 类比为远程过程调用(Remote Procedure Call,RPCs)。
179+
- 你会将你的 API 类比为远程过程调用(Remote Procedure Call,RPC)。
180180
- 直接存储大量数据;例如每个对象几 kB,或者存储上千个对象。
181181
- 需要较高的访问带宽(长期保持每秒数十个请求)。
182182
- 存储有应用来处理的最终用户数据(如图片、个人标识信息(PII)等)或者其他大规模数据。
@@ -195,7 +195,7 @@ Use a ConfigMap if any of the following apply:
195195
* Consumers of the file prefer to consume via file in a Pod or environment variable in a pod, rather than the Kubernetes API.
196196
* You want to perform rolling updates via Deployment, etc., when the file is updated.
197197
-->
198-
## 我应该使用一个 ConfigMap 还是一个定制资源?
198+
## 我应该使用一个 ConfigMap 还是一个定制资源? {#should-i-use-a-configmap-or-a-cr}
199199

200200
如果满足以下条件之一,应该使用 ConfigMap:
201201

@@ -247,8 +247,8 @@ Kubernetes provides two ways to add custom resources to your cluster:
247247
Kubernetes 提供了两种方式供你向集群中添加定制资源:
248248

249249
- CRD 相对简单,创建 CRD 可以不必编程。
250-
- [API 聚合](/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)
251-
需要编程,但支持对 API 行为进行更多的控制,例如数据如何存储以及在不同 API 版本间如何转换等。
250+
- [API 聚合](/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)需要编程,
251+
但支持对 API 行为进行更多的控制,例如数据如何存储以及在不同 API 版本间如何转换等。
252252

253253
<!--
254254
Kubernetes provides these two options to meet the needs of different users, so that neither ease of use nor flexibility is compromised.
@@ -272,6 +272,24 @@ CRD 允许用户创建新的资源类别同时又不必添加新的 API 服务
272272
无论以哪种方式安装定制资源,新的资源都会被当做定制资源,以便与内置的
273273
Kubernetes 资源(如 Pods)相区分。
274274

275+
{{< note >}}
276+
<!--
277+
Avoid using a Custom Resource as data storage for application, end user, or monitoring data:
278+
architecture designs that store application data within the Kubernetes API typically represent
279+
a design that is too closely coupled.
280+
281+
Architecturally, [cloud native](https://www.cncf.io/about/faq/#what-is-cloud-native) application architectures
282+
favor loose coupling between components. If part of your workload requires a backing service for
283+
its routine operation, run that backing service as a component or consume it as an external service.
284+
This way, your workload does not rely on the Kubernetes API for its normal operation.
285+
-->
286+
避免将定制资源用于存储应用、最终用户或监控数据:
287+
将应用数据存储在 Kubernetes API 内的架构设计通常代表一种过于紧密耦合的设计。
288+
289+
在架构上,[云原生](https://www.cncf.io/about/faq/#what-is-cloud-native)应用架构倾向于各组件之间的松散耦合。
290+
如果部分工作负载需要支持服务来维持其日常运转,则这种支持服务应作为一个组件运行或作为一个外部服务来使用。
291+
这样,工作负载的正常运转就不会依赖 Kubernetes API 了。
292+
{{< /note >}}
275293
<!--
276294
## CustomResourceDefinitions
277295
@@ -315,7 +333,6 @@ The [aggregation layer](/docs/concepts/extend-kubernetes/api-extension/apiserver
315333
implementations for your custom resources by writing and deploying your own API server.
316334
The main API server delegates requests to your API server for the custom resources that you handle,
317335
making them available to all of its clients.
318-
319336
-->
320337
## API 服务器聚合 {#api-server-aggregation}
321338

@@ -338,15 +355,14 @@ Typically, CRDs are a good fit if:
338355
* You have a handful of fields
339356
* You are using the resource within your company, or as part of a small open-source project (as opposed to a commercial product)
340357
-->
341-
## 选择添加定制资源的方法
358+
## 选择添加定制资源的方法 {#choosing-a-method-for-adding-cr}
342359

343360
CRD 更为易用;聚合 API 则更为灵活。请选择最符合你的需要的方法。
344361

345362
通常,如何存在以下情况,CRD 可能更合适:
346363

347364
* 定制资源的字段不多;
348-
* 你在组织内部使用该资源或者在一个小规模的开源项目中使用该资源,而不是
349-
在商业产品中使用。
365+
* 你在组织内部使用该资源或者在一个小规模的开源项目中使用该资源,而不是在商业产品中使用。
350366

351367
<!--
352368
### Comparing ease of use
@@ -355,7 +371,7 @@ CRDs are easier to create than Aggregated APIs.
355371
-->
356372
### 比较易用性 {#compare-ease-of-use}
357373

358-
CRD 比聚合 API 更容易创建
374+
CRD 比聚合 API 更容易创建
359375

360376
<!--
361377
| CRDs | Aggregated API |
@@ -460,7 +476,7 @@ When you create a custom resource, either via a CRD or an AA, you get many featu
460476
461477
There are several points to be aware of before adding a custom resource to your cluster.
462478
-->
463-
## 准备安装定制资源
479+
## 准备安装定制资源 {#preparing-to-install-a-cr}
464480

465481
在向你的集群添加定制资源之前,有些事情需要搞清楚。
466482

@@ -471,12 +487,12 @@ While creating a CRD does not automatically add any new points of failure (for e
471487
472488
Installing an Aggregated API server always involves running a new Deployment.
473489
-->
474-
### 第三方代码和新的失效点的问题
490+
### 第三方代码和新的失效点的问题 {#third-party-code-and-new-points-of-failure}
475491

476492
尽管添加新的 CRD 不会自动带来新的失效点(Point of
477493
Failure),例如导致第三方代码被在 API 服务器上运行,
478-
类似 Helm Charts 这种软件包或者其他安装包通常在提供 CRD 的同时还包含带有第三方
479-
代码的 Deployment,负责实现新的定制资源的业务逻辑。
494+
类似 Helm Charts 这种软件包或者其他安装包通常在提供 CRD
495+
的同时还包含带有第三方代码的 Deployment,负责实现新的定制资源的业务逻辑。
480496

481497
安装聚合 API 服务器时,也总会牵涉到运行一个新的 Deployment。
482498

@@ -487,13 +503,12 @@ Custom resources consume storage space in the same way that ConfigMaps do. Creat
487503
488504
Aggregated API servers may use the same storage as the main API server, in which case the same warning applies.
489505
-->
490-
### 存储
506+
### 存储 {#storage}
491507

492508
定制资源和 ConfigMap 一样也会消耗存储空间。创建过多的定制资源可能会导致
493509
API 服务器上的存储空间超载。
494510

495-
聚合 API 服务器可以使用主 API 服务器的同一存储。如果是这样,你也要注意
496-
此警告。
511+
聚合 API 服务器可以使用主 API 服务器相同的存储。如果是这样,你也要注意此警告。
497512

498513
<!--
499514
### Authentication, authorization, and auditing
@@ -504,18 +519,15 @@ If you use RBAC for authorization, most RBAC roles will not grant access to the
504519
505520
Aggregated API servers may or may not use the same authentication, authorization, and auditing as the primary API server.
506521
-->
507-
### 身份认证、鉴权授权以及审计
522+
### 身份认证、鉴权授权以及审计 {#authentication-authorization-and-auditing}
508523

509-
CRD 通常与 API 服务器上的内置资源一样使用相同的身份认证、鉴权授权
510-
和审计日志机制。
524+
CRD 通常与 API 服务器上的内置资源一样使用相同的身份认证、鉴权授权和审计日志机制。
511525

512526
如果你使用 RBAC 来执行鉴权授权,大多数 RBAC 角色都会授权对新资源的访问
513527
(除了 cluster-admin 角色以及使用通配符规则创建的其他角色)。
514-
你要显式地为新资源的访问授权。CRD 和聚合 API 通常在交付时会包含
515-
针对所添加的类别的新的角色定义。
528+
你要显式地为新资源的访问授权。CRD 和聚合 API 通常在交付时会包含针对所添加的类别的新的角色定义。
516529

517-
聚合 API 服务器可能会使用主 API 服务器相同的身份认证、鉴权授权和审计
518-
机制,也可能不会。
530+
聚合 API 服务器可能会使用主 API 服务器相同的身份认证、鉴权授权和审计机制,也可能不会。
519531

520532
<!--
521533
## Accessing a custom resource
@@ -529,19 +541,18 @@ When you add a custom resource, you can access it using:
529541
- A REST client that you write.
530542
- A client generated using [Kubernetes client generation tools](https://github.com/kubernetes/code-generator) (generating one is an advanced undertaking, but some projects may provide a client along with the CRD or AA).
531543
-->
532-
## 访问定制资源
544+
## 访问定制资源 {#accessing-a-custom-resources}
533545

534546
Kubernetes [客户端库](/zh-cn/docs/reference/using-api/client-libraries/)可用来访问定制资源。
535-
并非所有客户端库都支持定制资源。_Go__Python_ 客户端库是支持的。
547+
并非所有客户端库都支持定制资源。**Go****Python** 客户端库是支持的。
536548

537549
当你添加了新的定制资源后,可以用如下方式之一访问它们:
538550

539551
- `kubectl`
540552
- Kubernetes 动态客户端
541553
- 你所编写的 REST 客户端
542-
- 使用 [Kubernetes 客户端生成工具](https://github.com/kubernetes/code-generator)
543-
所生成的客户端。生成客户端的工作有些难度,不过某些项目可能会随着 CRD 或
544-
聚合 API 一起提供一个客户端
554+
- 使用 [Kubernetes 客户端生成工具](https://github.com/kubernetes/code-generator)所生成的客户端。
555+
生成客户端的工作有些难度,不过某些项目可能会随着 CRD 或聚合 API 一起提供一个客户端。
545556

546557
## {{% heading "whatsnext" %}}
547558

0 commit comments

Comments
 (0)