第 6 章 部署 Red Hat Quay Operator
Red Hat Quay Operator 可以从命令行或 OpenShift Container Platform 控制台部署,但步骤基本相同。
6.1. 从命令行部署 Red Hat Quay 复制链接链接已复制到粘贴板!
使用以下步骤使用命令行界面(CLI)从 部署 Red Hat Quay。
先决条件
- 已使用 CLI 登录 OpenShift Container Platform。
步骤
输入以下命令创建一个命名空间,如
quay-enterprise
:oc new-project quay-enterprise
$ oc new-project quay-enterprise
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。如果要预配置 Red Hat Quay 部署的任何方面,请为配置捆绑包创建一个
Secret
:oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gz
$ oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在名为
quayregistry.yaml
的文件中创建QuayRegistry
自定义资源对于最小部署,使用所有默认值:
quayregistry.yaml:
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。如果要有一些组件非受管组件,请在
spec
字段中添加此信息。最小部署可能类似以下示例:带有非受管组件的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。如果您创建了配置捆绑包,如
init-config-bundle-secret
,请在quayregistry.yaml
文件中引用它:带有配置捆绑包的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。如果您配置了代理,您可以使用 Red Hat Quay、Clair 和 mirror 覆盖添加信息:
配置了代理的 quayregistry.yaml 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在指定命名空间中创建
QuayRegistry
:oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来查看何时填充
status.registryEndpoint
:oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -w
$ oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关如何跟踪 Red Hat Quay 部署的进度的更多信息,请参阅监控和调试部署过程。
6.1.1. 使用命令行查看创建的组件 复制链接链接已复制到粘贴板!
使用以下步骤查看部署的 Red Hat Quay 组件。
先决条件
- 您已在 {ocp.} 上部署了 Red Hat Quay Operator
步骤
输入以下命令查看部署的组件:
oc get pods -n quay-enterprise
$ oc get pods -n quay-enterprise
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. Pod 横向自动扩展 复制链接链接已复制到粘贴板!
默认部署显示以下正在运行的 pod:
-
两个用于 Red Hat Quay 应用程序本身的 pod (
example-registry-quay-app可以'
) -
一个 Red Hat Quay 日志记录的 Redis pod (
example-registry-quay-redis
可以) -
一个数据库 pod for PostgreSQL,供 Red Hat Quay 用于元数据存储(
example-registry-quay-database114
) -
一个 pod for Red Hat Quay config editor (
example-registry-quay-config-editorjpeg
) -
两个
Quay
镜像 pod (example-registry-quay-mirror114
) -
Clair 应用程序的两个 pod (
example-registry-clair-appö
) -
一个用于 Clair 的 PostgreSQL pod (
example-registry-clair-postgres047
)
水平 PPod 自动扩展默认配置为 受管
,Quay 的 pod 数量,Clair 和存储库镜像设置为 2。这有助于在通过 Red Hat Quay Operator 更新或重新调度事件期间更新或重新配置 Red Hat Quay 时停机。您可以输入以下命令来查看 HPA 对象的信息:
oc get hpa -n quay-enterprise
$ oc get hpa -n quay-enterprise
输出示例
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d
example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d
example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
6.1.2.1. 使用 API 创建第一个用户 复制链接链接已复制到粘贴板!
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设为true
。 - 数据库中还没有存在用户。
此流程通过指定 "access_token": true
来请求 OAuth 令牌。
以 root 用户身份,输入以下命令安装
python39
:sudo yum install python39
$ sudo yum install python39
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 升级 Python 3.9 的
pip
软件包管理器:python3.9 -m pip install --upgrade pip
$ python3.9 -m pip install --upgrade pip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
pip
软件包管理器安装bcrypt
软件包:pip install bcrypt
$ pip install bcrypt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用 Python 3.9 中的
bcrypt
软件包生成安全散列密码:python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 Red Hat Quay 配置文件并更新以下配置字段:
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadmin
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadmin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令停止 Red Hat Quay 服务:
sudo podman stop quay
$ sudo podman stop quay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令启动 Red Hat Quay 服务:
sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}
$ sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下
CURL
命令,以使用用户名、密码、电子邮件和访问令牌生成新用户:curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'
$ curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功,命令会返回带有用户名、电子邮件和加密的密码的对象。例如:
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户已在数据库中存在,则返回错误:
{"message":"Cannot initialize user in a non-empty database"}
{"message":"Cannot initialize user in a non-empty database"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的密码不至少为 8 个字符或包含空格,则会返回错误:
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令登录到您的 Red Hat Quay 部署:
sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
$ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Login Succeeded!
Login Succeeded!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.3. 监控和调试部署过程 复制链接链接已复制到粘贴板!
用户现在可以在部署阶段排除问题。QuayRegistry
对象中的状态可帮助您在部署期间监控组件的健康状况,以帮助您调试可能会出现任何问题。
步骤
输入以下命令检查部署的状态:
oc get quayregistry -n quay-enterprise -o yaml
$ oc get quayregistry -n quay-enterprise -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
部署后,Quay
Registry
对象将显示基本配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get pods
命令查看部署组件的当前状态:oc get pods -n quay-enterprise
$ oc get pods -n quay-enterprise
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署进行时,Quay
Registry
对象将显示当前状态。在这个实例中,数据库迁移会被发生,其他组件会等到完成为止:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当部署过程成功完成时,QuayRegistry 对象中的状态不会显示不健康的组件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow