安装 Podman
安装 Quay 会从红帽仓库 registry.redhat.io
拉取三个镜像,需要有红帽账号 (可能还需要开发者订阅?还得需要代理)
yum install -y podman
yum module install -y container-tools
防火墙放行
firewall-cmd --permanent --add-port=80/tcp \
&& firewall-cmd --permanent --add-port=443/tcp \
&& firewall-cmd --permanent --add-port=5432/tcp \
&& firewall-cmd --permanent --add-port=5433/tcp \
&& firewall-cmd --permanent --add-port=6379/tcp \
&& firewall-cmd --reload
组件 | 端口映射 | 地址 |
---|---|---|
Quy | -p 80:8080 -p 443:8443 |
http://quay-server.example.com |
Quay 的 postgres | -p 5432:5432 |
quay-server.example.com:5432 |
Redis | -p 6379:6379 |
quay-server.example.com:6379 |
Clair V4 的 postgres | -p 5433:5432 |
quay-server.example.com:5433 |
Clair V4 | -p 8081:8080 |
http://quay-server.example.com:8081 |
准备部署 Quay
配置 hosts
[root@quay ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.50.119 quay.example.com
配置数据库
-
设置 Quay 的数据目录:
QUAY=/data
-
创建数据库数据目录:
mkdir -p $QUAY/postgres-quay
-
输入以下命令设置适当的权限:
setfacl -m u:26:-wx $QUAY/postgres-quay
-
启动
Postgres
容器,使用数据库数据的卷定义指定用户名、密码和数据库名称和端口:podman run -d --rm --name postgresql-quay \ -e POSTGRESQL_USER=quayuser \ -e POSTGRESQL_PASSWORD=quaypass \ -e POSTGRESQL_DATABASE=quay \ -e POSTGRESQL_ADMIN_PASSWORD=adminpass \ -p 5432:5432 \ -v $QUAY/postgres-quay:/var/lib/pgsql/data:Z \ registry.redhat.io/rhel8/postgresql-13:1-109
-
运行以下命令,确保已安装 Postgres
pg_trgm
模块:sudo podman exec -it postgresql-quay /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS pg_trgm" | psql -d quay -U postgres'
Quay 容器需要
pg_trgm
模块。
配置 Redis
输入以下命令启动 Redis
容器,指定端口和密码:
podman run -d --rm --name redis \
-p 6379:6379 \
-e REDIS_PASSWORD=strongpassword \
registry.redhat.io/rhel8/redis-6:1-110
部署 Red Hat Quay
创建 YAML 配置文件
-
输入以下命令来创建用于部署 Red Hat Quay 容器的最小
config.yaml
文件:touch config.yaml
-
将以下 YAML 配置复制并粘贴到
config.yaml
文件中:BUILDLOGS_REDIS: host: quay.example.com password: strongpassword port: 6379 CREATE_NAMESPACE_ON_PUSH: true DATABASE_SECRET_KEY: a8c2744b-7004-4af2-bcee-e417e7bdd235 DB_URI: postgresql://quayuser:[email protected]:5432/quay DISTRIBUTED_STORAGE_CONFIG: default: - LocalStorage - storage_path: /datastorage/registry DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: [] DISTRIBUTED_STORAGE_PREFERENCE: - default FEATURE_MAILING: false SECRET_KEY: e9bd34f4-900c-436a-979e-7530e5d74ac8 SERVER_HOSTNAME: quay.example.com SETUP_COMPLETE: true USER_EVENTS_REDIS: host: quay.example.com password: strongpassword port: 6379
-
创建一个目录,将 Red Hat Quay 配置捆绑包复制到:
mkdir $QUAY/config
-
将 Red Hat Quay 配置文件复制到目录中:
cp -v config.yaml $QUAY/config
为镜像数据准备本地存储
-
输入以下命令创建一个用于存储 registry 镜像的本地目录:
mkdir $QUAY/storage
-
设置用于存储 registry 镜像的目录:
setfacl -m u:1001:-wx $QUAY/storage
部署 Red Hat registry
输入以下命令启动 Quay
registry 容器,为配置数据指定适当的卷,为镜像数据指定本地存储:
podman run -d --rm -p 80:8080 -p 443:8443 \
--name=quay \
-v $QUAY/config:/conf/stack:Z \
-v $QUAY/storage:/datastorage:Z \
registry.redhat.io/quay/quay-rhel8:v3.11.1
使用 Red Hat Quay
以下步骤演示了如何使用界面并创建新的机构和存储库,以及搜索和浏览现有存储库。以下步骤 3,您可以使用命令行界面与 registry 交互,并推送和拉取镜像。
-
使用您的浏览器访问位于
http://quay.example.com
的 Red Hat Quay registry 的用户界面,假设您已将quay.example.com
配置为/etc/hosts
文件和config.yaml
文件中的主机名。 -
单击
Create Account
并添加用户,例如admin
,密码为password
。 -
在命令行中登录到 registry:
podman login --tls-verify=false quay.example.com
输出示例
[root@quay ~]# podman login --tls-verify=false quay.example.com Username: admin Password: password Login Succeeded!
使用 SSL/TLS 证书进行概念部署验证
创建证书
可以查看置顶的链接,过程省略。
配置 SSL/TLS
可以使用命令行界面(CLI)或 Red Hat Quay registry UI 配置 SSL/TLS。使用以下步骤之一配置 SSL/TLS。
使用 Red Hat Quay UI 配置 SSL/TLS
使用以下步骤使用 Red Hat Quay UI 配置 SSL/TLS。
要使用命令行界面配置 SSL/TLS,请参阅"使用命令行界面配置 SSL/TLS"。
先决条件
- 您已创建了证书颁发机构并签署证书。
步骤
-
以配置模式启动
Quay
容器:podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.11.1 config secret
-
在 Server Configuration 部分中,选择 Red Hat Quay 处理 SSL/TLS 的 TLS。上传之前创建的证书文件和私钥文件,确保 Server Hostname 与创建证书时使用的值匹配。
-
验证并下载更新的配置。
-
输入以下命令停止
Quay
容器,然后重启 registry:podman rm -f quay_config podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.11.1
使用命令行界面配置 SSL/TLS
使用以下步骤使用 CLI 配置 SSL/TLS。
先决条件
- 您已创建了证书颁发机构并签署证书。
流程
-
将证书文件和主密钥文件复制到您的配置目录中,确保它们分别命名为
ssl.cert
和ssl.key
:cp ~/ssl.cert ~/ssl.key $QUAY/config
-
输入以下命令进入
$QUAY/config
目录:cd $QUAY/config
-
编辑
config.yaml
文件并指定您希望 Red Hat Quay 处理 TLS/SSL:config.yaml
... SERVER_HOSTNAME: quay-server.example.com ... PREFERRED_URL_SCHEME: https ...
-
可选:输入以下命令将 rootCA.pem 文件的内容应用到 ssl.cert 文件的末尾:
cat rootCA.pem >> ssl.cert
-
输入以下命令停止
Quay
容器:podman stop quay
-
输入以下命令重启 registry:
podman run -d --rm -p 80:8080 -p 443:8443 \ --name=quay \ -v $QUAY/config:/conf/stack:Z \ -v $QUAY/storage:/datastorage:Z \ registry.redhat.io/quay/quay-rhel8:v3.11.1
测试 SSL/TLS 配置
可以使用命令行界面(CLI)或 Red Hat Quay registry UI 测试 SSL/TLS 配置。使用以下步骤之一测试 SSL/TLS 配置。
使用 CLI 测试 SSL/TLS 配置
使用以下步骤使用 CLI 测试 SSL/TLS 配置。
步骤
-
输入以下命令尝试登录到启用了 SSL/TLS 的 Red Hat Quay registry:
podman login quay.example.com
输出示例
Error: authenticating creds for "quay.example.com": pinging container registry quay.example.com: Get "https://quay.example.com/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority
-
因为 Podman 不信任自签名证书,所以必须使用
--tls-verify=false
选项:podman login --tls-verify=false quay.example.com
输出示例
Login Succeeded!
在后面的部分中,您要将 Podman 配置为信任 root 证书颁发机构。
-
使用浏览器测试 SSL/TLS 配置
浏览器访问 https://quay.example.com/
,若提示不安全证书,则表示 SSL/TLS 配置成功。
配置 Podman 以信任证书颁发机构
Podman 使用两个路径来查找证书颁发机构(CA)文件: /etc/containers/certs.d/
和 /etc/docker/certs.d/
。使用以下步骤将 Podman 配置为信任 CA。
步骤
-
将 root CA 文件复制到
/etc/containers/certs.d/
或/etc/docker/certs.d/
之一。使用由服务器主机名确定的确切路径,并将文件命名为ca.crt
:mkdir /etc/containers/certs.d/quay.example.com cp ssl/ssl/ca.crt /etc/containers/certs.d/quay.example.com/
-
在登录到 Red Hat Quay registry 时,验证您不再需要使用
--tls-verify=false
选项:podman login quay.example.com
输出示例
Login Succeeded!
将系统配置为信任证书颁发机构
使用以下步骤将系统配置为信任证书颁发机构。
步骤
-
输入以下命令将
rootCA.pem
文件复制到整合的系统范围信任存储中:cp ssl/ssl/ca.crt /etc/pki/ca-trust/source/anchors/
-
输入以下命令更新系统范围的信任存储配置:
update-ca-trust extract
-
可选。您可以使用
trust list
命令确保已配置了Quay
服务器:trust list | grep quay
-
通过浏览器或者 CLI 测试。