OpenShift 4 - 安装 ODF 并部署红帽 Quay (1 Worker)

OpenShift 4.x HOL教程汇总
说明:本文已经在OpenShift 4.10 环境中验证

由于新版 Quay 需要使用 OpenShift Data Foundation 提供对象存储,本文是针对新版 Quay Operator 3.7.4 安装说明修正。
注意:本文的 ODF 采用是非正式的变通方式部署运行。

安装配置 OpenShift Data Foundation

安装 ODF Operator

使用默认配置将 OpenShift Data Foundation Operator 安装到 openshift-storage 项目中。
在这里插入图片描述

配置 Noobaa

  1. 执行以下命令创建 NooBaa 对象。
$ cat << EOF | oc apply -f -
apiVersion: noobaa.io/v1alpha1
kind: NooBaa
metadata:
  name: noobaa
  namespace: openshift-storage
spec:
 dbResources:
   requests:
     cpu: '0.1'
     memory: 1Gi
 dbType: postgres
 coreResources:
   requests:
     cpu: '0.1'
     memory: 1Gi
EOF
  1. 执行命令创建 BackingStore 对象。其中 gp2 是 OpenShift 集群中已有的 StorageClass 名称。
$ cat << EOF | oc apply -f -
apiVersion: noobaa.io/v1alpha1
kind: BackingStore
metadata:
  finalizers:
  - noobaa.io/finalizer
  labels:
    app: noobaa
  name: noobaa-pv-backing-store
  namespace: openshift-storage
spec:
  pvPool:
    numVolumes: 2
    resources:
      requests:
        storage: 300Gi
    storageClass: gp2
  type: pv-pool
EOF
  1. 部署完后可以查看部署好的资源。
$ oc get pod
NAME                                               READY   STATUS    RESTARTS   AGE
csi-addons-controller-manager-58765ffdb9-l9r4h     2/2     Running   0          25m
noobaa-core-0                                      1/1     Running   0          25m
noobaa-db-pg-0                                     1/1     Running   0          25m
noobaa-endpoint-76b76b7457-lbnww                   1/1     Running   0          11m
noobaa-operator-6c8b57f6f7-5qq2v                   1/1     Running   0          26m
noobaa-pv-backing-store-noobaa-pod-05a665d4        1/1     Running   0          11m
noobaa-pv-backing-store-noobaa-pod-d7fd9e71        1/1     Running   0          11m
ocs-metrics-exporter-8488bdfbc5-648qg              1/1     Running   0          26m
ocs-operator-8499fdf689-slrdb                      1/1     Running   0          26m
odf-console-65f5595bb9-z4hz8                       1/1     Running   0          26m
odf-operator-controller-manager-77b4fc5c49-89tfd   2/2     Running   0          26m
rook-ceph-operator-9795c956f-lh8gt                 1/1     Running   0          26m

在这里插入图片描述
4. 执行命令更新 bucketclass。

$ oc get bucketclass
NAME                          PLACEMENT                                                        NAMESPACEPOLICY   QUOTA   PHASE   AGE
noobaa-default-bucket-class   {"tiers":[{"backingStores":["noobaa-default-backing-store"]}]}                             Ready   2m28s
 
$ oc patch bucketclass noobaa-default-bucket-class --patch '{"spec":{"placementPolicy":{"tiers":[{"backingStores":["noobaa-pv-backing-store"]}]}}}' --type merge -n openshift-storage

安装 Quay

  1. 使用默认配置将 Quay Operator 安装到所有命名空间。
    在这里插入图片描述
  2. 创建名为 redhat-quay 的项目。
  3. 执行命令创建 QuayRegistry 实例。完成后可以在 OpenShift 的开发者视图中看到下图的部署拓扑。
$ cat << EOF | oc apply -f -
apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata:
  name: example-registry
  namespace: redhat-quay
spec:
  {}
EOF

注意:在部署过程中有可能会在事件中提示申请资源超过 LimitRange。此时可以进入控制台的 “管理”-“限制范围” 菜单,然后删除对应的 LimitRange 即可。
在这里插入图片描述

  1. 执行命令获得 Quay 控制台访问地址。
$ QUAY_HOST=$(oc get route example-registry-quay -n redhat-quay -o jsonpath='{.spec.host}')
  1. 在浏览器中打开上一步 QUAY_HOST 变量中的地址,然后在控制台中创建名为 quayadmin 的账户即可。
    在这里插入图片描述

验证测试 Quay

  1. 获得 hello-openshift 镜像到本地。
$ podman pull docker.io/openshift/hello-openshift
Trying to pull docker.io/openshift/hello-openshift:latest...
Getting image source signatures
Copying blob 4f4fb700ef54 done
Copying blob 8b32988996c5 done
Copying config 7af3297a3f done
Writing manifest to image destination
Storing signatures
7af3297a3fb4487b740ed6798163f618e6eddea1ee5fa0ba340329fcae31c8f6
  1. 对镜像重新打标签。
podman tag docker.io/openshift/hello-openshift ${QUAY_HOST}/quayadmin/hello-openshift:latest
  1. 登录 Quay 后将本地镜像推送到 Quay上。
$ podman login ${QUAY_HOST} --username=quayadmin --password=<YOUR-PASSWORD>
Login Succeeded!
 
$ podman push ${QUAY_HOST}/quayadmin/hello-openshift:latest
Getting image source signatures
Copying blob 5f70bf18a086 done
Copying blob da0e4d9121c7 done
Copying config 7af3297a3f done
Writing manifest to image destination
Storing signatures
  1. 最后可以在 Quay 中确认已经有了 hello-openshift 镜像。
    在这里插入图片描述

参考

https://github.com/liuxiaoyu-git/OpenShift-Labs/tree/main/userOperators/Quay
https://github.com/liuxiaoyu-git/ocp-quay-demo


版权声明:本文为weixin_43902588原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。