OCI Connector
OCI Connector 是一个平台无关的连接器,允许您连接到任何 OCI Registry,例如 Docker Hub、Harbor 等。您可以使用 OCI Connector 在 CI/CD 流水线中安全访问私有 OCI 仓库,或在容器化工作负载中执行 OCI 操作而无需提供凭证。此外,您可以集中管理 OCI 访问配置,避免在每个命名空间中重复配置 OCI 凭证。
本文档将介绍:
- OCI Registry 的访问要求
- 如何基于 OCI Connector 类型创建 OCI Connector
- OCI Connector 的代理及配置能力
目录
OCI Registry 要求
被访问的 OCI Registry 必须满足以下条件:
-
接口实现要求:
-
认证方式要求:
基于 OCI Connector 类型创建 OCI Connector
快速开始
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: dockerhub-demo
spec:
connectorClassName: oci
address: https://index.docker.io
auth:
name: tokenAuth
spec.connectorClassName
使用常量值 oci
。
description
您可以通过 annotations
字段为 OCI Connector 添加描述信息。
cpaas.io/description
:OCI Connector 的描述。
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: dockerhub-demo
annotations:
cpaas.io/description: "连接到 Docker Hub 以访问团队公共仓库"
Address
spec.address
指定 OCI Registry 的访问地址,例如:https://index.docker.io
。
Authentication
OCI Connector 支持的认证类型:
tokenAuth
:基于 Token 的认证(可选)
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: dockerhub-demo
spec:
connectorClassName: oci
address: https://index.docker.io
# . . .
auth:
name: tokenAuth
secretRef:
name: oci-secret
---
apiVersion: v1
stringData:
password: your-password
username: your-username
kind: Secret
metadata:
name: oci-secret
type: cpaas.io/distribution-registry-token
如果目标 OCI Registry 不需要认证,可以省略认证信息。配置示例如下:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: dockerhub-demo
spec:
connectorClassName: oci
address: https://index.docker.io
auth:
name: tokenAuth
代理与配置
为了让客户端能够无凭证访问 OCI 仓库,OCI Connector 类型提供了一个代理服务器,用于自动注入认证信息。
有访问 Connector 权限的客户端可以使用该代理服务器访问 OCI 仓库,无需在客户端侧配置凭证。
为简化使用,OCI Connector 类型提供了可通过 CSI 挂载到 Pod 中的配置信息。在 Pod 内执行 OCI 操作时,可以自动使用代理服务完成 OCI 操作。
代理
创建 Connector 时,系统将:
- 自动创建代理的 Service。
- 在
status.proxy.httpAddress
字段记录代理地址。
您可以使用该代理地址进行镜像推拉操作。
例如:
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: dockerhub-demo
namespace: default
spec:
address: https://index.docker.io
auth:
name: tokenAuth
secretRef:
name: dockerhub-demo
connectorClassName: oci
status:
conditions:
# . . .
proxy:
httpAddress:
url: http://c-dockerhub-demo.default.svc.cluster.local/namespaces/oci-connector-demo/connectors/oci-connector
配置
基于 OCI Connector 类型创建的 OCI Connector 提供以下配置:
docker-config:Docker CLI 所需的配置信息。
- 提供
config.json
配置文件。
- 包含访问代理所需的认证信息。
例如:
// config.json
{
"auths": {
"<proxy address of the connector>": {
"auth": "<authentication information required to access the connector proxy>"
}
}
}
dockerd:Docker Daemon 的配置信息。
- 提供
daemon.json
配置文件。
- 配置文件中默认将当前 Connector 设置为
insecure-registries
。
例如:
{
"insecure-registries": [
"<proxy address of the connector>"
]
}
buildkitd:BuildKit Daemon 所需的配置信息。
- 提供
buildkitd.toml
配置文件。
- 配置文件中默认将当前 Connector 设置为
insecure-registries
。
例如:
insecure-entitlements = [ "network.host", "security.insecure" ]
[registry."<proxy address of the connector>"]
http = true
您可以通过 connectors-csi 将这些配置信息挂载到 Pod 中,结合代理能力,实现无密推拉镜像操作。
更多