kube-apiserver 配置 (v1beta1)
v1beta1 包是 v1beta1 版本的 API。
资源类型
- AuthenticationConfiguration
- AuthorizationConfiguration
- EgressSelectorConfiguration
- TracingConfiguration
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 跟踪客户端提供版本化的配置。
字段 | 描述 |
---|---|
endpoint string | 采集器的端点,此组件将向其报告跟踪信息。 连接不安全,目前不支持 TLS。 推荐不设置,端点为 otlp grpc 默认值 localhost:4317。 |
samplingRatePerMillion int32 | samplingRatePerMillion 是每百万 span 中采集的样本数。 推荐不设置。如果不设置,采集器将继承其父级 span 的采样率,否则不进行采样。 |
AuthenticationConfiguration
AuthenticationConfiguration 为身份认证提供版本化的配置。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | AuthenticationConfiguration |
jwt [必需][]JWTAuthenticator | jwt 是一个身份认证器列表,用于对使用符合 JWT 的令牌的 Kubernetes 用户进行身份认证。 身份认证器将尝试解析原始 ID 令牌,验证其是否由配置的发放者签名。用于验证签名的公钥是通过 OIDC 发现从颁发者的公开端点获取的。对于传入的令牌,将按照此列表中指定的顺序尝试每个 JWT 身份认证器。但是请注意,其他身份认证器可能会在 JWT 身份认证器之前或之后运行。JWT 身份认证器相对于其他身份认证器的具体位置在不同版本中既未定义也不稳定。由于每个 JWT 身份认证器必须具有唯一的颁发者 URL,因此最多只有一个 JWT 身份认证器会尝试基于密码学方法对令牌进行合法性检查。 最小有效 JWT 负载必须包含以下声明: { "iss": "https://issuer.example.com", "aud": ["audience"], "exp": 1234567890, "<username claim>": "username" } |
anonymous [必需]AnonymousAuthConfig | 如果设置了此字段,则不得设置 |
AuthorizationConfiguration
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | AuthorizationConfiguration |
authorizers [必需][]AuthorizerConfiguration | authorizers 是一个有序的鉴权器列表,用于对请求进行鉴权。
这类似于 kube-apiserver |
EgressSelectorConfiguration
EgressSelectorConfiguration 为出站流量选择器客户端(Egress Selector Client)提供版本化的配置选项。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | EgressSelectorConfiguration |
egressSelections [必需][]EgressSelection | connectionServices 包含一组出站流量选择器客户端(Egress Selector Client)配置选项。 |
TracingConfiguration
TracingConfiguration 为跟踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | TracingConfiguration |
TracingConfiguration [必需]TracingConfiguration | (TracingConfiguration 的成员嵌入到这种类型中。)嵌入组件配置中的跟踪配置结构体。 |
AnonymousAuthCondition
出现在:
AnonymousAuthCondition 描述了应启用匿名身份认证的条件。
字段 | 描述 |
---|---|
path [必需]string | 启用匿名身份认证的路径。 |
AnonymousAuthConfig
出现在:
AnonymousAuthConfig 为匿名身份认证器提供配置信息。
字段 | 描述 |
---|---|
enabled [必需]bool | |
conditions [必需][]AnonymousAuthCondition | 如果设置,只有在请求满足其中一个条件时才允许匿名身份认证。 |
AudienceMatchPolicyType
(string
类型的别名)
出现在:
AudienceMatchPolicyType 是 issuer.audienceMatchPolicy 合法值的集合
AuthorizerConfiguration
出现在:
字段 | 描述 |
---|---|
type [必需]string | type 指的是鉴权器的类型。 通用 API 服务器支持 "Webhook"。 其他 API 服务器可能支持其他鉴权器类型,如 Node、RBAC、ABAC 等。 |
name [必需]string | name 是用于描述 webhook 的名称。
此字段专为监控机制中的指标提供。
注意:name 值必须是 DNS1123 标签,如 |
webhook [必需]WebhookConfiguration | webhook 定义 Webhook 鉴权器的配置。 当 type=Webhook 时必须定义。 当 type!=Webhook 时不得定义。 |
ClaimMappings
出现在:
ClaimMappings 为声明映射提供配置信息
字段 | 描述 |
---|---|
username [必需]PrefixedClaimOrExpression | username 表示用户名属性的一个选项。
声明的值必须是单一字符串。
与 在基于标志的方法中,--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="<issuer.url 的值>#"。 (3) --oidc-username-prefix="<value>"。要实现相同的行为,请在身份认证配置中设置 username.prefix="<value>"。 |
groups PrefixedClaimOrExpression | groups 表示 groups 属性的一个选项。 其中 claim 字段的值必须是字符串或字符串数组。 如果设置了 groups.claim,则必须指定 prefix 字段(可以是空字符串)。 如果设置了 groups.expression,则该表达式必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在组映射。 |
uid ClaimOrExpression | uid 表示 uid 属性的一个选项。 其中的 claim 字段必须是一个字符串。 如果设置了 uid.expression,则该表达式必须生成一个字符串值。 |
extra []ExtraMapping | extra 表示 extra 属性的一个选项。 expression 必须生成一个字符串或字符串数组值。 如果值为空,则不会存在 extra 映射。 硬编码的额外 key/value - key: "foo" valueExpression: "'bar'"这将导致一个额外的属性 - foo: ["bar"] 硬编码 key,value 从声明的值复制 - key: "foo" valueExpression: "claims.some_claim" 结果会是一个 extra 属性 - foo: [some_claim 的值] 硬编码 key,value 从声明的值派生 - key: "admin" valueExpression: '(has(claims.is_admin) && claims.is_admin) ? "true":""' 这将导致:
|
ClaimOrExpression
出现在:
ClaimOrExpression 为单个声明或表达式提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。 claim 或 expression 必须设置一个。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 互斥。 |
ClaimValidationRule
出现在:
ClaimValidationRule 为单个声明验证规则提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是所需要的声明的名称。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明键。 与 expression 和 message 互斥。 |
requiredValue string | requiredValue 是声明中必须包含的值。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明值。 如果设置了 claim 而未设置 requiredValue,则 claim 必须存在且值必须设置为空字符串。 与 expression 和 message 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 必须生成一个布尔值。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 requiredValue 互斥。 |
message string | message 自定义当 expression 返回 false 时的错误消息。 message 是一个字符串文字。 与 claim 和 requiredValue 互斥。 |
Connection
出现在:
Connection 提供某个出站流量选择器客户端(Egress Selector Client)的配置信息。
字段 | 描述 |
---|---|
proxyProtocol [必需]ProtocolType | proxyProtocol 是客户端连接到 konnectivity 服务器所使用的协议。 |
transport Transport | transport 定义的是传输层的配置。我们使用这个配置来联系 konnectivity 服务器。 当 proxyProtocol 是 HTTPConnect 或 GRPC 时需要设置此字段。 |
EgressSelection
出现在:
EgressSelection 为某个出站流量选择器客户端(Egress Selector Client)提供配置信息。
字段 | 描述 |
---|---|
name [必需]string | name 是出站流量选择(egress selection)的名称。当前支持的取值有 "controlplane", "master","etcd" 和 "cluster"。 "master" 出站流量选择(egress selection)已被弃用,推荐使用 "controlplane"。 |
connection [必需]Connection | connection 是用来配置出站流量选择(egress selection)的确切信息。 |
ExtraMapping
出现在:
ExtraMapping 为单个 extra 映射提供配置信息。
字段 | 描述 |
---|---|
key [必需]string | key 是用作 extra 属性键的字符串。 key 必须是域前缀路径(例如 example.org/foo)。第一个 "/" 之前的所有字符必须是符合 RFC 1123 定义的有效子域名。第一个 "/" 之后的所有字符必须是符合 RFC 3986 定义的有效 HTTP 路径字符。 key 必须是小写。 必须是唯一的。 |
valueExpression [必需]string | valueExpression 是一个 CEL 表达式,用于提取 extra 中的属性值。 valueExpression 必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在 extra 映射。 字符串数组中包含的空字符串值将被过滤掉。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
Issuer
出现在:
Issuer 为外部提供者的特定设置提供配置。
字段 | 描述 |
---|---|
url [必需]string | url 指向颁发者 URL,格式为 https://url 或 https://url/path。 此 URL 必须与所提供的 JWT 中的 "iss" 声明以及从发现中返回的颁发者匹配。 与 --oidc-issuer-url 标志的值相同。 除非被 discoveryURL 覆盖,否则发现信息将从 "{url}/.well-known/openid-configuration" 获取。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
discoveryURL string | discoveryURL(如果指定)会覆盖用于获取发现信息的 URL,而不是使用 "{url}/.well-known/openid-configuration"。 使用指定的确切值,因此如果需要,必须在 discoveryURL 中包含 "/.well-known/openid-configuration"。 所获取的发现信息中的 "issuer" 字段必须与 AuthenticationConfiguration 中的 "issuer.url" 字段匹配,并将用于检验所提供的 JWT 中的 "iss" 声明。 这适用于 well-known 和 jwks 端点托管在与颁发者不同的位置(例如在集群中本地托管)的场景。 示例: 发现 URL 是通过 Kubernetes 在命名空间 'oidc-namespace' 中的服务 'oidc' 公布的, 而访问 '/.well-known/openid-configuration' 可以获得发现信息。 discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority 用于验证 TLS 连接,叶证书上的主机名必须设置为 'oidc.oidc-namespace'。
discoveryURL 必须与 url 不同。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
certificateAuthority string | certificateAuthority 包含 PEM 编码的证书颁发机构证书, 用于在获取发现信息时验证连接。 如果未设置,则使用系统验证器。 与 --oidc-ca-file 标志引用的文件内容相同。 |
audiences [必需][]string | audiences 是 JWT 必须签发给的可接受受众集。 所提供的 JWT 中的 "aud" 声明必须至少与其中一个条目匹配。 与 --oidc-client-id 标志的值相同(尽管此字段支持数组)。 必须为非空。 |
audienceMatchPolicy AudienceMatchPolicyType | audienceMatchPolicy 定义了如何使用 "audiences" 字段来匹配所提供的 JWT 中的 "aud" 声明。 允许的值有:
对于更精细的受众验证,请使用 claimValidationRules。 示例:claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' 以要求精确匹配。 |
JWTAuthenticator
出现在:
JWTAuthenticator 为单个 JWT 身份认证器提供配置信息。
字段 | 描述 |
---|---|
issuer [必需]Issuer | issuer 包含基本的 OIDC 提供者连接选项。 |
claimValidationRules []ClaimValidationRule | claimValidationRules 是用于验证令牌声明以认证用户的规则。 |
claimMappings [必需]ClaimMappings | claimMappings 指向要视为用户属性的令牌声明。 |
userValidationRules []UserValidationRule | userValidationRules 是在完成身份认证之前应用于最终用户的规则。
这些规则允许将不变量应用于传入的身份,例如禁止使用 Kubernetes 组件常用的 |
PrefixedClaimOrExpression
出现在:
PrefixedClaimOrExpression 为单个带前缀的声明或表达式提供配置。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。 与 expression 互斥。 |
prefix string | prefix 是添加到声明值前面的前缀,以防止与现有名称冲突。 如果设置了 claim,则需要设置 prefix,并且可以是空字符串。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 评估的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 prefix 互斥。 |
ProtocolType
(string
类型的别名)
出现在:
ProtocolType 是 connection.protocolType 的合法值集合。
TCPTransport
出现在:
TCPTransport 提供使用 TCP 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
url [必需]string | url 是要连接的 konnectivity 服务器的位置。例如 "https://127.0.0.1:8131"。 |
tlsConfig TLSConfig | tlsConfig 是使用 TLS 来连接 konnectivity 服务器时需要的信息。 |
TLSConfig
出现在:
TLSConfig 为连接 konnectivity 服务器提供身份认证信息。仅用于 TCPTransport。
字段 | 描述 |
---|---|
caBundle string | caBundle 是指向用来确定与 konnectivity 服务器间信任关系的 CA 证书包的文件位置。 如果 TCPTransport.URL 前缀为 "http://" 时必须不设置,或者设置为空。 如果 TCPTransport.URL 前缀为 "https://" 并且此字段未设置,则默认使用系统的信任根。 |
clientKey string | clientKey 是与 konnectivity 服务器进行 mTLS 握手时使用的客户端秘钥文件位置。 如果 TCPTransport.URL 前缀为 http://,必须不指定或者为空; 如果 TCPTransport.URL 前缀为 https://,必须设置。 |
clientCert string |
|
Transport
出现在:
Transport 定义联系 konnectivity 服务器时要使用的传输层配置。
字段 | 描述 |
---|---|
tcp TCPTransport | tcp 包含通过 TCP 与 konnectivity 服务器通信时使用的 TCP 配置。 目前使用 TCP 传输时不支持 GRPC 的 proxyProtocol。 tcp 和 uds 二者至少设置一个。 |
uds UDSTransport | uds 包含通过 UDS 与 konnectivity 服务器通信时使用的 UDS 配置。 tcp 和 uds 二者至少设置一个。 |
UDSTransport
出现在:
UDSTransport 设置通过 UDS 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
udsName [必需]string | udsName 是与 konnectivity 服务器连接时使用的 UNIX 域套接字名称。 字段取值不要求包含 unix:// 前缀。 (例如:/etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket) |
UserValidationRule
出现在:
UserValidationRule 为单个用户信息验证规则提供配置信息。
字段 | 描述 |
---|---|
expression [必需]string | expression 表示将由 CEL 求值的表达式。 验证通过时必须返回 true。 CEL 表达式可以访问 UserInfo 的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
message string | message 自定义当规则返回 false 时的错误消息。 message 是一个字符串文字。 |
WebhookConfiguration
出现在:
字段 | 描述 |
---|---|
authorizedTTL [必需]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “authorized” 响应的缓存时长。
与设置 |
unauthorizedTTL [Required]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “unauthorized” 响应的缓存时长。
与设置 |
timeout [必需]meta/v1.Duration | Webhook 请求超时时间。 允许的最大时间为 30 秒。 必需,没有默认值。 |
subjectAccessReviewVersion [必需]string | 要发送到 Webhook 并期望从 Webhook 获得的 authorization.k8s.io SubjectAccessReview 的 API 版本。
与设置 |
matchConditionSubjectAccessReviewVersion [必需]string | matchConditionSubjectAccessReviewVersion 指定对 CEL 表达式求值时使用的 SubjectAccessReview 版本。 有效值:v1。必需,无默认值。 |
failurePolicy [必需]string | 控制当 Webhook 请求无法完成或返回格式错误的响应或计算 matchConditions 出现错误时的鉴权决定。 有效值:
|
connectionInfo [必需]WebhookConnectionInfo | ConnectionInfo 定义 Webhook 如何与服务器通信。 |
matchConditions [必需][]WebhookMatchCondition | matchConditions 是将请求发送到此 Webhook 必须满足的条件列表。matchConditions 为空列表表示匹配所有请求。 最多允许 64 个匹配条件。 精确匹配逻辑如下(按顺序):
|
WebhookConnectionInfo
出现在:
字段 | 描述 |
---|---|
type [必需]string | 控制 Webhook 如何与服务器通信。 有效值:
|
kubeConfigFile [必需]string | 包含连接信息的 KubeConfig 文件的路径。 如果 connectionInfo.type 是 KubeConfig,则为必需项。 |
WebhookMatchCondition
出现在:
字段 | 描述 |
---|---|
expression [必需]string | expression 表示将由 CEL 求值的表达式。求值结果必须为布尔值。 CEL 表达式可以访问 v1 版本中的 SubjectAccessReview 的内容。 如果请求变量中 subjectAccessReviewVersion 指定的版本是 v1beta1, 在计算 CEL 表达式之前,内容将被转换为 v1 版本。 关于 CEL 文档: https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |