文档:https://download.zhoufengjie.cn/document/os/linuxos/www.zhoufengjie.cn-openshift-origin-install-v1.0-20171225.pdf
1 前言
目前,origin是基于开源kubernetes做的非常好的管理docker的paas的平台;
1.1 环境说明
系统:CentOS 7.4;
1.2 什么是 openshift
openshift 是一个开源的容器应用平台
1.3 什么是 openshift origin
openshift origin 是用来支持 openshift 产品的一个上游社区项目,围绕 Docker 容器和 Kubernetes 集群技术,一套来进行应用生命周期管理的 DevOps 工具,它提供了一个完整的开源容器应用平台
2 origin搭建部署
安装PAAS管理平台(使用存储:glusterfs,安装:docker,origin)
2.1 安装origin的mirror
yum install centos-release-openshift-origin37 -y
2.2 安装基本包
systemctl stop firewalld
systemctl disable firewalld
sed -i ‘s/SELINUX\=enforcing/SELINUX\=disabled/g’ /etc/selinux/config
yum install vim git httpd-tools bind-utils bind bridge-utils iptables-services net-tools -y
yum install docker -y
#安装docker也可以使用:wget -qO- https://get.docker.com/ | sh
2.3 配置docker
编辑:/etc/sysconfig/docker-storage-setup
DEVS=/dev/sdm #对应做docker存的磁盘
VG=docker-vg
SETUP_LVM_THIN_POOL=yes
然后执行:
docker-storage-setup
设置docker:
vim /usr/lib/systemd/system/docker.service
在启动docker的后面添加 这个地址需要按照实际情况定义 后面可修改
–insecure-registry 172.30.0.0/16
启动docker:
systemctl start docker
systemctl enable docker
2.4 安装origin
yum install origin origin-docker-excluder origin-excluder -y
2.5 启动origin
nohup openshift start &
启动后,默认web地址为:https://ip地址:8443
默认用户密码:test/test
2.6 设置管理员
设置环境变量:
cd /home 【想把内容放在哪就到哪个目录】
export KUBECONFIG=”$(pwd)”/openshift.local.config/master/admin.kubeconfig
export CURL_CA_BUNDLE=”$(pwd)”/openshift.local.config/master/ca.crt
chmod +r “$(pwd)”/openshift.local.config/master/admin.kubeconfig
export REGISTRYCONFIG=”$(pwd)”/openshift.local.config/master/openshift-registry.kubeconfig
export ROUTERCONFIG=”$(pwd)”/openshift.local.config/master/openshift-router.kubeconfig
然后把环境变量放到profile里面;
cat >> /etc/profile << EOF
export KUBECONFIG=$(pwd)/openshift.local.config/master/admin.kubeconfig
export CURL_CA_BUNDLE=$(pwd)/openshift.local.config/master/ca.crt
chmod +r $(pwd)/openshift.local.config/master/admin.kubeconfig
export REGISTRYCONFIG=$(pwd)/openshift.local.config/master/openshift-registry.kubeconfig
export ROUTERCONFIG=$(pwd)/openshift.local.config/master/openshift-router.kubeconfig
EOF
设置openshift 管理员admin密码
htpasswd -c /root/users.htpasswd admin
给admin添加集群管理员权限
oadm policy add-cluster-role-to-user cluster-admin admin
2.7 使用
创建docker-registry 及 router 服务
oc login -u admin
oc project default
oc edit scc privileged #在最下面添加
– system:serviceaccount:default:registry
– system:serviceaccount:default:router
echo ‘{“kind”:”ServiceAccount”,”apiVersion”:”v1″,”metadata”:{“name”:”registry”}}’ | oc create -f –
echo ‘{“kind”:”ServiceAccount”,”apiVersion”:”v1″,”metadata”:{“name”:”router”}}’ | oc create -f –
oadm registry –service-account=registry –replicas=2
oadm router router-west –replicas=2 –service-account=router
2.8 查看登录
oc get svc #取得registry的地址
ip route add 172.30.0.0/16 via 172.17.0.1 dev docker0 #第一个为registry的网段 后面为docker0 网桥的地址
docker login -u admin -p $(oc whoami -t) 172.30.197.49:5000
3 自己搭建registry仓库
到docker.io比较慢,所以自己做registry仓库
3.1 Registry安装
yum install docker-registry -y
3.1.1 Registry原理
Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。
一次docker pull 发生的交互
1、 Client向Index请求,知道从哪里下载CentOS
2、 Index回复
3、 CentOS在RegistryA
4、 CentOS的Checksum,所有层的Token
5、 Client向Registry A请求, CentOS的所有层。Registry A负责存储CentOS,以及它所依赖的层、
6、 Regsitry A向Index发起请求,验证用户Token的合法性
7、 Index返回这次请求是否合法
8、 Client从Registry下载所有的层
9、 Registry从后端存储中获取实际的文件数据,返给Client
3.1.2 Registry配置
1.启动Registry容器
docker run -d -p 80:5000 –restart=always –name registry -v /data/storage/registry:/var/lib/registry registry:2
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/data/storage/registry目录挂载到该目录,即可实现将镜像保存到主机的/data/storage/registry目录了。运行docker ps看一下容器情况:
说明我们已经启动了Registry服务,打开浏览器输入http://127.0.0.1:80/v2,出现下面情况说明Registry运行正常。
2.客户机访问Registry
对于需要访问Registry仓库的客户机来说,首先需要修改/etc/sysconfig/docker的配置文件:添加 –insecure-registry 120.52.7.18:80
3.客户端向Registry存放镜像
首先,需要docker tag给需要上传的镜像文件打标。然后再从本地上传镜像到仓库。
做一个镜像,并推送上去:
docker commit -m=”A new test” –author=”Tyumen” 1d914094a219 tyumen/registry:v1
docker push tyumen/registry:v1
4.客户端向仓库Pull镜像
在另外一台主机上使用pull从120.52.7.18的仓库中把镜像给Pull下来
通过以上操作就可以看到我们已经Pull的镜像,然后可以运行此镜像,开始你的应用之旅。到此应该说Registry基本搭建完成,但是仍然不适合实际的使用。因为不方便管理和查看到上传的镜像和权限设置。接下来我们介绍一个带UI管理的仓库管理软件—【Portus】
3.2 Portus安装
Portus(by SUSE)是用于 Docker Registry API(v2)的开源前端和授权工具,最低要求注册表版本是 2.1。它可以作为授权服务器和用户界面,用于新一代的 Docker Registry。具有以下优点:
1.)安全:Portus 实现了最新的Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可 push/pull 镜像。
2.)轻松管理用户: 在 Portus 映射你的公司,可以定义任意数量的 Team,并从 Team 添加和移除用户。Team 有三种类型的用户:Viewers ,只能 pull 镜像;Contributors,可以 push/pull 镜像;Owners,类似 contributors,但可以从 team 添加或移除用户。
3.)搜索: Portus 提供你的私人注册表的内容的预览,同时有一个快速搜索镜像的功能。
4.)审计: 用户的所有相关事件都会被Portus自动记录,并可被管理员进行用户分析。
未完待续……