5.6.9. 了解您的 API 服务
与 CRD 一样,您的 Operator 可使用两类 APIService:拥有的和必需的。
5.6.9.1. 拥有的 API 服务
当 CSV 拥有 API 服务时,它将负责描述为其提供支持的扩展 api-server
的部署及其提供的组/version/kind(GVK)。
API 服务由它提供的 group/version 唯一标识,并可以多次列出,以表示期望提供的不同类型。
字段 | 描述 | 必需/可选 |
---|---|---|
|
API 服务提供的组,如 | 必填 |
|
API 服务的版本,如 | 必填 |
| API 服务应提供的类型。 | 必填 |
| 提供的 API 服务的复数名称。 | 必填 |
|
由您的 CSV 定义的部署名称,对应您的 API 服务(对于拥有的 API 服务是必需的)。在 CSV 待定阶段,OLM Operator 会在您的 CSV | 必填 |
|
API 服务名称的人类可读版本,如 | 必填 |
| 有关 Operator 如何使用此 API 服务的简短描述,或有关 API 服务提供的功能描述。 | 必填 |
| 您的 API 服务拥有一类或多类 Kubernetes 对象。它们将在 resources 部分列出,用于告知用户他们可能需要排除故障的对象或如何连接至应用程序,如公开数据库的服务或 Ingress 规则。 建议仅列出对人重要的对象,而不必列出您编排的所有对象。例如,不要列出存储用户不会修改的内部状态的配置映射。 | 选填 |
| 与拥有的 CRD 基本相同。 | 选填 |
5.6.9.1.1. API 服务资源创建
Operator Lifecycle Manager (OLM) 负责为每个唯一拥有的 API 服务创建或替换服务及 API 服务资源:
-
Service pod 选择器从与 API 服务描述的
DeploymentName
字段匹配的 CSV 部署中复制。 - 每次安装都会生成一个新的 CA 密钥/证书对,并且将 base64 编码的 CA 捆绑包嵌入到对应的 API 服务资源中。
5.6.9.1.2. API service serving 证书
每当安装拥有的 API 服务时,OLM 均会处理服务密钥/证书对的生成。服务证书有一个通用名称(CN),其中包含生成的 Service
资源的主机名,并由嵌入在对应 API 服务资源中的 CA 捆绑包的私钥签名。
该证书作为类型 kubernetes.io/tls
secret 存储在部署命名空间中,名为 apiservice-cert
的卷会自动附加至 CSV 中与 API 服务描述的 DeploymentName
字段匹配的 volumes 部分中。
如果尚不存在,则具有匹配名称的卷挂载也会附加至该部署的所有容器中。这样用户便可使用预期名称来定义卷挂载,以适应任何自定义路径要求。所生成的卷挂载的默认路径为 /apiserver.local.config/certificates
,具有相同路径的任何现有卷挂载都会被替换。