Quay(0) - 安装一个单实例 Quay 环境

14 篇文章 1 订阅
9 篇文章 0 订阅

OpenShift / RHEL / DevSecOps 汇总目录

说明:本文使用 mirror-registry 开源项目安装一个单实例 RedHat Quay 环境。mirror-registry 开源项目是作为安装离线 OpenShift 使用的 Mirror Registry。

安装 Quay

注意:安装环境需要至少有 podman 3.0 以上软件,可以使用 root 用户运行以下命令安装 Quay 环境。

  1. 访问 https://github.com/quay/mirror-registry/releases 查看当前最新版本。在这里插入图片描述
  2. 执行命令下载离线安装包。
$ QUAY_VERSION=1.1.0
$ curl -OL https://github.com/quay/mirror-registry/releases/download/${QUAY_VERSION}/mirror-registry-offline.tar.gz
$ tar -xvf mirror-registry-offline.tar.gz
  1. 由于安装使用的缺省 --quayHostname 参数会使用 “$(hostname -f)”,因此要不需要将 “$(hostname -f)” 和对应的 IP 加到 /etc/hosts 中,要不需要为 --quayHostname 参数设置可解析的主机名。本文将主机名 “quay.local” 和对应的 IP 加入到 /etc/hosts 中。
  2. 执行命令安装 mirror-registry。缺省会在 Quay 中创建名为 “init” 的用户,也可通过 --initUser 参数指定需要创建的用户。
$ QUAY_HOSTNAME=quay.local
$ ./mirror-registry install --initPassword r3dh4t1! --targetHostname ${QUAY_HOSTNAME} --targetUsername root -v
   __   __
  /  \ /  \     ______   _    _     __   __   __
 / /\ / /\ \   /  __  \ | |  | |   /  \  \ \ / /
/ /  / /  \ \  | |  | | | |  | |  / /\ \  \   /
\ \  \ \  / /  | |__| | | |__| | / ____ \  | |
 \ \/ \ \/ /   \_  ___/  \____/ /_/    \_\ |_|
  \__/ \__/      \ \__
                  \___\ by Red Hat
 Build, Store, and Distribute your Containers
 
INFO[2022-04-10 08:13:13] Install has begun                            
DEBU[2022-04-10 08:13:13] Ansible Execution Environment Image: quay.io/quay/mirror-registry-ee:latest 
DEBU[2022-04-10 08:13:13] Pause Image: registry.access.redhat.com/ubi8/pause:latest 
DEBU[2022-04-10 08:13:13] Quay Image: registry.redhat.io/quay/quay-rhel8:v3.6.4 
DEBU[2022-04-10 08:13:13] Redis Image: registry.redhat.io/rhel8/redis-6:1-25 
DEBU[2022-04-10 08:13:13] Postgres Image: registry.redhat.io/rhel8/postgresql-10:1-161 
INFO[2022-04-10 08:13:13] Found execution environment at /root/execution-environment.tar 
INFO[2022-04-10 08:13:13] Loading execution environment from execution-environment.tar 
DEBU[2022-04-10 08:13:13] Importing execution enviornment with command: /bin/bash -c sudo /usr/bin/podman image import \
                                        --change 'ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
                                        --change 'ENV HOME=/home/runner' \
                                        --change 'ENV container=oci' \
                                        --change 'ENTRYPOINT=["entrypoint"]' \
                                        --change 'WORKDIR=/runner' \
                                        --change 'EXPOSE=6379' \
                                        --change 'VOLUME=/runner' \
                                        --change 'CMD ["ansible-runner", "run", "/runner"]' \
                                        - quay.io/quay/mirror-registry-ee:latest < /root/execution-environment.tar       
。。。
。。。
FAILED_EVENTS=False -e ANSIBLE_HOST_KEY_CHECKING=False -e ANSIBLE_CONFIG=/runner/project/ansible.cfg --quiet --name ansible_runner_instance quay.io/quay/mirror-registry-ee:latest ansible-playbook -i root@quay.local, --private-key /runner/env/ssh_key -e "init_user=init init_password=r3dh4t1! quay_image=registry.redhat.io/quay/quay-rhel8:v3.6.4 redis_image=registry.redhat.io/rhel8/redis-6:1-25 postgres_image=registry.redhat.io/rhel8/postgresql-10:1-161 pause_image=registry.access.redhat.com/ubi8/pause:latest quay_hostname=quay.local:8443 local_install=true quay_root=/etc/quay-install" install_mirror_appliance.yml   
 
PLAY [Install Mirror Appliance] ******************************************************************************************************************************************************************************************************************************************
 
TASK [Gathering Facts] ***************************************************************************************************************************************************************************************************************************************************
ok: [root@quay.local]
 
TASK [mirror_appliance : Install Dependencies] ***************************************************************************************************************************************************************************************************************************
included: /runner/project/roles/mirror_appliance/tasks/install-deps.yaml for root@quay
。。。
。。。
PLAY RECAP ***************************************************************************************************************************************************************************************************************************************************************
root@quay.local : ok=47   changed=31   unreachable=0    failed=0    skipped=12   rescued=0    ignored=0 
  1. 查看本地运行的的 container、pod 和系统服务。
$ podman ps
CONTAINER ID  IMAGE                                         COMMAND         CREATED        STATUS            PORTS                   NAMES
3fbcdc27aead  registry.access.redhat.com/ubi8/pause:latest                  8 minutes ago  Up 8 minutes ago  0.0.0.0:8443->8443/tcp  ee29d638c8e6-infra
666800d74583  registry.redhat.io/rhel8/postgresql-10:1-161  run-postgresql  8 minutes ago  Up 8 minutes ago  0.0.0.0:8443->8443/tcp  quay-postgres
99d38cb14db1  registry.redhat.io/rhel8/redis-6:1-25         run-redis       8 minutes ago  Up 8 minutes ago  0.0.0.0:8443->8443/tcp  quay-redis
2ba875a1edd9  registry.redhat.io/quay/quay-rhel8:v3.6.4     registry        8 minutes ago  Up 8 minutes ago  0.0.0.0:8443->8443/tcp  quay-app
 
$ podman pod ps
POD ID        NAME        STATUS      CREATED        INFRA ID      # OF CONTAINERS
ee29d638c8e6  quay-pod    Running     7 minutes ago  3fbcdc27aead  4

$ systemctl list-units --type service | grep quay
quay-app.service                                      loaded active running Quay Container                                                               
quay-pod.service                                      loaded active exited  Infra Container for Quay                                                     
quay-postgres.service                                 loaded active running PostgreSQL Podman Container for Quay                                         
quay-redis.service                                    loaded active running Redis Podman Container for Quay      

对 Quay 进行镜像操作

  1. 用浏览器访问 https://${QUAY_HOSTNAME}:8443/,然后登录进入 Quay 的控制台。
    在这里插入图片描述
  2. 创建一个名为 busybox 的 Repository,可以是 Public 或 Private 类型。
    在这里插入图片描述
  3. 如果是 Private 类型的 Repository 则需要登录 Quay。
$ podman login -u init -p r3dh4t1! ${QUAY_HOSTNAME}:8443 --tls-verify=false
Login Succeeded!
  1. 先从 docker 下载 busybox 镜像,然后推送到 Quay上,最后验证可以使用。
$ podman pull docker.io/library/busybox:latest
$ podman tag docker.io/library/busybox:latest ${QUAY_HOSTNAME}:8443/init/busybox:latest
$ podman push ${QUAY_HOSTNAME}:8443/init/busybox:latest --tls-verify=false
$ podman pull ${QUAY_HOSTNAME}:8443/init/busybox:latest --tls-verify=false

在这里插入图片描述

处理问题

“unauthorized” 错误

在向 Quay 推送 Image 的时候如果出现以下错误,可以用后面操作尝试解决。

Error uploading manifest latest to quay.local:8443/init/busybox: unauthorized: access to the requested resource is not authorized
或
Error initiating layer upload to /v2/init/busybox/blobs/uploads/ in quay.local:8443: unauthorized: access to the requested resource is not authorized
  1. 用前面在 Quay 中创建的 init 用户和对应密码创建用来认证的字符串。
$ REGISTRY_AUTH=$(echo -n init:r3dh4t1! | base64)
$ echo ${REGISTRY_AUTH}
aW5pdDpyM2RoNHQxIQ==
  1. 如果还没有 ~/.docker/config.json 文件,则执行以下命令。
$ cat > ~/.docker/config.json << EOF
{
  "auths": {
    "${QUAY_HOSTNAME}:8443": {
      "auth": "${REGISTRY_AUTH}",
      "email": "you@example.com"
    }
}
EOF
  1. 如果已经有 ~/.docker/config.json 文件,则执行以下命令:
$ echo \"${QUAY_HOSTNAME}:8443\":\{\"auth\":\"${REGISTRY_AUTH}\",\"email\":\"you@example.com\"}, 
"quay.local:8443":{"auth":"aW5pdDpyM2RoNHQxIQ==","email":"you@example.com"}

然后将返回结果加入到 ~/.docker/config.json 文件中 “auths”: { 的后面。完成后 ~/.docker/config.json 内容前面应该如下:

{
  "auths": {
    "quay.local:8443": {
      "auth": "aW5pdDpyM2RoNHQxIQ==",
      "email": "you@example.com"
    },
    。。。
}

hosts 文件 IP 地址被修改

当使用 /etc/hosts 文件解析主机名和 IP 地址的时候,发现 Quay 的安装过程会将 /etc/hosts 文件中主机名对应的 IP 修改为 127.0.0.1。目前还不太清楚具体原因,不过可以在安装后再将 /etc/hosts 文件中的内容回复回来。

参考

https://github.com/quay/openshift-mirror-registry
https://docs.openshift.com/container-platform/4.10/installing/disconnected_install/installing-mirroring-creating-registry.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值