iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Cloud Native

駕馭商用容器叢集,汪洋漂流術系列 第 17

【Day 17】 私有 Quay Registry 與 oc mirror

  • 分享至 

  • xImage
  •  

前言

延續前一回的安裝話題,在 Disconnected OCP - 離線 OCP 叢集中,安裝與更新套件,是一個經典的場景。 由於無法直接從 registry.redhat.ioquay.io 抓取 Operator 或映像,必須要搭建私有 Quay registry 來解決離島的補給問題。

工具介紹

Quay

  1. 可以解決離線環境的映像 來源問題
    • OCP 安裝OperatorHub 都依賴外部 registry
    • Disconnected 叢集需要替代方案。
  2. 建立企業 內部映像倉庫
    • Quay 提供企業級的 registry,支援權限控管、Robot Account、鏡像管理

    類似 Harbor https://goharbor.io/
    還是 ECR 這種 https://aws.amazon.com/tw/ecr/
    但是咧,業主就是有錢,買買買!通通擺進來不要那麼囉唆。
    管理不費心,還不用什麼雲地網路串接,通通離線讓稽核人員不要找麻煩。

oc mirror

  • 指令 oc adm catalog mirror 可以把 Red Hat Operator Catalog(或自訂 Operator)整包抓下來,再推送到私有 Quay。

    網管人員先在自己的聯網設備上,把東西拉下來,再拖進機房裡面,擺到倉庫。

詳細做法

pull secret

jq -c '.auths += {"quay.xxx.com": {"auth":"<base64-username:password>"}}' pull-secret.json > merged-pull-secret.json

catalog 同步

oc adm catalog mirror \
  registry.redhat.io/redhat/redhat-operator-index:v4.14 \
  quay.xxx.com/olm/redhat-operator-index:v4.14 \
  --registry-config=merged-pull-secret.json

建立 CatalogSource

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: redhat-operators-disconnected
  namespace: openshift-marketplace
spec:
  sourceType: grpc
  image: quay.xxx.com/olm/redhat-operator-index:v4.14
  displayName: "Red Hat Operators (Disconnected)"
  publisher: quay.xxx.com

安裝 Operator

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: servicemeshoperator
  namespace: openshift-operators
spec:
  channel: stable
  name: servicemeshoperator
  source: redhat-operators-disconnected
  sourceNamespace: openshift-marketplace

結論

  • 建議先測試單一映像 push/pull,確認 Quay registry 認證沒問題,再進行大規模 oc mirror。
  • oc adm catalog mirror 會抓下整個 Catalog,體積可能非常大,若只需要特定 Operator,可以改用 oc mirror plugin 搭配 imageSetConfig 精準選取。
  • Robot Account 很好用,可以給 CI/CD 或自動化腳本專用。
  • 若遇到 unauthorized 錯誤,多半是 Quay repo 沒建好,或帳號缺少 Write 權限。

上一篇
【Day 16】 Service Mesh / Istio / OSSM - 叢集內的交通警察
系列文
駕馭商用容器叢集,汪洋漂流術17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言