OpenShift 4.2环境离线部署Operatorhub

缺省离线环境安装的ocp4的Operatorhub是没有内容的。详细离线文档参考官网文档

https://docs.openshift.com/container-platform/4.2/operators/olm-restricted-networks.html

我这里以amq-stream为例记录离线部署的过程, 如何批量导入的过程正在研究中。。。。

  • 访问路径拿出所有的package
$ curl https://quay.io/cnr/api/v1/packages?namespace=redhat-operators > packages.txt
  • 拼出amq-stream的链接后curl一下获取下载地址
bash-4.2$ curl https://quay.io/cnr/api/v1/packages/redhat-operators/amq-streams/4.0.0
[{"content":{"digest":"091168d8d6f9511404ffa1d69502c84144e1a83ceb5503e8c556f69a1af66a1e","mediaType":"application/vnd.cnr.package.helm.v0.tar+gzip","size":89497,"urls":[]},"created_at":"2019-10-24T09:09:26","digest":"sha256:d0707e2a688e64907ff4d287c5f95a35b45b08121f8a7d556b9f130840e39052","mediaType":"application/vnd.cnr.package-manifest.helm.v0.json","metadata":null,"package":"redhat-operators/amq-streams","release":"4.0.0"}]
  • 将Operator的内容存成一个tar.gz的包
curl -XGET https://quay.io/cnr/api/v1/packages/redhat-operators/amq-streams/blobs/sha256/091168d8d6f9511404ffa1d69502c84144e1a83ceb5503e8c556f69a1af66a1e \
    -o amq-streams.tar.gz
建立路径并解压缩$ mkdir -p manifests/
$ tar -xf amq-stream.tar.gz -C manifests/
  • 重新命名后tree一下结构
[[email protected] ~]# tree manifests/
manifests/
└── amq-streams
    ├── 1.0.0
    │   ├── amq-streams-kafkaconnect.crd.yaml
    │   ├── amq-streams-kafkaconnects2i.crd.yaml
    │   ├── amq-streams-kafka.crd.yaml
    │   ├── amq-streams-kafkamirrormaker.crd.yaml
    │   ├── amq-streams-kafkatopic.crd.yaml
    │   ├── amq-streams-kafkauser.crd.yaml
    │   └── amq-streams.v1.0.0.clusterserviceversion.yaml
    ├── 1.1.0
    │   ├── amq-streams-kafkaconnect.crd.yaml
    │   ├── amq-streams-kafkaconnects2i.crd.yaml
    │   ├── amq-streams-kafka.crd.yaml
    │   ├── amq-streams-kafkamirrormaker.crd.yaml
    │   ├── amq-streams-kafkatopic.crd.yaml
    │   ├── amq-streams-kafkauser.crd.yaml
    │   └── amq-streams.v1.1.0.clusterserviceversion.yaml
    ├── 1.2.0
    │   ├── amq-streams-kafkabridges.crd.yaml
    │   ├── amq-streams-kafkaconnects2is.crd.yaml
    │   ├── amq-streams-kafkaconnects.crd.yaml
    │   ├── amq-streams-kafkamirrormakers.crd.yaml
    │   ├── amq-streams-kafkas.crd.yaml
    │   ├── amq-streams-kafkatopics.crd.yaml
    │   ├── amq-streams-kafkausers.crd.yaml
    │   └── amq-streams.v1.2.0.clusterserviceversion.yaml
    ├── 1.3.0
    │   ├── amq-streams-kafkabridges.crd.yaml
    │   ├── amq-streams-kafkaconnects2is.crd.yaml
    │   ├── amq-streams-kafkaconnects.crd.yaml
    │   ├── amq-streams-kafkamirrormakers.crd.yaml
    │   ├── amq-streams-kafkas.crd.yaml
    │   ├── amq-streams-kafkatopics.crd.yaml
    │   ├── amq-streams-kafkausers.crd.yaml
    │   └── amq-streams.v1.3.0.clusterserviceversion.yaml
    └── amq-streams.package.yaml

展开package.yaml看看

[[email protected] ~]# cat manifests/amq-streams/amq-streams.package.yaml
packageName: amq-streams
channels:
- name: stable
  currentCSV: amqstreams.v1.3.0

当前指向为1.3.0目录,所以去1.3.0目录去更新amq-streams.v1.3.0.clusterserviceversion.yaml,具体是这么一堆标黑的。

              labels:
                name: amq-streams-cluster-operator
                strimzi.io/kind: cluster-operator
            spec:
              serviceAccountName: strimzi-cluster-operator
              containers:
              - name: cluster-operator
                image: registry.redhat.ren/amq7/amq-streams-operator:1.3.0
                args:
                - /opt/strimzi/bin/cluster_operator_run.sh
                env:
                - name: STRIMZI_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.annotations[‘olm.targetNamespaces‘]
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
                  value: "120000"
                - name: STRIMZI_OPERATION_TIMEOUT_MS
                  value: "300000"
                - name: STRIMZI_DEFAULT_ZOOKEEPER_IMAGE
                  value: registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE
                  value: registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE
                  value: registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE
                  value: registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_DEFAULT_KAFKA_EXPORTER_IMAGE
                  value: registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_KAFKA_IMAGES
                  value: |
                    2.2.1=registry.redhat.io/amq7/amq-streams-kafka-22:1.3.0
                    2.3.0=registry.redhat.io/amq7/amq-streams-kafka-23:1.3.0
                - name: STRIMZI_KAFKA_CONNECT_IMAGES
                  value: |
                    2.2.1=registry.redhat.io/amq7/amq-streams-kafka-22:1.3.0

下载镜像,然后再推送到自己的位置那些就不说了

我因为只修改了上面那个operator的后面的没有修改和导入导致后来拉镜像有问题,不说了。。。。

  • 建立一个 custom-registry.Dockerfile
[[email protected] operator]# cat custom-registry.Dockerfile
FROM registry.redhat.io/openshift4/ose-operator-registry:v4.2.0 AS builder

COPY manifests manifests

RUN /bin/initializer -o ./bundles.db;sleep 20 

#FROM scratch

#COPY --from=builder /registry/bundles.db /bundles.db
#COPY --from=builder /bin/registry-server /registry-server
#COPY --from=builder /bin/grpc_health_probe /bin/grpc_health_probe

EXPOSE 50051

ENTRYPOINT ["/bin/registry-server"]

CMD ["--database", "/registry/bundles.db"]

此处有个n大坑

  • 运行完initializer后说找不到bundles.db文件,实际上运行完后需要sleep一下,让文件形成
  • bundles.db位置不对,在/registry下,而不是在/build下
  • registry-server的位置不对,在/bin下,而不是在/build/bin/下
  • 如果FROM scratch的话,形成的镜像因为格式问题无法运行。

耽误时间3个钟头以上。。。。。

  • 构建镜像
podman build -f custom-registry.Dockerfile  -t registry.redhat.ren/ocp4/custom-registry 

podman push registry.redhat.ren/ocp4/custom-registry 
  • 创建一个my-operator-catalog.yaml文件
[[email protected] operator]# cat my-operator-catalog.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: my-operator-catalog
  namespace: openshift-marketplace
spec:
  displayName: My Operator Catalog
  sourceType: grpc
  image: registry.redhat.ren/ocp4/custom-registry:latest

然后

oc create -f my-operator-catalog.yaml 

正常情况下看到的是

[[email protected] operator]# oc get pods -n openshift-marketplace
NAME                                    READY   STATUS    RESTARTS   AGE
marketplace-operator-5c846b89cb-k5827   1/1     Running   1          2d4h
my-operator-catalog-8jt25               1/1     Running   0          4m53s
[[email protected] operator]# oc get catalogsource -n openshift-marketplace
NAME                  DISPLAY               TYPE   PUBLISHER   AGE
my-operator-catalog   My Operator Catalog   grpc               5m5s
[[email protected] operator]# oc get packagemanifest -n openshift-marketplace
NAME          CATALOG               AGE
amq-streams   My Operator Catalog   5m11s

我的中间过程有点问题,后来发现是因为各个节点解析不到registry.redhat.ren这个外部镜像仓库地址,后手工在/etc/hosts中加上。

  • 切换到openshift界面。

建立一个新的项目安装

然后建立kafka集群然后查看Pod,我因为没有镜像所以都image pullbackoff..... :-(

大功告成!

原文地址:https://www.cnblogs.com/ericnie/p/11777384.html

时间: 2024-09-30 18:59:06

OpenShift 4.2环境离线部署Operatorhub的相关文章

《ArcGIS Runtime SDK for Android开发笔记》——基于Android Studio构建ArcGIS Android开发环境(离线部署)

1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在这种方式里主要通过设置maven仓库位置,设置编译选项.依赖版本在联网环境下下载对应SDK依赖包. 但是在网络情况不好的情况下这种方式就不行了,那怎么解决在离线环境或者内网环境实现开发流程呢?目前了解到的有两种方式: 1)配置内网环境maven仓库,预先缓存到内网环境下,然后离线调用. 2)采用直接

ArcGIS for Server内置JS Viewer的离线部署和配置

很多情况下,在地图服务发布完毕后,我们往往利用 ArcGIS for Server内置的 JS Viewer来查看和检测所发布的地图服务是否满足我们的要求.具体操作如下: 点击开始 -> 所有程序 -> ArcGIS -> ArcGIS for Server -> Services Directory 或直接在浏览器地址栏中键入 http://ip:6080/arcgis/rest打开ArcGIS for Server的Service Directories页面,选中并点击要查看的

十、MDT 2013 Update 1批量部署-media(离线部署包)的制作及使用

MDT 2013 Update 1的高级特性里有个MEDIA包的制作,也就是离线部署包,不用网络就可以实现微软操作系统的部署,利用生成的ISO,刻盘.U盘.移动硬盘实现单机操作系统部署,这个功能以前没有使用过,为了完整这次的使用功能汇总,特意的去使用. 10.1 media(离线部署包)的制作 选择高级配置里的MEDIA功能,再选择一个对应的目录,本例中选用c:\usb 设置生成离线包的名称 也可以参数文件,由于本地用户与网络使用有些参数不完全一致(如本地部署不需要用户名.密码.登录域等),所以

Cesium简介以及离线部署运行

Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区域,并提供良好的触摸支持,且支持绝大多数的浏览器和mobile,但是由于cesium基于WebGL来渲染3D的,所以对浏览器有要求,必须支持WebGL才行.参照cesium官网的说明文档,浏览器支持版本:IE11或者以上.谷歌.火狐版本比较高级等等,其实测试浏览器支不支持,运行demo就可以测试,会

【内网福音】如何离线部署Rancher

对于在公司内网环境中.无法访问互联网的用户而言,离线安装部署Rancher是解决问题的关键.本文是Rancher离线部署教程,专为内网用户排坑解难. 版本说明 OS:Centos7.3 Docker version: 1.12.6 Rancher version: 1.6.10 主机角色说明 前期准备 docker rpm wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.e

离线部署 kubernetes1.9(使用kubeadm)

部署环境 参考文章: 使用 kubeadmin 离线部署 kubernetes1.9kubeadm安装1.9版本使用kubeadm离线部署kubernetes v1.9.0 原文地址:http://blog.51cto.com/bestlope/2151855

微服务架构 - CentOS7离线部署docker

原文:微服务架构 - CentOS7离线部署docker 1.环境准备 系统环境为: CentOS Linux release 7.5.1804 (Core) 安装docker版本为: 17.12.0-ce 2.准备部署文件 在http://mirrors.163.com/centos/7/os/x86_64/Packages/中下载如下rpm安装包: audit-2.8.4-4.el7.x86_64.rpm audit-libs-2.8.4-4.el7.x86_64.rpm libselinu

微服务架构 - 离线部署k8s平台并部署测试实例

一般在公司部署或者真实环境部署k8s平台,很有可能是内网环境,也即意味着是无法连接互联网的环境,这时就需要离线部署k8s平台.在此整理离线部署k8s的步骤,分享给大家,有什么不足之处,欢迎指正. 1.准备环境 这次离线部署k8s的版本为v1.10.1,同时docker的版本为17.12.0-ce,不过本文章不介绍如何离线部署docker,如果大家要看的话,可以看本人之前写的文章<CentOS7离线部署docker> 本人准备的环境是3台虚拟机,也即1台master节点,2个node节点,ip及

CDH5.16.1集群企业真正离线部署

?.准备?作 1.离线部署大纲 MySQL离线部署 CM离线部署 Parcel?件离线源部署 2.规划 linux版本:CentOS 7.2 节点 MySQL组件 Parcel?件离线源 CM服务进程 ?数据组件 hadoop001 MySQL Parcel Alert Publisher Event Server NN RM DN NM ZK hadoop002 Alert Publisher Event Server DN NM ZK hadoop003 Host Monitor Servi