openshift-离线环境部署

前言

之前制作了一个不够智能,随着版本的升级又要重新制作,很烦。

思考

做openshift iso 需要准备的点;

  1. docker-registry 相关的镜像,openshift 要用到的相关镜像
  2. openshift 的rpm包,也就是仓库的搭建
  3. 版本更迭,如何能够快速制作相应版本的iso
  4. 后期如何维护,维护成本

docker-registry 相关的镜像

因为很多镜像是国外的镜像,所以需要翻墙下载,可以使用这个哥们的代理

1
2
3
4
5
gcr.mritd.me
#使用方法
resgistry_url="my_registry"
dockeer pull gcr.mritd.me/google_containers/heapster:v1.2.0
docker tag gcr.mritd.me/google_containers/heapster:v1.2.0 $resgistry_url/google_containers/heapster:v1.2.0

需要考虑2点:

  1. docker hub速度很慢,要设置docekr 加速器,可以用shell脚本设置下 docker配置项,没多大难度。
  2. docker pull 是否能使用python实现(并发),考虑实现成本,镜像最多也不过20个,所以还是用shell脚本实现。

repo 仓库搭建

repo仓库搭建要考虑考虑几点。

  1. 版本的对应,openshift要用到的rpm包大约300多M。所以维护的基本的openshift的repo源。
  2. 后期维护,例如如果要添加几个repo包,如何快速添加,同步repo包如何快速同步。
    一种思路就是把openshift 官方repo源同步下来,很大。大约1个多G
    第二种思路就是自己安装一遍,要所需要的rpm down下来制作。很小,比较麻烦。

自动智能

希望能做成,选好相应的版本。就能出来一个iso。所以各个模块功能必须分明。

制作repo 源

思路 使用docker容器化repo源,数据跟程序分离。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 设置yum repo
[root@control01 ~]# cat /etc/yum.repos.d/CentOS-OpenShift-Origin.repo
[centos-openshift-origin]
name=CentOS OpenShift Origin
baseurl=http://mirror.centos.org/centos/7/paas/x86_64/openshift-origin/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
## 查看设置yum repo
yum repolist
使用reposync同步yum源
reposync -r centos-openshift-origin -p /test/
## 使用createrepo 创建repo源
createrepo -p centos-openshift-origin/
## 如果我们添加了新包,需要更新yum 源
createrepo --update centos-openshift-origin/

编写yum repo dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
FROM centos:centos7.1.1503
MAINTAINER zhubingbing "1392607554@qq.com"
ENV TZ "Asia/Shanghai"
ENV TERM xterm
#RUN mkdir /etc/yum.repos.d/bak && cd /etc/yum.repos.d/ && mv /etc/yum.repos.d/*.repo bak/
#ADD cdrom.repo /etc/yum.repos.d/cdrom.repo
RUN yum install -y httpd vim-minimal
RUN yum clean all
#RUN mv /etc/yum.repos.d/bak/* /etc/yum.repos.d/
RUN sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1:80/' /etc/httpd/conf/httpd.conf
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
USER root
## build image
docker build -t yum-repo:v1 .
## 启动yum 源
注意: centos-openshift-origin 目录就是我们repo
docker run -it -p 8040:80 --privileged --name web-yum -d -v /root/zhu/rpm-repo/centos-openshift-origin:/var/www/html/centos-openshift-origin yum-repo:v1

制作docker仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 启动docker仓库
docker run -d -p 4200:5000 -v /opt/registry/:/var/lib/registry --restart=always --name registry registry:2
## 下载openshift 基础镜像
docker pull openshift/origin-docker-registry:v3.6.0
docker pull openshift/origin-sti-builder:v3.6.0
docker pull openshift/origin-haproxy-router:v3.6.0
docker pull openshift/origin-pod:v3.6.0
docker pull openshift/origin-deployer:v3.6.0
resgistry_url=192.168.199.200:4200
docker tag openshift/origin-docker-registry:v3.6.0 $resgistry_url/openshift/origin-docker-registry:v3.6.0
docker tag openshift/origin-sti-builder:v3.6.0 $resgistry_url/openshift/origin-sti-builder:v3.6.0
docker tag openshift/origin-haproxy-router:v3.6.0 $resgistry_url/openshift/origin-haproxy-router:v3.6.0
docker tag openshift/origin-pod:v3.6.0 $resgistry_url/openshift/origin-pod:v3.6.0
docker tag openshift/origin-deployer:v3.6.0 $resgistry_url/openshift/origin-deployer:v3.6.0
##依次push
docker push $resgistry_url/openshift/origin-docker-registry:v3.6.0
docker push $resgistry_url/openshift/origin-sti-builder:v3.6.0
docker push $resgistry_url/openshift/origin-haproxy-router:v3.6.0
docker push $resgistry_url/openshift/origin-pod:v3.6.0
docker push $resgistry_url/openshift/origin-deployer:v3.6.0

部署

坚持原创技术分享,您的支持将鼓励我继续创作!