《OpenShift / RHEL / DevSecOps 汇总目录》

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

文章目录

  • 安装 Quay
  • 对 Quay 进行镜像操作
  • 处理问题
    • “unauthorized” 错误
    • hosts 文件 IP 地址被修改
  • 参考

安装 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 HatBuild, Store, and Distribute your ContainersINFO[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

Quay(0) - 安装一个单实例 Quay 环境相关推荐

  1. Oracle11.2.0.4数据库单实例补丁安装

    Oracle11.2.0.4数据库单实例补丁安装 1.解压p6880880_112000_Linux-x86-64.zip 生成OPatch文件夹,覆盖原有OPatch文件夹 2.解压p2881387 ...

  2. linux dump命令 异机,Oracle 11.2.0.4 从单实例,使用RMAN 异机恢复到RAC

    Oracle 11.2.0.4从单实例,使用RMAN异机恢复到RAC 注意: (1)迁移的2个db版本版本要一致.包括小版本. (2)RMAN异机恢复的时候,db_name必须相同.如果说要想改成其他 ...

  3. Oracle 11.2.4.0 ACTIVE DATAGUARD 单实例安装(COPY创建备库)

    Oracle 11.2.4.0 ADG 单实例安装(COPY创建备库) 规划: 主: OS: Linux Centos 6.5 X64 hostname:ORA11G-DG1 ipaddress:19 ...

  4. oracle安装卡在create inventory_滴滴云服务器上安装Oracle12cR2单实例数据库

    一.相关说明 Oracle数据库是由美国甲骨文公司推出的一款优秀的关系型数据库.当前最新版为Database 19c.本文简述Oracle Database 12cR2在滴滴云主机上的安装过程.如需更 ...

  5. 滴滴云服务器上安装Oracle12cR2单实例数据库

    一.相关说明 Oracle数据库是由美国甲骨文公司推出的一款优秀的关系型数据库.当前最新版为Database 19c.本文简述Oracle Database 12cR2在滴滴云主机上的安装过程.如需更 ...

  6. 使用mongo shake实现从一个单实例mongo往多个mongo单实例进行数据同步

    一 实验环境 二 实验步骤 2.1 确保源端mongo已开启oplog 可参考单实例MongoDB 如何开启Oplog_雅冰石的专栏-CSDN博客 2.2 安装mongoshake 在每个目标端都安装 ...

  7. 磁盘挂载与gcc9.3.0安装(Rocky Linux 8.5 环境)

    目录 一.磁盘挂载 1.磁盘情况查看 2.对sda这块硬盘进行分区,这里只分一个区 3.磁盘格式化 4.创建挂载点 5.配置磁盘挂载信息重启后生效配置 二.gcc9.3.0安装 1.安装依赖 2.手动 ...

  8. MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细

    在Linux系统安装MySQL8.0,网上已经有很多的教程了,到自己安装的时候却发现各种各样的问题,现在把安装过程和遇到的问题都记录下来. 需要说明的一点是我使用的是SSH secure shell ...

  9. 安装oracle 11gR2单实例+ASM

    安装oracle11gR2单实例+ASM,让新手走向数据库管理员 一.介绍 因业务需要,最近在主系统的基础上搭建一套mini系统,本文只讲ORACLE数据库+ASM磁盘管理工具的安装: 1.服务器系统 ...

最新文章

  1. U型管铁球或将代替现代火箭喷射装置
  2. mysql mtq_mysql基本操作 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  3. BZOJ4754 JSOI2016独特的树叶(哈希)
  4. 定义了浮动元素后margin-bottom失效的解决办法
  5. 动态规划--编辑距离问题
  6. nginx httpgzip模块
  7. 关于丢番图方程x^2-dy^2=-1
  8. “睡服”面试官系列第八篇之iterator(建议收藏学习)
  9. linux rz批量上传
  10. springboot_通过Actuator了解应用程序运行时的内部状况
  11. linux 安装 vmvare
  12. 要求员工自愿无偿加班 特斯拉真是拼...
  13. DOM基础、定时器、BOM基础
  14. 前端自动化构建工具之webpack入门——简单入门
  15. building xxx gradle project info的解决办法
  16. c++除法保留小数_BigDecimal 加减乘除、保留小位数
  17. [Andriod官方API指南]连接之蓝牙
  18. 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】
  19. 如何从一个html页面调用另外一个页面的js函数,解决同一页面中两个iframe互相调用jquery,js函数的方法...
  20. 生产企业ERP流程是什么

热门文章

  1. 从零开始学ESP32:(四)ESP32/freeRTOS 实现一个内存池操作
  2. 通过共享文件夹实现虚拟机VMware与宿主机文件共享
  3. [PMP]一张图带你了解项目管理49个过程(PMBOK第六版-附实例)
  4. keras模型转换为tensorflow的pb模型结构
  5. CVE-2016-2183
  6. 如何让解决tomcat中文乱码问题
  7. Stata如何快速安装外部命令
  8. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务安卓卡片接入指南
  9. 增词程序c语言,2012年成人高考英语三级翻译参考资料
  10. i7 12700H和i9 12900H 参数对比