Skip to content

xiaoping378/openshift-deploy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Join the chat at https://gitter.im/openshift/openshift-ansible

OpenShift 离线安装

为什么非要离线安装:

  • 节点网络环境不允许
  • 加速部署,方便调试

本项目主要实现离线安装,且包含下面的特性:

  • 启用master-HA
  • 指明多网卡时,默认内网通信
  • docker默认使用overlayFS
  • 修改上限,每个node最多可运行1000+个pod
  • 默认开启多租户SDN网络(project间强隔离)
  • 默认安装ceph,gluster,nfs共享存储的依赖组件
  • 启用http-auth认证,内置developer和tester用户

实现离线安装

基于openshift-ansible项目的分支openshift-ansible-3.4.17-1来搞的,主要改了三个原文件实现的离线部署

# git diff --stat HEAD HEAD^
inventory/byo/hosts.origin.example                                          | 61 +++++++++++++++----------------------
roles/openshift_facts/library/openshift_facts.py                            |  2 +-
.../files/origin/repos/openshift-ansible-centos-paas-sig.repo               | 48 ++++++++++++++---------------
3 files changed, 49 insertions(+), 62 deletions(-)

其中第二个文件如果不搞容器化的离线安装,没必要改。

一开始想着容器化安装,就可以实现离线安装了, 结果容器化+HA搞完后,发现即使有私有镜像仓,还是需要外网:

  • node上需要一些ansible的python依赖
  • LB节点上需要haproxy的安装

所以目前推荐rpm离线安装

自建yum repos

  • 找一台可联接外网的centos, clone此项目

    git clone --depth=1 https://github.com/xiaoping378/openshift-deploy.git
    cd openshift-deploy
    
  • 准备远程yum信息

    • 复制源码里的签名文件
    cp roles/openshift_repos/files/origin/gpg_keys/openshift-ansible-CentOS-SIG-PaaS /etc/pki/rpm-gpg/
    
    • 备份原yum信息并替换
    mv /etc/yum.repos.d /etc/yum.repod.d~
    mv offline/yum.repos.d /etc
    
  • 执行下面命令,会自动同步下载所需yum源,并启动webserver

    mkdir repos && cd repos
    yum install -y yum-utils createrepo
    
    # 必须要导入这个,不然无法同步下载origin的repo仓
    rpm --import /etc/pki/rpm-gpg/openshift-ansible-CentOS-SIG-PaaS
    
    # 批量下载
    for i in base centos-openshift-origin extras updates then; do reposync --gpgcheck -l --repoid=$i; done
    for i in base centos-openshift-origin extras updates then;  do cd $i && createrepo -v `pwd` && cd ../; done
    
    #启动webserver,以供其他节点使用
    python -m SimpleHTTPServer
    

开始安装

  • 源码文件inventory/byo/hosts.origin.example, 是我写好的例子

    • 自行修改成自己环境里的nodeIP
  • 在各node上加入离线yum仓信息

    注意修改createRepo.sh脚本内容,主要是更换自己环境里webserver的IP

    ansible -i ./inventory/byo/hosts.origin.example  all -m copy -a 'src="/home/xxp/Github/openshift-deploy/offline/createRepo.sh" dest="/root/createRepo.sh"'
    ansible -i ./inventory/byo/hosts.origin.example all -m shell -a 'bash /root/createRepo.sh'
    
  • 开装!

ansible-playbook -i ./inventory/byo/hosts.origin.example  playbooks/byo/config.yml

说明

  • 默认会开启ntp同步,如果不需要的,自行关闭 openshift_clock_enabled=false
  • v1.4.1里默认部署后,日志里可能会每10秒打印“conversion.go:133] failed to handle multiple devices for container. Skipping Filesystem stats”,这个是上游的bug,是cavidor的bug,没什么影响。latest已经修复,实在闲烦人的话,可以loglevel再调低到1.
  • 后期要实践离线环境下,如何平滑升级openshift平台, 1.4->1.5.
  • 更多openshift的实践,可参考blog

About

离线生产级部署openshift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 88.2%
  • Shell 10.2%
  • Other 1.6%