OpenShift 4.3 - 获得ImageStream中使用的应用镜像离线包

文章目录

  • 准备环境
    • 开启Katacoda环境
    • 安装unzip
  • 生成离线OpenShift的应用镜像
    • 设置应用镜像目录
    • 设置下载镜像列表
    • 下载OpenShift的应用镜像到Katacoda
    • 打包OpenShift的应用镜像
  • 上传离线镜像到Baidu
    • 下载安装Baidu网盘的Linux客户端
    • 登录Baidu网盘
    • 上传离线镜像到Baidu网盘
  • 参考

在线下载OpenShift使用的应用镜像网速通常比较慢,因此可通过下载离线镜像包的方式避免OpenShift在线实时拉镜像;另外,对于一些运行在内网的OpenShift集群也需要通过离线方式使用应用镜像。本文说明如何通过Katacoda和Baidu网盘的Linux客户端获取离线的OpenShift应用镜像。

建议:

  1. 由于Katacoda环境的Session最多只有1小时的时间,所以每次建议只传一个镜像。
  2. 由于在白天受到网络影响,将Katacoda文件上传到Baidu网盘的过程网速比较慢。但是在清晨还是比较快,网速能达到几兆/秒。

准备环境

开启Katacoda环境

进入katacoda的openshift环境

安装unzip

yum install -y unzip

生成离线OpenShift的应用镜像

下载安装oc的Linux客户端

wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.3.18/openshift-client-linux-4.3.18.tar.gz
tar -xvf openshift-client-linux-4.3.18.tar.gz
\cp oc /usr/bin/

设置应用镜像目录

FORMAL_PATH=~/ocp-app-images
TEMP_PATH=~/temp
mkdir $FORMAL_PATH $TEMP_PATH

设置下载镜像列表

cat << EOF > $FORMAL_PATH/app-images.txt
registry.access.redhat.com/rhscl/httpd-24-rhel7:latest
registry.access.redhat.com/rhscl/nginx-112-rhel7:latest
EOF

下载OpenShift的应用镜像到Katacoda

cat $FORMAL_PATH/app-images.txt | while read line; do
  echo "================> Begin downloading $line <================"
  oc image mirror $line --filter-by-os=linux/amd64 --dir=$TEMP_PATH file://$(echo $line | cut -d '/' -f2)/$(echo $line | cut -d '/' -f3)
done

打包OpenShift的应用镜像

for dir1 in $(ls $TEMP_PATH/v2); do
  mkdir -p $FORMAL_PATH/$dir1
  for dir2 in $(ls $TEMP_PATH/v2/$dir1); do
  	echo "================> Begin packaging $FORMAL_PATH/$dir1/$dir2.tar.gz <================"
    tar -zcvf $FORMAL_PATH/$dir1/$dir2.tar.gz -C $TEMP_PATH/v2/$dir1 $dir2;
  done
done

上传离线镜像到Baidu

下载安装Baidu网盘的Linux客户端

wget https://github.com/iikira/BaiduPCS-Go/releases/download/v3.6.2/BaiduPCS-Go-v3.6.2-linux-amd64.zip
unzip BaiduPCS-Go-v3.6.2-linux-amd64.zip
mv BaiduPCS-Go-v3.6.2-linux-amd64/BaiduPCS-Go /usr/bin/baidu

登录Baidu网盘

baidu login

上传离线镜像到Baidu网盘

BAIDU_PATH=/ocp-app-images
baidu mkdir $BAIDU_PATH
for dir in $(ls $FORMAL_PATH); do
  baidu mkdir $BAIDU_PATH/$dir
  for file in $(ls $FORMAL_PATH/$dir); do
  	echo "================> Begin uploading $FORMAL_PATH/$dir1/$dir2.tar.gz <================"
    baidu upload $FORMAL_PATH/$dir/$file $BAIDU_PATH/$dir
  done
done

参考

Baidu网盘的Linux客户端命令

你可能感兴趣的:(OpenShift,4,ImageStream,离线,Kubernetes,OpeShift)