2022年12月2日 星期五

在 CentOS / RHEL 9上安裝 Quay 服務

學習目標:
  • 架設 Quay 服務,用來放置容器印象檔。
  • 與 Quay 配合的服務,包含 PostgreSQL、Redis、Podman 等服務。
安裝設定流程:
  1. 安裝 PostgreSQL 服務:
      # yum install -y postgresql-*
      # postgresql-setup initdb
      # vim /var/lib/pgsql/data/pg_hba.conf
        host  all   all   0.0.0.0/0  md5
        host  all   all   ::1/128       md5
      # vim /var/lib/pgsql/data/postgresql.conf
        listen_addresses = '*';
      # systemctl enable --now postgresql
      
  2. 新增 PostgreSQL 內的資料庫給 Quay 使用:
      # su - postgres
      $ psql
      postgres=# \password postgres
      postgres=# CREATE USER quay WITH PASSWORD 'quay123';
      postgres=# CREATE DATABASE quay;
      postgres=# ALTER DATABASE quay OWNER TO quay;
      postgres=# GRANT ALL PRIVILEGES ON DATABASE quay TO quay;
      postgres=# \connect quay;
      quay=# ALTER SHCEMA public OWNER TO quay;
      quay=# GRANT ALL PRIVILEGES ON SCHEMA public TO quay;
      quay=# CREATE EXTENSION IF NOT EXISTS pg_trgm;
      quay=# \q
      $ exit
      #
      
  3. 測試連結 PostgreSQL Server:
      # psql -U quay -d quay -h 127.0.0.1
      quay=> \q
      #
      
  4. 安裝 Redis 服務:
    # yum install -y redis-*
    # vim /etc/redis/redis.conf
    requirepass quay
    bind * -::1
    # systemctl enable --now redis
    
  5. 設定防火牆:
    # firewall-cmd --add-service=http
    # firewall-cmd --add-service=https
    # firewall-cmd --add-service=postgresql
    # firewall-cmd --add-service=redis
    # firewall-cmd --runtime-to-permanent
    
  6. 安裝 Podman 容器服務:
    # yum install -y podman container-tools
      
  7. 登入 Registry Server:
    # podman login registry.redhat.io
      
  8. 安裝 Quay 服務,並且進行初始化設定:
    # podman run --rm -it --name quay_config -p 80:8080 -p 443:8443 registry.redhat.io/quay/quay-rhel8:v3.7.10 config secret
      
  9. 打開瀏覽器,輸入網址:http://localhost
  10. 在畫面中,輸入帳號密碼:quayconfig / secret

  11. 設定首頁的 Title 名稱:

  12. 設定 Quay 主機名稱:

  13. 設定連結 PostgreSQL 相關資料:

  14. 設定連結 Redis 相關資料:

  15. 按下 Validate Configuration Changes 用來驗證資料是否正確:

  16. 驗證成功之後,下載設定檔,並且停止 quay_config 容器的運作:
    # podman stop quay_config
      
  17. 將下載的設定檔,解開至指定的資料夾內:
    # mkdir -p /opt/quay/config
    # cp ~/Downloads/quay-config.tar.gz /opt/quay/config
    # cd /opt/quay/config
    # tar xvf quay-config.tar.gz
         
  18. 建立一個資料夾,用來存放容器印象檔:
    # mkdir -p /opt/quay/storage
    # setfacl -m u:1001:-wx /opt/quay/storage
         
  19. 佈署一個新的 Quay 服務:
    # podman run -d --rm -p 80:8080 -p 443:8443  \
       --name=quay \
       -v /opt/quay/config:/conf/stack:Z \
       -v /opt/quay/storage:/datastorage:Z \
       registry.redhat.io/quay/quay-rhel8:v3.7.10
         
  20. 打開瀏覽器,輸入網址名稱,例如:http://registry.example.com

  21. 下拉網頁至下方,點選「Creaet Account」建立一個管理者帳號:

  22. 登入後,即可開始使用:

  23. 為 Quay 建立一個系統服務,設定開機時可立即啟動:
    # podman stop quay
    # podman create -p 80:8080 -p 443:8443  \
       --name=quay \
       -v /opt/quay/config:/conf/stack:Z \
       -v /opt/quay/storage:/datastorage:Z \
       registry.redhat.io/quay/quay-rhel8:v3.7.10
    # podman images
    # podman generate systemd --new --files --name quay
    # cp -Z container-quay.service /etc/systemd/system
    # systemctl daemon-reload
    # systemctl enable --now container-quay.service
      
  24. 可修改相關設定,讓 QUAY 更安全:
    # vim /opt/quay/config/config.yaml
    FEATURE_ANONYMOUS_ACCESS: false
    SETUP_COMPLETE: true
    SUPER_USERS:
      - admin
    FEATURE_USER_CREATION: false
    # systemctl restart container-quay.service
    # restorecon -Rvv /opt/quay/
      
參考文獻:
  • https://github.com/quay/quay/blob/master/docs/quick-local-deployment.md
  • https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/building_running_and_managing_containers/proc_auto-generating-a-systemd-unit-file-using-podman_assembly_porting-containers-to-systemd-using-podman
  • https://blog.stderr.at/quay/2020-05-13-quay-tutorial1/