kube-apiserver 配置 (v1)

v1 包是 API 的 v1 版本。

资源类型

TracingConfiguration

出现于

TracingConfiguration 提供 OpenTelemetry 跟踪客户端的版本化配置。

字段描述
endpoint
字符串

收集器的端点,此组件将把跟踪报告到该端点。连接不安全,目前不支持 TLS。建议取消设置,端点是 otlp grpc 默认值,localhost:4317。

samplingRatePerMillion
int32

SamplingRatePerMillion 是每百万跨度要收集的样本数。建议取消设置。如果取消设置,采样器会尊重其父跨度的采样率,但否则永远不会采样。

AdmissionConfiguration

AdmissionConfiguration 为准入控制器提供版本化的配置。

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
AdmissionConfiguration
plugins (插件)
[]AdmissionPluginConfiguration

Plugins 允许为每个准入控制插件指定配置。

AuthenticationConfiguration

AuthenticationConfiguration 为认证提供版本化配置。

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
AuthenticationConfiguration
jwt [必需]
[]JWTAuthenticator

jwt 是一个认证器列表,用于使用符合 JWT 标准的令牌对 Kubernetes 用户进行认证。认证器将尝试解析原始 ID 令牌,并验证它是否由配置的颁发者(issuer)签名。用于验证签名的公钥是从颁发者的公共端点通过 OIDC 发现机制获取的。对于传入的令牌,系统将按照此列表中指定的顺序尝试每个 JWT 认证器。请注意,其他认证器可能在 JWT 认证器之前或之后运行。JWT 认证器相对于其他认证器的具体位置既未定义,在各版本发布中也不稳定。由于每个 JWT 认证器必须拥有唯一的颁发者 URL,因此最多只会有一个 JWT 认证器尝试对令牌进行加密验证。

有效的 JWT 有效负载至少必须包含以下声明:{ "iss": "https://issuer.example.com", "aud": ["audience"], "exp": 1234567890, "": "username" }

anonymous [必需]
AnonymousAuthConfig

如果存在,则不能设置 --anonymous-auth

AuthorizationConfiguration

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
AuthorizationConfiguration
authorizers [必需]
[]AuthorizerConfiguration

Authorizers 是一个有序的授权器列表,用于对请求进行授权。这类似于 kube-apiserver 标志 --authorization-modes 必须至少有一个。

EncryptionConfiguration (加密配置)

EncryptionConfiguration 存储加密提供程序的完整配置。它还允许使用通配符来指定应加密的资源。使用 '*' 来加密组内的所有资源,或使用 '*.*' 来加密所有资源。'*.' 可用于加密核心组中的所有资源。'*.*' 将加密所有资源,甚至包括 API 服务器启动后添加的自定义资源。不允许在同一个资源列表或跨多个条目中使用重叠的通配符,因为部分配置将无效。资源列表按顺序处理,前面的列表优先级更高。

示例

kind: EncryptionConfiguration
apiVersion: apiserver.config.k8s.io/v1
resources:
- resources:
  - events
  providers:
  - identity: {}  # do not encrypt events even though *.* is specified below
- resources:
  - secrets
  - configmaps
  - pandas.awesome.bears.example
  providers:
  - aescbc:
      keys:
      - name: key1
        secret: c2VjcmV0IGlzIHNlY3VyZQ==
- resources:
  - '*.apps'
  providers:
  - aescbc:
      keys:
      - name: key2
        secret: c2VjcmV0IGlzIHNlY3VyZSwgb3IgaXMgaXQ/Cg==
- resources:
  - '*.*'
  providers:
  - aescbc:
      keys:
      - name: key3
        secret: c2VjcmV0IGlzIHNlY3VyZSwgSSB0aGluaw==
字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
EncryptionConfiguration (加密配置)
resources [必需]
[]ResourceConfiguration

resources 是一个包含资源及其对应加密提供程序的列表。

TracingConfiguration

TracingConfiguration 为追踪客户端提供版本化配置。

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
TracingConfiguration
TracingConfiguration [必需]
TracingConfiguration
(TracingConfiguration 的成员被嵌入到此类型中。)

嵌入组件配置的追踪配置结构体

AESConfiguration (AES 配置)

出现于

AESConfiguration 包含 AES 转换器的 API 配置。

字段描述
keys [必需]
[]Key

keys 是用于创建 AES 转换器的密钥列表。对于 AES-CBC,每个密钥必须为 32 字节长;对于 AES-GCM,则为 16、24 或 32 字节。

AdmissionPluginConfiguration (准入插件配置)

出现于

AdmissionPluginConfiguration 提供单个插件的配置。

字段描述
name [必需]
字符串

Name 是准入控制器的名称。它必须与已注册的准入插件名称匹配。

path (路径)
字符串

Path 是包含插件配置的配置文件的路径。

configuration (配置)
k8s.io/apimachinery/pkg/runtime.Unknown

Configuration 是一个嵌入式配置对象,用作插件的配置。如果存在,它将取代配置文件的路径。

AnonymousAuthCondition (匿名身份验证条件)

出现于

AnonymousAuthCondition 描述了启用匿名认证的条件。

字段描述
path [必需]
字符串

启用匿名认证的路径。

AnonymousAuthConfig

出现于

AnonymousAuthConfig 提供匿名认证器的配置。

字段描述
enabled [必需]
bool
未提供描述。
conditions [必需]
[]AnonymousAuthCondition

如果设置,只有当请求满足其中一个条件时,才允许匿名认证。

AudienceMatchPolicyType (受众匹配策略类型)

(string 的别名)

出现于

AudienceMatchPolicyType 是一组针对 issuer.audienceMatchPolicy 的有效值

AuthorizerConfiguration

出现于

字段描述
type [必需]
字符串

Type 指示授权器的类型 "Webhook" 在通用 API 服务器中受支持。其他 API 服务器可能支持其他授权器类型,例如 Node、RBAC、ABAC 等。

name [必需]
字符串

用于描述 webhook 的名称。这在监控机制中明确用于指标。必需,没有默认值

webhook [必需]
WebhookConfiguration

Webhook 定义 Webhook 授权器的配置。必须在 Type=Webhook 时定义。在 Type!=Webhook 时不得定义。

ClaimMappings

出现于

ClaimMappings 提供声明映射的配置

字段描述
username [必需]
PrefixedClaimOrExpression (带前缀的声明或表达式)

username 代表用户名属性的选项。该声明的值必须是一个单字符串。与 --oidc-username-claim 和 --oidc-username-prefix 标志相同。如果设置了 username.expression,则表达式必须产生一个字符串值。如果 username.expression 使用了 'claims.email',那么在 username.expression 或 extra[*].valueExpression 或 claimValidationRules[*].expression 中必须使用 'claims.email_verified'。一个与 username.claim 设置为 'email' 时自动应用的验证相匹配的声明验证规则表达式示例为 'claims.?email_verified.orValue(true) == true'。通过显式将值与 true 进行比较,我们让类型检查器看到结果将是一个布尔值,并确保在运行时捕获非布尔值的 email_verified 声明。

在基于标志的方法中,--oidc-username-claim 和 --oidc-username-prefix 是可选的。如果未设置 --oidc-username-claim,默认值为 "sub"。对于认证配置,声明或前缀没有默认值。必须显式设置声明和前缀。对于声明,如果未通过旧标志方法设置 --oidc-username-claim,请在认证配置中将 username.claim 配置为 "sub"。对于前缀:(1) --oidc-username-prefix="-",表示未向用户名添加前缀。若要在认证配置中实现相同行为,请设置 username.prefix=""。(2) --oidc-username-prefix="" 且 --oidc-username-claim != "email",前缀为 "<--oidc-issuer-url 的值>#"。若要在认证配置中实现相同行为,请设置 username.prefix="#"。(3) --oidc-username-prefix=""。若要在认证配置中实现相同行为,请设置 username.prefix=""。

groups
PrefixedClaimOrExpression (带前缀的声明或表达式)

groups 代表组属性的选项。该声明的值必须是字符串或字符串数组声明。如果设置了 groups.claim,则必须指定前缀(可以是空字符串)。如果设置了 groups.expression,则表达式必须产生字符串或字符串数组值。""、[] 和 null 值被视为组映射不存在。

uid
ClaimOrExpression (声明或表达式)

uid 代表 uid 属性的选项。声明必须是单字符串声明。如果设置了 uid.expression,则表达式必须产生一个字符串值。

extra (额外)
[]ExtraMapping

extra 代表额外属性的选项。表达式必须产生字符串或字符串数组值。如果值为空,则额外映射将不存在。

硬编码的额外键/值

  • key: "foo" valueExpression: "'bar'" 这将导致产生额外属性 - foo: ["bar"]

硬编码的键,复制声明值的 value

  • key: "foo" valueExpression: "claims.some_claim" 这将导致产生额外属性 - foo: [some_claim 的值]

硬编码的键,从声明值派生的 value

  • key: "admin" valueExpression: '(has(claims.is_admin) && claims.is_admin) ? "true":""' 这将导致
  • 如果 is_admin 声明存在且为 true,则产生额外属性 - admin: ["true"]
  • 如果 is_admin 声明存在但为 false,或者 is_admin 声明不存在,则不会添加额外属性

ClaimOrExpression (声明或表达式)

出现于

ClaimOrExpression 提供单个声明或表达式的配置。

字段描述
claim (声明)
字符串

claim 是要使用的 JWT 声明。必须设置 claim 或 expression 其中之一。与 expression 互斥。

expression (表达式)
字符串

expression 代表将由 CEL 计算的表达式。

CEL 表达式可以访问令牌声明的内容,这些内容被组织在 CEL 变量中

  • 'claims' 是声明名称到声明值的映射。例如,名为 'sub' 的变量可以作为 'claims.sub' 访问。嵌套声明可以使用点表示法访问,例如 'claims.foo.bar'。

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

与 claim 互斥。

ClaimValidationRule (声明验证规则)

出现于

ClaimValidationRule 提供单个声明验证规则的配置。

字段描述
claim (声明)
字符串

claim 是所需声明的名称。与 --oidc-required-claim 标志相同。仅支持字符串声明键。与 expression 和 message 互斥。

requiredValue (必需值)
字符串

requiredValue 是所需声明的值。与 --oidc-required-claim 标志相同。仅支持字符串声明值。如果设置了 claim 但未设置 requiredValue,则该声明必须存在且值必须为空字符串。与 expression 和 message 互斥。

expression (表达式)
字符串

expression 代表将由 CEL 计算的表达式。必须产生一个布尔值。

CEL 表达式可以访问令牌声明的内容,这些内容被组织在 CEL 变量中

  • 'claims' 是声明名称到声明值的映射。例如,名为 'sub' 的变量可以作为 'claims.sub' 访问。嵌套声明可以使用点表示法访问,例如 'claims.foo.bar'。验证通过必须返回 true。

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

与 claim 和 requiredValue 互斥。

message
字符串

message 自定义当 expression 返回 false 时返回的错误消息。message 是一个字面字符串。与 claim 和 requiredValue 互斥。

EgressSelectorType (出口选择器类型)

(string 的别名)

出现于

EgressSelectorType 是一个指标,用于指示发送流量时应使用哪个出口选择。

ExtraMapping (额外映射)

出现于

ExtraMapping 提供单个额外映射的配置。

字段描述
key [必需]
字符串

key 是用作额外属性键的字符串。key 必须是域名前缀路径(例如 example.org/foo)。第一个 "/" 之前的所有字符必须是 RFC 1123 定义的有效子域名。第一个 "/" 之后的所有字符必须是 RFC 3986 定义的有效 HTTP 路径字符。key 必须是小写。要求唯一。

valueExpression [必需]
字符串

valueExpression 是一个用于提取额外属性值的 CEL 表达式。valueExpression 必须产生一个字符串或字符串数组值。""、[] 和 null 值被视为额外映射不存在。字符串数组中包含的空字符串值将被过滤掉。

CEL 表达式可以访问令牌声明的内容,这些内容被组织在 CEL 变量中

  • 'claims' 是声明名称到声明值的映射。例如,名为 'sub' 的变量可以作为 'claims.sub' 访问。嵌套声明可以使用点表示法访问,例如 'claims.foo.bar'。

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

IdentityConfiguration (身份配置)

出现于

IdentityConfiguration 是一个空结构,允许在提供程序配置中使用身份转换器。

Issuer

出现于

Issuer 提供外部提供商特定设置的配置。

字段描述
url [必需]
字符串

url 指向颁发者 URL,格式为 https://url 或 https://url/path。这必须与提供的 JWT 中的 "iss" 声明相匹配,并与发现机制返回的颁发者匹配。与 --oidc-issuer-url 标志的值相同。除非被 discoveryURL 覆盖,否则将从 "{url}/.well-known/openid-configuration" 获取发现信息。要求在所有 JWT 认证器中唯一。注意,出口选择配置不用于此网络连接。

discoveryURL (发现 URL)
字符串

discoveryURL(如果指定)将覆盖用于获取发现信息的 URL,而不是使用 "{url}/.well-known/openid-configuration"。系统将使用指定的确切值,因此如果需要,必须在 discoveryURL 中包含 "/.well-known/openid-configuration"。

所获取发现信息中的 "issuer" 字段必须与 AuthenticationConfiguration 中的 "issuer.url" 字段匹配,并将用于验证所提供 JWT 中的 "iss" 声明。这适用于众所周知(well-known)端点和 jwks 端点托管在与颁发者不同位置(例如集群本地)的场景。

示例:使用命名空间 'oidc-namespace' 中的 kubernetes 服务 'oidc' 暴露的发现 URL,且发现信息在 '/.well-known/openid-configuration' 处可用。 discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority 用于验证 TLS 连接,叶证书上的主机名必须设置为 'oidc.oidc-namespace'。

curl https://oidc.oidc-namespace/.well-known/openid-configuration (.discoveryURL 字段) { issuer: "https://oidc.example.com" (.url 字段) }

discoveryURL 必须与 url 不同。要求在所有 JWT 认证器中唯一。注意,出口选择配置不用于此网络连接。

certificateAuthority (证书颁发机构)
字符串

certificateAuthority 包含 PEM 编码的证书颁发机构证书,用于在获取发现信息时验证连接。如果未设置,则使用系统验证器。与 --oidc-ca-file 标志所引用文件内容相同。

audiences [必需]
[]string

audiences 是 JWT 必须颁发给的一组可接受受众。至少一个条目必须与所提供 JWT 中的 "aud" 声明匹配。与 --oidc-client-id 标志的值相同(尽管此字段支持数组)。要求非空。

audienceMatchPolicy (受众匹配策略)
AudienceMatchPolicyType (受众匹配策略类型)

audienceMatchPolicy 定义了 "audiences" 字段如何用于匹配所提供 JWT 中的 "aud" 声明。允许的值为

  1. "MatchAny"(当指定多个受众时),以及
  2. 空(或未设置)或 "MatchAny"(当仅指定单个受众时)。
  • MatchAny:所提供 JWT 中的 "aud" 声明必须至少与 "audiences" 字段中的一个条目匹配。例如,如果 "audiences" 是 ["foo", "bar"],则所提供 JWT 中的 "aud" 声明必须包含 "foo" 或 "bar"(也可以同时包含两者)。

  • "":当在 "audiences" 字段中指定单个受众时,匹配策略可以为空(或未设置)。所提供 JWT 中的 "aud" 声明必须包含该单个受众(也可以包含其他受众)。

对于更细致的受众验证,请使用 claimValidationRules。示例:claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' 以要求精确匹配。

egressSelectorType (出口选择器类型)
EgressSelectorType (出口选择器类型)

egressSelectorType 是一个指标,用于指示发送与此颁发者相关的所有流量(发现、JWKS、分布式声明等)时应使用哪个出口选择。如果未指定,则不使用自定义拨号器。指定时,有效选择为 "controlplane" 和 "cluster"。这些对应于 --egress-selector-config-file 中的关联值。

  • controlplane:用于发送到控制平面的流量。

  • cluster:用于发送到由 Kubernetes 管理的系统的流量。

JWTAuthenticator

出现于

JWTAuthenticator 提供单个 JWT 认证器的配置。

字段描述
issuer [必需]
Issuer

issuer 包含基本的 OIDC 提供商连接选项。

claimValidationRules (声明验证规则)
[]ClaimValidationRule

claimValidationRules 是用于验证令牌声明以认证用户的规则。

claimMappings [必需]
ClaimMappings

claimMappings 将令牌声明指向被视为用户属性的映射。

userValidationRules (用户验证规则)
[]UserValidationRule

userValidationRules 是在完成认证前应用于最终用户的规则。这些规则允许将不变量应用于传入身份,例如防止使用 Kubernetes 组件通常使用的 system: 前缀。验证规则在逻辑上进行“与”(AND)运算,所有规则必须返回 true 才能通过验证。

KMSConfiguration (KMS 配置)

出现于

KMSConfiguration 包含用于基于 KMS 的封装转换器的名称、缓存大小和配置文件路径。

字段描述
apiVersion
字符串

apiVersion of KeyManagementService (密钥管理服务的 API 版本)

name [必需]
字符串

name 是要使用的 KMS 插件的名称。

cachesize (缓存大小)
int32

cachesize 是内存中缓存的密钥的最大数量。默认值为 1000。设置为负值可禁用缓存。此字段仅允许用于 KMS v1 提供程序。

endpoint [必需]
字符串

endpoint 是 gRPC 服务器的监听地址,例如 "unix:///var/run/kms-provider.sock"。

timeout
meta/v1.Duration

gRPC 调用到 kms-plugin 的超时时间(例如 5s)。默认为 3 秒。

出现于

Key 包含用于转换器的提供密钥的名称和密钥内容。

字段描述
name [必需]
字符串

name 是将数据存储到磁盘时使用的密钥名称。

secret [必需]
字符串

secret 是实际的密钥,以 base64 编码。

PrefixedClaimOrExpression (带前缀的声明或表达式)

出现于

PrefixedClaimOrExpression 提供单个带前缀声明或表达式的配置。

字段描述
claim (声明)
字符串

claim 是要使用的 JWT 声明。与 expression 互斥。

prefix
字符串

prefix 是在声明值之前添加的内容,以防止与现有名称冲突。如果设置了 claim,则需要设置 prefix,它可以是空字符串。与 expression 互斥。

expression (表达式)
字符串

expression 代表将由 CEL 计算的表达式。

CEL 表达式可以访问令牌声明的内容,这些内容被组织在 CEL 变量中

  • 'claims' 是声明名称到声明值的映射。例如,名为 'sub' 的变量可以作为 'claims.sub' 访问。嵌套声明可以使用点表示法访问,例如 'claims.foo.bar'。

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

与 claim 和 prefix 互斥。

ProviderConfiguration (提供程序配置)

出现于

ProviderConfiguration 存储加密提供程序的配置。

字段描述
aesgcm [必需]
AESConfiguration (AES 配置)

aesgcm 是 AES-GCM 转换器的配置。

aescbc [必需]
AESConfiguration (AES 配置)

aescbc 是 AES-CBC 转换器的配置。

secretbox [必需]
SecretboxConfiguration (Secretbox 配置)

secretbox 是基于 Secretbox 的转换器的配置。

identity [必需]
IdentityConfiguration (身份配置)

identity 是身份转换器的(空)配置。

kms [必需]
KMSConfiguration (KMS 配置)

kms 包含用于基于 KMS 的封装转换器的名称、缓存大小和配置文件路径。

ResourceConfiguration (资源配置)

出现于

ResourceConfiguration 存储每个资源的配置。

字段描述
resources [必需]
[]string

resources 是需要加密的 Kubernetes 资源列表。资源名称派生自组/版本/资源中的 resourceresource.group。例如:pandas.awesome.bears.example 是一个自定义资源,其 'group' 为 awesome.bears.example,'resource' 为 pandas。使用 '*.*' 加密所有资源,使用 '*.' 加密特定组中的所有资源。例如:'*.awesome.bears.example' 将加密 'awesome.bears.example' 组中的所有资源。例如:'*.' 将加密核心组中的所有资源(如 pods, configmaps 等)。

providers [必需]
[]ProviderConfiguration

providers 是用于将资源读写到磁盘的转换器列表。例如:aesgcm, aescbc, secretbox, identity, kms。

SecretboxConfiguration (Secretbox 配置)

出现于

SecretboxConfiguration 包含 Secretbox 转换器的 API 配置。

字段描述
keys [必需]
[]Key

keys 是用于创建 Secretbox 转换器的密钥列表。每个密钥必须为 32 字节长。

UserValidationRule (用户验证规则)

出现于

UserValidationRule 提供单个用户信息验证规则的配置。

字段描述
expression [必需]
字符串

expression 代表将由 CEL 计算的表达式。必须返回 true 才能通过验证。

CEL 表达式可以访问 UserInfo 的内容,这些内容被组织在 CEL 变量中

  • 'user' - authentication.k8s.io/v1, Kind=UserInfo 对象。定义参考 https://github.com/kubernetes/api/blob/release-1.28/authentication/v1/types.go#L105-L122。API 文档:https://kubernetes.ac.cn/docs/reference/generated/kubernetes-api/v1.28/#userinfo-v1-authentication-k8s-io

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/

message
字符串

message 自定义当规则返回 false 时返回的错误消息。message 是一个字面字符串。

WebhookConfiguration

出现于

字段描述
authorizedTTL [必需]
meta/v1.Duration

从 webhook 授权器缓存“授权”响应的持续时间。与设置 --authorization-webhook-cache-authorized-ttl 标志相同。默认值:5m0s

cacheAuthorizedRequests (缓存已授权请求)
bool

CacheAuthorizedRequests 指定是否应缓存已授权的请求。如果设置为 true,缓存决策的 TTL 可以通过 AuthorizedTTL 字段进行配置。默认值:true

unauthorizedTTL [必需]
meta/v1.Duration

从 webhook 授权器缓存“未授权”响应的持续时间。与设置 --authorization-webhook-cache-unauthorized-ttl 标志相同。默认值:30s

cacheUnauthorizedRequests (缓存未授权请求)
bool

CacheUnauthorizedRequests 指定是否应缓存未授权的请求。如果设置为 true,缓存决策的 TTL 可以通过 UnauthorizedTTL 字段进行配置。默认值:true

timeout [必需]
meta/v1.Duration

webhook 请求的超时时间。允许的最大值为 30s。必需,没有默认值。

subjectAccessReviewVersion [必需]
字符串

要发送到 webhook 并从中期望的 authorization.k8s.io SubjectAccessReview 的 API 版本。与设置 --authorization-webhook-version 标志相同。有效值:v1beta1、v1。必需,没有默认值

matchConditionSubjectAccessReviewVersion [必需]
字符串

MatchConditionSubjectAccessReviewVersion 指定 CEL 表达式针对其进行评估的 SubjectAccessReview 版本。有效值:v1。必需,没有默认值

failurePolicy [必需]
字符串

控制当 webhook 请求无法完成或返回格式错误的响应或评估 matchConditions 时,授权决策。有效值

  • NoOpinion:继续到后续授权器,以查看其中一个是否允许请求
  • Deny:拒绝请求,而不咨询后续授权器。必需,没有默认值。
connectionInfo [必需]
WebhookConnectionInfo

ConnectionInfo 定义了我们如何与 webhook 通信

matchConditions [必需]
[]WebhookMatchCondition

matchConditions 是一个条件列表,必须满足这些条件才能将请求发送到此 webhook。空的 matchConditions 列表将匹配所有请求。允许的最大 matchConditions 数量为 64 个。

确切的匹配逻辑是(按顺序)

  1. 如果至少一个 matchCondition 评估为 FALSE,则跳过 webhook。
  2. 如果所有 matchCondition 都评估为 TRUE,则调用 webhook。
  3. 如果至少一个 matchCondition 评估出错(但没有一个为 FALSE)
    • 如果 failurePolicy=Deny,则 webhook 拒绝该请求
    • 如果 failurePolicy=NoOpinion,则忽略该错误并跳过 webhook

WebhookConnectionInfo

出现于

字段描述
type [必需]
字符串

控制 webhook 如何与服务器通信。有效值

  • KubeConfigFile:使用 kubeConfigFile 中指定的文件来定位服务器。
  • InClusterConfig:使用集群内配置来调用由 kube-apiserver 托管的 SubjectAccessReview API。此模式不允许用于 kube-apiserver。
kubeConfigFile [必需]
字符串

连接信息的 KubeConfigFile 路径。如果 connectionInfo.Type 为 KubeConfig,则必需。

WebhookMatchCondition

出现于

字段描述
expression [必需]
字符串

expression 代表将由 CEL 计算的表达式。必须计算为 bool 类型。CEL 表达式可以访问 v1 版本中 SubjectAccessReview 的内容。如果 request 变量中由 subjectAccessReviewVersion 指定的版本为 v1beta1,则在计算 CEL 表达式之前,内容将被转换为 v1 版本。

  • 'resourceAttributes' 描述资源访问请求的信息,对于非资源请求则未设置。例如:has(request.resourceAttributes) && request.resourceAttributes.namespace == 'default'
  • 'nonResourceAttributes' 描述非资源访问请求的信息,对于资源请求则未设置。例如:has(request.nonResourceAttributes) && request.nonResourceAttributes.path == '/healthz'。
  • 'user' 是要测试的用户。例如:request.user == 'alice'
  • 'groups' 是要测试的组。例如:('group1' in request.groups)
  • 'extra' 对应于 authenticator 的 user.Info.GetExtra() 方法。
  • 'uid' 是关于请求用户的的信息。例如:request.uid == '1'

CEL 文档:https://kubernetes.ac.cn/docs/reference/using-api/cel/


最后修改时间 2025年09月04日 下午 5:02 (PST): v1.34 的配置 API (3557e3070d)

本页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。