文章目录
在线下载OpenShift使用的应用镜像网速通常比较慢,因此可通过下载离线镜像包的方式避免OpenShift在线实时拉镜像;另外,对于一些运行在内网的OpenShift集群也需要通过离线方式使用应用镜像。本文说明如何通过Katacoda和Baidu网盘的Linux客户端获取离线的OpenShift应用镜像。
建议:
- 由于Katacoda环境的Session最多只有1小时的时间,所以每次建议只传一个镜像。
- 由于在白天受到网络影响,将Katacoda文件上传到Baidu网盘的过程网速比较慢。但是在清晨还是比较快,网速能达到几兆/秒。
准备环境
开启Katacoda环境
安装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
方法1
配置环境
- 安装Python环境
yum install -y python
python3 get-pip.py
- 安装bypy软件
pip install requests
pip install setuptools
pip install bypy
source ~/.bashrc
上传文件
- 登录Baidu网盘。期间按提示用浏览器访问“https://openapi.baidu.com/oauth/。。。”的页面,然后在页面中授权应用访问,最后再将下图中的授权码复制到Terminal的命令行提示中,
$ bypy info
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Baidu PCS currently gives totally WRONG MD5 hash for remote files, and I AM NOT GOING TO ADAPT TO IT!
So it if doesn't work, install version '1.6.10' using the following command:
pip install bypy==1.6.10
Version 1.6.10 has a workaround for this.
### Seeking maintainer fo this `bypy` project, if you are interested, please create an issue at github, thanks. ###
----------------------------------------------------------------
百度云盘返回的MD5全错了,鬼知道他们什么时候会改回来!现在代码是按照MD5值是正确的前提来写的,不会改。
所以你发现比较功能等不能正确工作时,请安装 1.6.10 版本:
pip install bypy==1.6.10
1.6.10版有个临时解决方案。
### 寻求这个`bypy`项目维护者,有意的话请去github上建issue,谢谢。###
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Please visit:
https://openapi.baidu.com/oauth/2.0/authorize?client_id=q8WE4EpCsau1oS0MplgMKNBn&response_type=code&redirect_uri=oob&scope=basic+netdisk
And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done
2. 上传之前可对比较大的文件切割。下面命令会将“YOUR_FILE”切分,然后加上001、002…的编号。
split -b 20M -d -a 3 <YOUR_FILE>
只需要cat命令就可将文件合并。
cat <YOUR_FILE>.* > <YOUR_FILE>
- 上传文件。以下为将当前目录的所有文件传到Baidu网盘的“/apps/bypy”目录。(注意:目前上传文件只能放在“/apps/bypy”目录下)。
bypy upload ./ /apps/bypy
方法2(目前已经失效了)
下载安装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