Kubelet CredentialProvider (v1beta1)

资源类型

CredentialProviderRequest

CredentialProviderRequest 包含 kubelet 需要进行身份验证的镜像。 Kubelet 会通过标准输入将此请求对象传递给插件。一般来说,插件倾向于用它们所收到的相同的 apiVersion 来响应。

字段描述
apiVersion
string
credentialprovider.kubelet.k8s.io/v1beta1
kind
string
CredentialProviderRequest
image [必需]
string

image 是容器镜像,作为凭据提供程序插件请求的一部分。 插件可以有选择地解析镜像以提取获取凭据所需的任何信息。

CredentialProviderResponse

CredentialProviderResponse 持有 kubelet 应用于原始请求中提供的指定镜像的凭据。 kubelet 将通过标准输出读取插件的响应。此响应的 apiVersion 值应设置为与 CredentialProviderRequest 中 apiVersion 值相同。

字段描述
apiVersion
string
credentialprovider.kubelet.k8s.io/v1beta1
kind
string
CredentialProviderResponse
cacheKeyType [必需]
PluginCacheKeyType

cacheKeyType 表明基于请求中所给镜像而要使用的缓存键类型。缓存键类型有三个有效值: Image、Registry 和 Global。如果指定了无效值,则 kubelet 不会使用该响应。

cacheDuration
meta/v1.Duration

cacheDuration 表示所提供的凭据应该被缓存的时间。kubelet 使用这个字段为 auth 中的凭据设置内存中数据的缓存时间。如果为空,kubelet 将使用 CredentialProviderConfig 中提供的 defaultCacheDuration。如果设置为 0,kubelet 将不会缓存所提供的 auth 数据。

auth
map[string]k8s.io/kubelet/pkg/apis/credentialprovider/v1beta1.AuthConfig

auth 是一个映射,其中包含传递到 kubelet 的身份验证信息。 每个键都是一个匹配镜像字符串(下面将对此进行详细介绍)。相应的 authConfig 值应该对所有与此键匹配的镜像有效。 如果不能为请求的镜像返回有效的凭据,插件应将此字段设置为 null。

映射中每个键值都是一个正则表达式,可以选择包含端口和路径。 域名部分可以包含通配符,但在端口或路径中不能使用通配符。 支持通配符作为子域,如 '*.k8s.io' 或 'k8s.*.io',以及顶级域,如 'k8s.*'。 还支持匹配部分子域,如 'app*.k8s.io'。每个通配符只能匹配一个子域段, 因此 *.io 不匹配 *.k8s.io。

当满足以下所有条件时,kubelet 会将镜像与键值匹配:

  • 两者都包含相同数量的域部分,并且每个部分都匹配。
  • imageMatch 的 URL 路径必须是目标镜像的 URL 路径的前缀。
  • 如果 imageMatch 包含端口,则该端口也必须在镜像中匹配。

当返回多个键(key)时,kubelet 会倒序遍历所有键,这样:

  • 具有相同前缀的较长键位于较短键之前
  • 具有相同前缀的非通配符键位于通配符键之前。

对于任何给定的匹配,kubelet 将尝试使用提供的凭据进行镜像拉取,并在第一次成功验证后停止拉取。

键值示例:

  • 123456789.dkr.ecr.us-east-1.amazonaws.com
  • *.azurecr.io
  • gcr.io
  • *.*.registry.io
  • registry.io:8080/path

AuthConfig

出现在:

AuthConfig 包含容器仓库的身份验证信息。目前仅支持基于用户名/密码的身份验证,但未来可能会添加更多身份验证机制。

字段描述
username [必需]
string

username 是用于向容器仓库进行身份验证的用户名。空的用户名是合法的。

password [必需]
string

password 是用于向容器仓库进行身份验证的密码。空密码是合法的。

PluginCacheKeyType

string 数据类型的别名)

出现在: