Docker registry

本节涵盖了 Docker registry 的配置,默认情况下它会部署在 seed 主机上。Docker registry 配置通常在 ${KAYOBE_CONFIG_PATH}/docker-registry.yml 中应用。有关 registry 用法和配置的更多详细信息,请参阅 Docker registry 文档

registry 在 kayobe seed host configure 命令期间部署。

配置 registry

docker_registry_enabled

是否启用 Docker registry。默认值为 false。设置为 true 时,Docker registry 将部署到 docker-registry 组中的所有主机上。默认情况下,这包括 seed 主机。

docker_registry_env

要提供给 Docker registry 容器的环境变量字典。这允许通过覆盖特定的配置选项来配置 registry,如 https://docs.container.net.cn/registry/configuration/ 中所述。例如,可以通过将 REGISTRY_PROXY_REMOTEURL 设置为“https://registry-1.docker.io”来将 registry 配置为 Docker Hub 的穿透缓存。请注意,无法将内容推送到配置为穿透缓存的 registry。默认值为 {}

docker_registry_network_mode

Docker registry 容器使用的网络模式。默认值为 host。设置为 bridge 时,将配置端口映射以通过端口 docker_registry_port 暴露 registry。

docker_registry_port

Docker registry 服务器应侦听的端口。默认值为 4000。当 docker_registry_network_mode 设置为 host 时,配置容器内 registry 服务器使用的端口。当 docker_registry_network_mode 设置为 bridge 时,配置 overlay 网络端口。

docker_registry_datadir_volume

用作 Docker registry 卷的名称或路径。默认值为 docker_registry

TLS

建议为 registry 启用 TLS。

docker_registry_enable_tls

是否为 registry 启用 TLS。默认值为 false

docker_registry_cert_path

启用 TLS 时要使用的 TLS 证书的路径。默认值为 none。

docker_registry_key_path

启用 TLS 时要使用的 TLS 密钥的路径。默认值为 none。

例如,可以将证书和密钥与 Kayobe 配置一起存储在 ${KAYOBE_CONFIG_PATH}/docker-registry/ 下。这些文件可以使用 Ansible Vault 进行加密。

docker-registry.yml
docker_registry_enable_tls: true
docker_registry_cert_path: "{{ kayobe_config_path }}/docker-registry/cert.pem"
docker_registry_key_path: "{{ kayobe_config_path }}/docker-registry/key.pem"

基本身份验证

建议为 registry 启用 HTTP 基本身份验证。这需要在启用 registry 的 TLS 的情况下进行:使用未加密的 HTTP 进行基本身份验证不受支持

docker_registry_enable_basic_auth

是否为 registry 启用基本身份验证。默认值为 false

docker_registry_basic_auth_htpasswd_path

registry 的 htpasswd 格式的密码存储的路径。默认值为 none。

密码存储使用 htpasswd 格式。以下示例显示了如何生成密码并将其添加到密码存储中的 kolla 用户。密码存储可以与 Kayobe 配置一起存储在 ${KAYOBE_CONFIG_PATH}/docker-registry/ 下。该文件可以使用 Ansible Vault 进行加密。

uuidgen | tr -d '\n' > registry-password
cat registry-password | docker run --rm -i --entrypoint htpasswd httpd:latest -niB kolla > $KAYOBE_CONFIG_PATH/docker-registry/htpasswd

接下来,我们配置 Kayobe 以启用 registry 的基本身份验证,并指定密码存储的路径。

docker-registry.yml
docker_registry_enable_basic_auth: true
docker_registry_basic_auth_htpasswd_path: "{{ kayobe_config_path }}/docker-registry/htpasswd"

使用 registry

启用 registry 不会自动设置容器引擎的配置以使用它。这应该通过 docker_registry 或 podman_registry 变量 来完成。

TLS

如果 registry 使用私钥签名的 TLS 证书,则需要 使用 CA 证书配置 Docker 引擎

如果启用了 TLS,则应配置 Docker 引擎以使用 HTTPS 与其通信

kolla/globals.yml
docker_registry_insecure: false

基本身份验证

如果启用了基本身份验证,则需要将 Kolla Ansible 配置为使用用户名和密码。

kolla.yml
kolla_docker_registry_username: <registry username>
kolla_docker_registry_password: <registry password>