1 - ServiceAccount

ServiceAccount 将以下内容绑定在一起:1. 用户可以理解的名称,也可能是外围系统理解的身份标识 2. 可以验证和授权的主体 3. 一组 Secret。

apiVersion: v1

import "k8s.io/api/core/v1"

ServiceAccount

ServiceAccount 将以下内容绑定在一起:

  • 用户可以理解的名称,也可能是外围系统理解的身份标识
  • 可以验证和授权的主体
  • 一组 Secret

  • apiVersion: v1

  • kind: ServiceAccount

  • metadata (ObjectMeta)

    标准对象的元数据,更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • automountServiceAccountToken (boolean)

    AutomountServiceAccountToken 指示作为此服务帐户运行的 Pod 是否应自动挂载 API 令牌,可以在 Pod 级别覆盖。

  • imagePullSecrets ([]LocalObjectReference)

    原子:将在合并期间被替换

    imagePullSecrets 是对同一命名空间中 Secret 的引用列表,用于拉取引用此 ServiceAccount 的 Pod 中的任何镜像。imagePullSecrets 与 Secret 不同,因为 Secret 可以挂载在 Pod 中,但 imagePullSecrets 只能由 kubelet 访问。更多信息:https://kubernetes.io/zh-cn/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod

  • secrets ([]ObjectReference)

    补丁策略:基于键 name 合并

    映射:键 name 的唯一值将在合并过程中保留

    secrets 是允许使用此 ServiceAccount 运行的 Pod 使用的同一命名空间中的秘密列表。仅当此服务帐户的 “kubernetes.io/enforce-mountable-secrets” 注释设置为 “true” 时,Pod 才限于此列表。**已弃用:**自 v1.32 起,kubernetes.io/enforce-mountable-secrets 注解已被弃用。建议使用单独的命名空间来隔离对挂载密钥的访问。此字段不应用于查找自动生成的服务帐户令牌机密以在 Pod 之外使用。相反,可以使用 TokenRequest API 直接请求令牌,或者可以手动创建服务帐户令牌 Secret。更多信息:https://kubernetes.io/zh-cn/docs/concepts/configuration/secret

ServiceAccountList

ServiceAccountList 是 ServiceAccount 对象的列表


操作


get 读取指定的 ServiceAccount

HTTP 请求

GET /api/v1/namespaces/{namespace}/serviceaccounts/{name}

参数

  • name (路径参数): string,必需

    ServiceAccount 的名称。

  • namespace (路径参数): string,必需

    namespace

  • pretty (查询参数): string

    pretty

响应

200 (ServiceAccount): OK

401: Unauthorized

list 列出或监控 ServiceAccount 类型的对象

HTTP 请求

GET /api/v1/namespaces/{namespace}/serviceaccounts

参数

  • namespace (路径参数): string,必需

    namespace

  • continue (查询参数): string

    continue

  • limit (查询参数): integer

    limit

  • pretty (查询参数): string

    pretty

  • sendInitialEvents (查询参数): boolean

sendInitialEvents

  • watch (查询参数): boolean

    watch

响应

200 (ServiceAccountList): OK

401: Unauthorized

list 列出或监控 ServiceAccount 类型的对象

HTTP 请求

GET /api/v1/serviceaccounts

参数

  • continue (查询参数): string

    continue

  • limit (查询参数): integer

    limit

  • pretty (查询参数): string

    pretty

  • watch (查询参数): boolean

    watch

响应

200 (ServiceAccountList): OK

401: Unauthorized

create 创建一个 ServiceAccount

HTTP 请求

POST /api/v1/namespaces/{namespace}/serviceaccounts

参数

  • namespace (路径参数): string,必需

    namespace

  • dryRun (查询参数): string

    dryRun

  • pretty (查询参数): string

    pretty

响应

200 (ServiceAccount): OK

201 (ServiceAccount): Created

202 (ServiceAccount): Accepted

401: Unauthorized

update 替换指定的 ServiceAccount

HTTP 请求

PUT /api/v1/namespaces/{namespace}/serviceaccounts/{name}

参数

  • name (路径参数): string,必需

    ServiceAccount 的名称。

  • namespace (路径参数): string,必需

    namespace

  • dryRun (查询参数): string

    dryRun

  • pretty (查询参数): string

    pretty

响应

200 (ServiceAccount): OK

201 (ServiceAccount): Created

401: Unauthorized

patch 部分更新指定的 ServiceAccount

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/serviceaccounts/{name}

参数

  • name (路径参数): string,必需

    ServiceAccount 的名称。

  • namespace (路径参数): string,必需

    namespace

  • body: Patch, required

  • dryRun (查询参数): string

    dryRun

  • force (查询参数): boolean

    force

  • pretty (查询参数): string

    pretty

响应

200 (ServiceAccount): OK

201 (ServiceAccount): Created

401: Unauthorized

delete 删除一个 ServiceAccount

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/serviceaccounts/{name}

参数

  • name (路径参数): string,必需

    ServiceAccount 的名称。

  • dryRun (查询参数): string

    dryRun

响应

200 (ServiceAccount): OK

202 (ServiceAccount): Accepted

401: Unauthorized

deletecollection 删除 ServiceAccount 的集合

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/serviceaccounts

参数

  • continue (查询参数): string

    continue

  • dryRun (查询参数): string

    dryRun

  • limit (查询参数): integer

    limit

  • pretty (查询参数): string

    pretty

  • sendInitialEvents (查询参数): boolean

sendInitialEvents

响应

200 (Status): OK

401: Unauthorized

2 - TokenRequest

TokenRequest 为给定的服务账号请求一个令牌。

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

TokenRequest

TokenRequest 为给定的服务账号请求一个令牌。


  • apiVersion: authentication.k8s.io/v1

  • kind: TokenRequest

TokenRequestSpec

TokenRequestSpec 包含客户端提供的令牌请求参数。


  • audiences ([]string),必需

    原子:将在合并期间被替换

    audiences 是令牌预期的受众。令牌的接收方必须在令牌的受众列表中用一个标识符来标识自己,否则应拒绝该令牌。为多个受众签发的令牌可用于认证所列举的任意受众的身份,但这意味着目标受众彼此之间的信任程度较高。

  • boundObjectRef (BoundObjectReference)

    boundObjectRef 是对令牌所绑定的一个对象的引用。该令牌只有在绑定对象存在时才有效。注:API 服务器的 TokenReview 端点将校验 boundObjectRef,但其他受众可能不用这样。如果你想要快速撤销,请为 expirationSeconds 设一个较小的值。

    BoundObjectReference 是对令牌所绑定的一个对象的引用。

    • boundObjectRef.apiVersion (string)

      引用对象的 API 版本。

    • boundObjectRef.kind (string)

      引用对象的类别。有效的类别为 “Pod” 和 “Secret”。

    • boundObjectRef.name (string)

      引用对象的名称。

    • boundObjectRef.uid (string)引用对象的 UID。

  • expirationSeconds (int64)

    expirationSeconds 是请求生效的持续时间。令牌签发方可能返回一个生效期不同的令牌,因此客户端需要检查响应中的 “expiration” 字段。

TokenRequestStatus

TokenRequestStatus 是一个令牌请求的结果。


  • expirationTimestamp (Time),必需

    expirationTimestamp 是已返回令牌的到期时间。

    Time 是 time.Time 的包装器,支持正确编组为 YAML 和 JSON。为 time 包提供的许多工厂方法提供了包装器。

  • token (string),必需

    token 是不透明的持有者令牌(Bearer Token)。

操作


create 创建 ServiceAccount 的令牌

HTTP 请求

POST /api/v1/namespaces/{namespace}/serviceaccounts/{name}/token

参数

  • name (路径参数): string,必需

    TokenRequest 的名称

  • namespace (路径参数): string,必需

    namespace

  • body: TokenRequest,必需

  • dryRun (查询参数): string

    dryRun

  • fieldManager (查询参数): string

    fieldManager

  • fieldValidation (查询参数): string

    fieldValidation

  • pretty (查询参数): string

    pretty

响应

200 (TokenRequest): OK

201 (TokenRequest): Created

202 (TokenRequest): Accepted

401: Unauthorized

3 - TokenReview

TokenReview 尝试通过验证令牌来确认已知用户。

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

TokenReview

TokenReview 尝试通过验证令牌来确认已知用户。注意:TokenReview 请求可能会被 kube-apiserver 中的 Webhook 令牌验证器插件缓存。


TokenReviewSpec

TokenReviewPec 是对令牌身份验证请求的描述。


  • audiences ([]string)

    原子性:将在合并期间被替换

    audiences 是带有令牌的资源服务器标识为受众的标识符列表。受众感知令牌身份验证器将验证令牌是否适用于此列表中的至少一个受众。如果未提供受众,受众将默认为 Kubernetes API 服务器的受众。

  • token (string)

    token 是不透明的持有者令牌(Bearer Token)。

TokenReviewStatus

TokenReviewStatus 是令牌认证请求的结果。


  • audiences ([]string)

    原子性:将在合并期间被替换

    audiences 是身份验证者选择的与 TokenReview 和令牌兼容的受众标识符。标识符是TokenReviewSpec 受众和令牌受众的交集中的任何标识符。设置 spec.audiences字段的 TokenReview API 的客户端应验证在 status.audiences 字段中返回了兼容的受众标识符,以确保 TokenReview 服务器能够识别受众。如果 TokenReview返回一个空的 status.audience 字段,其中 status.authenticated 为 “true”,则该令牌对 Kubernetes API 服务器的受众有效。

  • authenticated (boolean)

    authenticated 表示令牌与已知用户相关联。

  • error (string)

    error 表示无法检查令牌

  • user (UserInfo)

    user 是与提供的令牌关联的 UserInfo。

    UserInfo 保存实现 user.Info 接口所需的用户信息

    • user.extra (map[string][]string)

      验证者提供的任何附加信息。
      
    • user.groups ([]string)

      Atomic:将在合并期间被替换

      此用户所属的组的名称。

    • user.uid (string)

      跨时间标识此用户的唯一值。如果删除此用户并添加另一个同名用户,他们将拥有不同的 UID。
      
    • user.username (string)

      在所有活跃用户中唯一标识此用户的名称。
      

操作


create 创建一个TokenReview

HTTP 请求

POST /apis/authentication.k8s.io/v1/tokenreviews

参数

响应

200 (TokenReview): OK

201 (TokenReview): Created

202 (TokenReview): Accepted

401: Unauthorized

4 - CertificateSigningRequest

CertificateSigningRequest 对象提供了一种通过提交证书签名请求并异步批准和颁发 x509 证书的机制。

apiVersion: certificates.k8s.io/v1

import "k8s.io/api/certificates/v1"

证书签名请求 CertificateSigningRequest

CertificateSigningRequest 对象提供了一种通过提交证书签名请求并异步批准和颁发 x509 证书的机制。

kubelet 使用 CertificateSigningRequest API 来获取:

  1. 向 kube-apiserver 进行身份认证的客户端证书(使用 “kubernetes.io/kube-apiserver-client-kubelet” signerName)。
  2. kube-apiserver 可以安全连接到 TLS 端点的服务证书(使用 “kubernetes.io/kubelet-serving” signerName)。

此 API 可用于请求客户端证书以向 kube-apiserver 进行身份验证(使用 “kubernetes.io/kube-apiserver-client”签名者名称),或从自定义非 Kubernetes 签名者那里获取证书。


  • apiVersion: certificates.k8s.io/v1

  • kind: CertificateSigningRequest

  • metadata (ObjectMeta)

  • spec ( CertificateSigningRequestSpec),必需

    spec 包含证书请求,并且在创建后是不可变的。只有 requestsignerNameexpirationSecondsusages 字段可以在创建时设置。其他字段由 Kubernetes 派生,用户无法修改。

  • status ( CertificateSigningRequestStatus)

    status 包含有关请求是被批准还是拒绝的信息,以及签名者颁发的证书或指示签名者失败的状况。

CertificateSigningRequestSpec

CertificateSigningRequestSpec 包含证书请求。


  • request ([]byte),必需

    request 包含一个在 “CERTIFICATE REQUEST” PEM 块中编码的 x509 证书签名请求。当序列化为 JSON 或 YAML 时,数据额外采用 base64 编码。

  • signerName (string),必需

    signerName 表示请求的签名者,是一个限定名。

    CertificateSigningRequests 的 list/watch 请求可以使用 spec.signerName=NAME 字段选择器进行过滤。

    众所周知的 Kubernetes 签名者有:

    1. kubernetes.io/kube-apiserver-client:颁发客户端证书,用于向 kube-apiserver 进行身份验证。对此签名者的请求永远不会被 kube-controller-manager 自动批准,可以由 kube-controller-manager 中的 csrsigning 控制器颁发。
    2. kubernetes.io/kube-apiserver-client-kubelet:颁发客户端证书,kubelet 用于向 kube-apiserver 进行身份验证。对此签名者的请求可以由 kube-controller-manager 中的 csrapproving 控制器自动批准,并且可以由 kube-controller-manager 中的 csrsigning 控制器颁发。
    3. kubernetes.io/kubelet-serving 颁发服务证书,kubelet 用于服务 TLS 端点,kube-apiserver 可以安全的连接到这些端点。对此签名者的请求永远不会被 kube-controller-manager 自动批准,可以由 kube-controller-manager 中的 csrsigning 控制器颁发。

    更多详细信息,请访问 https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers

    也可以指定自定义 signerName。签名者定义如下:

    1. 信任分发:信任(CA 证书包)是如何分发的。
    2. 许可的主体:当请求不允许的主体时的行为。
    3. 请求中必需、许可或禁止的 x509 扩展(包括是否允许 subjectAltNames、哪些类型、对允许值的限制)以及请求不允许的扩展时的行为。
    4. 必需、许可或禁止的密钥用途/扩展密钥用途。
    5. 过期/证书生命周期:是否由签名者确定,管理员可配置。
    6. 是否允许申请 CA 证书。
  • expirationSeconds (int32)

    expirationSeconds 是所颁发证书的所请求的有效期。证书签署者可以颁发具有不同有效期的证书,因此客户端必须检查颁发证书中 notBeforenotAfter 字段之间的增量以确定实际持续时间。

    众所周知的 Kubernetes 签名者在 v1.22+ 版本内实现将遵守此字段,只要请求的持续时间不大于最大持续时间,它们将遵守 Kubernetes 控制管理器的--cluster-signing-duration CLI 标志。

    由于各种原因,证书签名者可能忽略此字段:

    1. 不认识此字段的旧签名者(如 v1.22 版本之前的实现)
    2. 配置的最大持续时间小于请求持续时间的签名者
    3. 配置的最小持续时间大于请求持续时间的签名者

    expirationSeconds 的最小有效值为 600,即 10 分钟。

  • extra (map[string][]string)

    extra 包含创建 CertificateSigningRequest 的用户的额外属性。在创建时由 API 服务器填充,且不可变。

  • groups ([]string)

    原子性:将在合并过程中被替换

    groups 包含创建 CertificateSigningRequest 的用户的组成员关系。在创建时由 API 服务器填充,且不可变。

  • uid (string)

    uid 包含创建 CertificateSigningRequest 的用户的 UID。在创建时由 API 服务器填充,且不可变。

  • usages ([]string)

    原子性:将在合并期间被替换

    usages 指定颁发证书中请求的一组密钥用途。

    TLS 客户端证书的请求通常要求:"digital signature"、"key encipherment"、"client auth"。

    TLS 服务证书的请求通常要求:"key encipherment"、"digital signature"、"server auth"。

    有效值:"signing"、"digital signature"、"content commitment"、"key encipherment"、"key agreement"、"data encipherment"、"cert sign"、"crl sign"、"encipher only"、"decipher only"、"any"、"server auth"、"client auth"、"code signing"、"email protection"、"s/mime"、"ipsec end system"、"ipsec tunnel"、"ipsec user"、"timestamping"、"ocsp signing"、"microsoft sgc"、"netscape sgc"。

  • username (string)

    username 包含创建 CertificateSigningRequest 的用户名。在创建时由 API 服务器填充,且不可变。

CertificateSigningRequestStatus

CertificateSigningRequestStatus 包含用于指示请求的批准/拒绝/失败状态和颁发证书的状况。


  • certificate ([]byte)

    certificate 在出现 Approved 状况后,由签名者使用已颁发的证书填充。这个字段通过 /status 子资源设置。填充后,该字段将不可变。

    如果证书签名请求被拒绝,则添加类型为 Denied 的状况,并且保持该字段为空。如果签名者不能颁发证书,则添加类型为 Failed 的状况,并且保持该字段为空。

    验证要求:

    1. 证书必须包含一个或多个 PEM 块。
    2. 所有的 PEM 块必须有 CERTIFICATE 标签,不包含头和编码的数据,必须是由 BER 编码的 ASN.1 证书结构,如 RFC5280 第 4 节所述。
    3. 非 PEM 内容可能出现在 CERTIFICATE PEM 块之前或之后,并且是未验证的,允许如 RFC7468 5.2 节中描述的解释性文本。

    如果存在多个 PEM 块,并且所请求的 spec.signerName 的定义没有另外说明,那么第一个块是颁发的证书,后续的块应该被视为中间证书并在 TLS 握手中呈现。

    证书编码为 PEM 格式。

    当序列化为 JSON 或 YAML 时,数据额外采用 base64 编码,它包括:

    base64(
        -----BEGIN CERTIFICATE-----
        ...
        -----END CERTIFICATE-----
    )
    
  • conditions ([]CertificateSigningRequestCondition)

    Map:键类型的唯一值将在合并期间保留

    应用于请求的状况。已知的状况有 "Approved""Denied""Failed"

    CertificateSigningRequestCondition 描述 CertificateSigningRequest 对象的状况。

    • conditions.status (string),必需

      状况的状态,TrueFalseUnknown 之一。ApprovedDeniedFailed 的状况不可以是 "False""Unknown"

    • conditions.type (string),必需

      状况的类型。已知的状况是 "Approved""Denied""Failed"

      通过 /approval 子资源添加 "Approved" 状况,表示请求已被批准并且应由签名者颁发。

      通过 /approval 子资源添加 "Denied" 状况,指示请求被拒绝并且不应由签名者颁发。

      通过 /status 子资源添加 "Failed" 状况,表示签名者未能颁发证书。

      ApprovedDenied 状况是相互排斥的。ApprovedDeniedFailed 状况一旦添加就无法删除。

      给定类型只允许设置一种状况。

    • conditions.lastTransitionTime (Time)

      lastTransitionTime 是状况上一次从一种状态转换到另一种状态的时间。如果未设置,当添加新状况类型或更改现有状况的状态时,服务器默认为当前时间。

      Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。为 time 包提供的许多工厂方法提供了包装器。

    • conditions.lastUpdateTime (Time)

    lastUpdateTime 是该状况最后一次更新的时间。

    Time 是 time.Time 的包装器,支持正确编组为 YAML 和 JSON。为 time 包提供的许多工厂方法提供了包装器。

    • conditions.message (string)

    message 包含一个人类可读的消息,包含关于请求状态的详细信息。

    • conditions.reason (string)

    reason 表示请求状态的简短原因。

CertificateSigningRequestList

CertificateSigningRequestList 是 CertificateSigningRequest 对象的集合。


  • apiVersion: certificates.k8s.io/v1

  • kind: CertificateSigningRequestList

  • metadata (ListMeta)

  • items ([]CertificateSigningRequest),必需

    items 是 CertificateSigningRequest 对象的集合。

操作


get 读取指定的 CertificateSigningRequest

HTTP 请求

GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • pretty (查询参数): string

    pretty

响应

200 (CertificateSigningRequest): OK

401: Unauthorized

get 读取指定 CertificateSigningRequest 的批准信息

HTTP 请求

GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • pretty (查询参数): string

    pretty

响应

200 (CertificateSigningRequest): OK

401: Unauthorized

get 读取指定 CertificateSigningRequest 的状态

HTTP 请求

GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • pretty (查询参数): string

    pretty

响应

200 (CertificateSigningRequest): OK

401: Unauthorized

list list 或 watch CertificateSigningRequest 类型的对象

HTTP 请求

GET /apis/certificates.k8s.io/v1/certificatesigningrequests

参数

响应

200 (CertificateSigningRequestList): OK

401: Unauthorized

create 创建一个 CertificateSigningRequest

HTTP 请求

POST /apis/certificates.k8s.io/v1/certificatesigningrequests

参数

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

202 (CertificateSigningRequest): Accepted

401: Unauthorized

update 替换指定的 CertificateSigningRequest

HTTP 请求

PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: CertificateSigningRequest,必需

  • dryRun (查询参数): string

    dryRun

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

update 替换对指定 CertificateSigningRequest 的批准信息

HTTP 请求

PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: CertificateSigningRequest,必需

  • dryRun (查询参数): string

    dryRun

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

update 替换指定 CertificateSigningRequest 的状态

HTTP 请求

PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status

参数

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

patch 部分更新指定的 CertificateSigningRequest

HTTP 请求

PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: Patch,必需

  • dryRun (查询参数): string

    dryRun

  • fieldManager (查询参数): string

    fieldManager

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

patch 部分更新指定 CertificateSigningRequest 的批准信息

HTTP 请求

PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: Patch,必需

  • dryRun (查询参数): string

    dryRun

  • fieldManager (查询参数): string

    fieldManager

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

patch 部分更新指定 CertificateSigningRequest 的状态

HTTP 请求

PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: Patch,必需

  • dryRun (查询参数): string

    dryRun

  • fieldManager (查询参数): string

    fieldManager

响应

200 (CertificateSigningRequest): OK

201 (CertificateSigningRequest): Created

401: Unauthorized

delete 删除一个 CertificateSigningRequest

HTTP 请求

DELETE /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}

参数

  • name (路径参数): string,必需

    CertificateSigningRequest 的名称。

  • body: DeleteOptions

  • dryRun (查询参数): string

    dryRun

响应

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection 删除 CertificateSigningRequest 集合

HTTP 请求

DELETE /apis/certificates.k8s.io/v1/certificatesigningrequests

参数

响应

200 (Status): OK

401: Unauthorized

5 - ClusterTrustBundle v1beta1

ClusterTrustBundle 是一个集群范围的容器,用于存放 X.509 信任锚(根证书)。

apiVersion: certificates.k8s.io/v1beta1

import "k8s.io/api/certificates/v1beta1"

ClusterTrustBundle

ClusterTrustBundle 是一个集群范围的容器,用于存放 X.509 信任锚(根证书)。

ClusterTrustBundle 对象被视为可被集群中的任何已通过身份验证的用户读取,因为此对象可以由使用 clusterTrustBundle 投射的 Pod 挂载。所有服务账号默认都有对 ClusterTrustBundle 的读取权限。对于仅对集群具有命名空间级访问权限的用户,可以通过伪装他们可以访问的服务账号来读取 ClusterTrustBundle。

ClusterTrustBundle 可以选择与特定的签名程序相关联,此时它包含该签名程序的一组有效信任锚。签名程序可以有多个关联的 ClusterTrustBundle;对于该签名程序而言每个 ClusterTrustBundle 都是独立的一组信任锚。准入控制用于确保只有对签名程序有访问权限的用户才能创建或修改相应的捆绑包。


  • apiVersion: certificates.k8s.io/v1beta1

  • kind: ClusterTrustBundle

ClusterTrustBundleSpec

ClusterTrustBundleSpec 包含签名程序和信任锚。


  • trustBundle (string),必需

    trustBundle 包含此捆绑包的各个 X.509 信任锚,这个 PEM 捆绑包是采用 PEM 包装的 DER 格式的若干 X.509 证书。

    数据必须仅由可解析为有效 X.509 证书的 PEM 证书块组成。每个证书必须包含设置了 CA 标志的基本约束扩展。API 服务器将拒绝包含重复证书或使用 PEM 块头的对象。

    ClusterTrustBundles 的使用者(包括 kubelet)可以根据自己的逻辑对此文件中的证书块进行重新排序和去重,也可以删除 PEM 块头和块间数据。

  • signerName (string)

    signerName 表示关联的签名程序(如果有)。

    要创建或更新设置了 signerName 属性的 ClusterTrustBundle,你必须具备以下集群范围的权限:

    group=certificates.k8s.io resource=signers resourceName=\<签名程序名称> verb=attest

    如果 signerName 不为空,则 ClusterTrustBundle 对象的名称必须以签名程序名称作为前缀(将斜杠转换为冒号)。例如,对于签名程序名称 example.com/foo,有效的 ClusterTrustBundle 对象名称包括example.com:foo:abcexample.com:foo:v1

    如果 signerName 为空,则 ClusterTrustBundle 对象的名称不能具有此类前缀。

    针对 ClusterTrustBundles 的列举/监视请求可以使用 spec.signerName=NAME 字段选择算符针对此字段进行过滤。

ClusterTrustBundleList

ClusterTrustBundleList 是 ClusterTrustBundle 对象的集合。


  • apiVersion: certificates.k8s.io/v1beta1

  • kind: ClusterTrustBundleList

  • metadata (ListMeta)

    metadata 包含列表的元数据。

  • items ([]ClusterTrustBundle),必需

    items 是 ClusterTrustBundle 对象的集合。

操作


get 读取指定的 ClusterTrustBundle

HTTP 请求

GET /apis/certificates.k8s.io/v1beta1/clustertrustbundles/{name}

参数

  • name路径参数):string,必需

    ClusterTrustBundle 的名称。

  • pretty查询参数):string

    pretty

响应

200 (ClusterTrustBundle): OK

401: Unauthorized

list 列举或监视类别为 ClusterTrustBundle 的对象

HTTP 请求

GET /apis/certificates.k8s.io/v1beta1/clustertrustbundles

参数

响应

200 (ClusterTrustBundleList): OK

401: Unauthorized

create 创建 ClusterTrustBundle

HTTP 请求

POST /apis/certificates.k8s.io/v1beta1/clustertrustbundles

参数

响应

200 (ClusterTrustBundle): OK

201 (ClusterTrustBundle): Created

202 (ClusterTrustBundle): Accepted

401: Unauthorized

update 替换指定的 ClusterTrustBundle

HTTP 请求

PUT /apis/certificates.k8s.io/v1beta1/clustertrustbundles/{name}

参数

  • name路径参数):string,必需

    ClusterTrustBundle 的名称。

  • body: ClusterTrustBundle,必需

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • pretty查询参数):string

    pretty

响应

200 (ClusterTrustBundle): OK

201 (ClusterTrustBundle): Created

401: Unauthorized

patch 部分更新指定的 ClusterTrustBundle

HTTP 请求

PATCH /apis/certificates.k8s.io/v1beta1/clustertrustbundles/{name}

参数

  • name路径参数):string,必需

    ClusterTrustBundle 的名称。

  • body: Patch,必需

  • dryRun查询参数):string

    dryRun

  • fieldManager查询参数):string

    fieldManager

  • fieldValidation查询参数):string

    fieldValidation

  • force查询参数):boolean

    force

  • pretty查询参数):string

    pretty

响应

200 (ClusterTrustBundle): OK

201 (ClusterTrustBundle): Created

401: Unauthorized

delete 删除 ClusterTrustBundle

HTTP 请求

DELETE /apis/certificates.k8s.io/v1beta1/clustertrustbundles/{name}

参数

响应

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection 删除 ClusterTrustBundle 的集合

HTTP 请求

DELETE /apis/certificates.k8s.io/v1beta1/clustertrustbundles

参数

响应

200 (Status): OK

401: Unauthorized

6 - SelfSubjectReview

SelfSubjectReview 包含 kube-apiserver 所拥有的与发出此请求的用户有关的用户信息。

apiVersion: authentication.k8s.io/v1

import "k8s.io/api/authentication/v1"

SelfSubjectReview

SelfSubjectReview 包含 kube-apiserver 所拥有的与发出此请求的用户有关的用户信息。使用伪装时,用户将收到被伪装用户的用户信息。如果使用伪装或请求头部进行身份验证,则所有额外的键都将被忽略大小写并以小写形式返回结果。


SelfSubjectReviewStatus

SelfSubjectReviewStatus 由 kube-apiserver 进行填充并发送回用户。


  • userInfo (UserInfo)

    发出此请求的用户的用户属性。

    userInfo 包含实现 user.Info 接口所需的用户相关信息。

    • userInfo.extra (map[string][]string)

      由身份认证组件提供的所有附加信息。

    • userInfo.groups ([]string)

      原子性:合并期间将被替换

      此用户所属的用户组的名称。

    • userInfo.uid (string)

      跨时间标识此用户的唯一值。如果此用户被删除且另一个同名用户被添加,他们将具有不同的 UID。

    • userInfo.username (string)

      在所有活跃用户中标识此用户的名称。

操作


create 创建 SelfSubjectReview

HTTP 请求

POST /apis/authentication.k8s.io/v1/selfsubjectreviews

参数

响应

200 (SelfSubjectReview): OK

201 (SelfSubjectReview): Created

202 (SelfSubjectReview): Accepted

401: Unauthorized