=======================
OpenShift Origin 与OPENSHIFT CONTAINER PLATFORM对比
| 参考链接:http://t.cn/RlPRzS5 |
|---|
| ./media/image1.png |
启动OpenShift Origin
准备工作
- 虚拟机配置如下:
| CPU | 内存 | 磁盘 | 系统 | 安装模式 |
|---|---|---|---|---|
| 1核 | 2GB | 20GB | Centos7.2 | Minimal |
- 操作系统配置:
| #配置固定IP |
|---|
| #试验环境关闭防火墙 |
| #配置主机名 |
| hostnamectl set-hostname master.example.com |
| #修改hosts |
| Vi /etc/hosts |
| #添加主机名记录 |
| 172.16.142.132 master.example.com |
安装docker
| #Yum安装 |
|---|
| yum install docker -y |
| #配置启动服务 |
| systemctl enable docker && systemctl start docker |
| #修改docker镜像站 |
| vim /etc/sysconfig/docker |
| OPTIONS=’–selinux-enabled –log-driver=journald –signature-verification=false –registry-mirror=https://docker.mirrors.ustc.edu.cn’ |
| systemctl restart docker |
下载OpenShift Origin安装包
| #书中使用版本为1.3.0,目前最新为3.6,可在github release中下载,URL: https://github.com/OpenShift/origin/releases |
|---|
| cd /opt |
| wget https://github.com/OpenShift/origin/releases/download/v1.3.0/OpenShift-origin-server-v1.3.0-3ab7af3d097b57f933eccef684a714f2368804e7-linux-64bit.tar.gz |
| #解压 |
| tar zxvf https://github.com/OpenShift/origin/releases/download/v1.3.0/OpenShift-origin-server-v1.3.0-3ab7af3d097b57f933eccef684a714f2368804e7-linux-64bit.tar.gz |
| #建软连接 |
| ln -s OpenShift-origin-server-v1.3.0-3ab7af3d097b57f933eccef684a714f2368804e7-linux-64bit /opt/OpenShift |
| ./media/image2.png |
| #添加环境变量 |
| vim /etc/profile PATH=\$PATH:/opt/OpenShift/ |
| source /etc/profile |
验证启动
| #查看版本 |
|---|
| openshift version |
| ./media/image3.png |
| #启动 |
| cd /opt/openshift |
| openshift start & |
| #注: #“OpenShift start”命令启动是为了可以在控制台看到日志输出; #正式环境官方推荐使用“oc cluster up”方式启动。 |
| #当日志停止输出表示启动完成 |
| #浏览器访问https://master.example.com:8443 |
| ./media/image4.png |
| 默认账号密码dev:dev |
简单使用OpenShift
运行容器应用
- 创建项目
| #登陆后的初始页,点击“New Project” |
|---|
| ./media/image5.png |
| #填入相应信息 |
| ./media/image6.png |
- 部署Docker镜像
| #通过“Deploy Image”部署 |
|---|
| ./media/image7.png |
| ./media/image8.png |
| ./media/image9.png |
| #启动成功 |
| ./media/image10.png |
- 访问容器应用
| #确认应用IP |
|---|
| ./media/image11.png |
| #终端访问测试 |
| curl 172.30.248.254:8080 |
| ./media/image12.png |
使用命令行工具
| #命令行登陆 |
|---|
| oc login -u dev https://172.16.142.132:8443 |
| ./media/image13.png |
| #创建project |
| oc new-project hello-world-oc |
| ./media/image14.png |
| #部署应用 |
| oc new-app OpenShift/hello-world |
| #查看状态 |
| oc get pod |
集群管理员登陆
- 配置证书
| 默认集群管理员是system:admin,没有密码,只能通过证书登陆 |
|---|
| mkdir -p ~/.kube |
| cp /opt/OpenShift/OpenShift.local.config/master/admin.kubeconfig ~/.kube/config |
| #重复覆盖 |
| ./media/image15.png |
- 命令登陆
| oc login -u system:admin |
|---|
| ./media/image16.png oc whoami |
| ./media/image17.png |
| oc get node |
| ./media/image18.png |
添加Router
| #Router是OpenShift集群中的一个重要组件,它是外部访问集群内容器应用的入口。 #集群外部的请求都会到达Router,由Router分发到具体的容器中。 | ||
|---|---|---|
| # Router组件需要读取集群的信息,所以它需要关联一个系统账号Service Account,并为这个账号授权。 | ||
| oc login –u system:admin | ||
| oc project default | ||
| ./media/image19.png | ||
| #配置权限策略 | ||
| oadm policy add-scc-to-user privileged system:serviceaccount:default:router | ||
| #创建Router #在实际生产时,为了达到高可用的效果,可以通过设置–replicas创建多个Router实例防止单点失效。 | ||
| oadm router router –replicas=1 –service-account=router | ||
| ./media/image20.png | ||
| #查看Router状态 | ||
| oc get pod –n default | ||
| ss -ltn\ | egrep -w ‘80\ | 443’ |
| ./media/image21.png | ||
| #Router就是一个运行在容器里的Haproxy #用户可以创建route对象,称为route规则,一个route规则会与一个service相关联,并且绑定一个域名。 #route规则会被Router加载。当用户通过指定的域名访问应用时,域名会被解析并指向Router所在的计算节点上。Router获取这个请求后,会根据route规则定义转发给与这个域名对应的service后端相关联的Pod容器实例。 | ||
| #Router负责将集群外的请求转发到集群的容器。 | ||
| #Service负责将集群内的请求转发到指定的容器。 | ||
| #一个对外,一个对内。 |
添加Registry
- 这里的Registry是部署集群内部的Docker镜像仓库。从功能上来说,它与其他诸如DockerHub没有本质上的区别,只是这个内部镜像仓库会存储由Source
to
Image(S2I)创建的镜像。S2I的工作是辅助将应用的源代码转换成可以部署的Docker镜像。
| 一个典型的S2I流程包括如下: |
|---|
| 用户输入源代码仓库的地址。 |
用户选择S2I构建的基础镜像(Builder镜像)。OpenShift提供了多种编程语言的Builder镜像,用户也可以定制自己的Builder镜像,并发布到服务目录中。
系统或用户触发S2I构建。OpenShift将实例化S2I构建执行器。
S2I构建执行器将从用户指定的代码仓库下载源代码。
S2I构建执行器实例化Builder镜像,并将代码注入Builder镜像中。
Builder镜像将根据预定义的逻辑执行源代码的编译、构建并完成部署。
S2I构建执行器将完成操作的Builder镜像并生成新的Docker镜像。
S2I构建执行器将新的镜像推送到OpenShift内部的镜像仓库中。
S2I构建执行器更新该次构建相关的Image Stream信息。
S2I还可以接受Dockerfile以及二进制文件作为构建的输入。用户甚至可以完全自定义构建逻辑。
- 开始添加
| #以管理员登陆,并切换到default Project |
|---|
| oc login -u system:admin |
| oc project default |
| #部署Registry |
| oadm registry –config=/opt/OpenShift/OpenShift.local.config/master/admin.kubeconfig –service-account=registry |
| ./media/image22.png |
| #查看状态 |
| oc get pod -n default |
| ./media/image23.png |
- 添加非HTTPS验证
| #这里部署的Registry没有启用Https,所以需要修改主机上Docker的配置,让Docker能以非Https的方式连接到Registry。 |
|---|
| vi /etc/sysconfig/docker |
| OPTIONS变量追加” –insecure-registry=172.30.0.0/16” |
| #172.30.0.0/16是在master-config.yaml里定义的服务网络的默认值,如果需要修改,则master-config.yaml和/etc/sysconfig/docker需要一致修改。 |
| ./media/image24.png |
| #重启Docker |
| systemctl restart docker |
添加Image Stream
| #Image Stream是一组镜像的集合,可以在一个Image Stream中定义一些名称及标签(tag),并定义这些名字及标签指向的具体镜像。 #使用Image Stream的目的是方便地将一组相关联的镜像进行整合管理和使用。 #OpenShift默认为用户定义了一系列开箱即用的Image Stream。 | |
|---|---|
| #以管理员登陆,并切换到OpenShift Project #OpenShift是一个特殊的项目,在这个项目下创建的所有Image Stream及Template对集群内所有的用户和项目可见。 | |
| oc login -u system:admin | |
| oc project openshift | |
| #导入Image Stream | |
| curl -k https://raw.githubusercontent.com/OpenShift/origin/v1.3.0/examples/image-streams/image-streams-centos7.json\ | oc create -f - -n OpenShift |
| ./media/image25.png | |
| #查看Image Stream对象 | |
| oc get is -n openshift | |
| ./media/image26.png | |
| #web console验证 | |
| #登录web console,重新建立工程,可以在界面上看到导入Image Stream之后的可用镜像列表 | |
| ./media/image27.png |
添加Template
| #为了满足用户对复杂应用部署的需求,提供应用部署的效率,OpenShift引入了应用部署模板(Template)的概念。 #通过Template,可以定义一个或多个需要部署的镜像,定义依赖的对象,定义可供用户输入的配置参数项。 |
|---|
| #以管理员登录,并切换到OpenShift工程。 |
| oc login -u system:admin |
| oc project openshift |
| #以cakephp-mysql模版为例 |
| oc create -f https://raw.githubusercontent.com/OpenShift/origin/v1.3.0/examples/quickstarts/cakephp-mysql.json -n openshift |
| #https://github.com/OpenShift/origin/tree/release-1.3/examples/quickstarts下有官方提供的一系列模版可用 #最新3.6版本:https://github.com/OpenShift/origin/tree/release-3.6/examples/quickstarts |
| ./media/image28.png |
| #查看模版信息 |
| oc get template -n openshift |
| ./media/image29.png |
| #查看模版json信息 |
| oc get template cakephp-mysql-example -o json -n openshift |
| #web console验证 |
| ./media/image30.png |
模版部署应用
| #新建Project |
|---|
| ./media/image31.png |
| #过滤cake,选中cakephp-mysql-example模版 |
| ./media/image32.png |
| #指定主机名 |
| #本地修改hosts #172.16.142.132 php.apps.example.com |
| ./media/image33.png |
| #创建 |
| ./media/image34.png |
| #部署完成页面 |
| ./media/image35.png |
| #单机”Continue to overview” |
| #跳转到项目的概览页面。Openshif会在后台创建相应的对象,并下载相关的镜像。 #由于CakePHP应用涉及一个镜像构建的过程,即Source to Image,所以构建速度较慢。 |
| ./media/image36.png |
| #由于网络原因,这里从github拉代码失败了 |
| ./media/image37.png |
| ./media/image38.png |
应用的构建与部署
JAVA应用容器化
执行容器化的环境为Centos7.2
| #安装git和maven | |
|---|---|
| yum install git maven -y | |
| #下载源码 | |
| cd /opt/ | |
| git clone https://github.com/nichochen/mybank-demo-maven.git | |
| #编译及构建应用 | |
| cd mybank-demo-maven/ | |
| mvn package | |
| ./media/image39.png | |
| #构建完毕。会在target目录下生成一个WAR包ROOT.war | |
| ./media/image40.png | |
| #选择Tomcat7官方镜像pull到本地 | |
| docker pull tomcat:7.0.70-jre7-alpine | |
| #编写Dockerfile,把构建好的应用部署包拷贝到发布目录 | |
| cat Docekrfile FROM tomcat:7.0.70-jre7-alpine ADD ./target/ROOT.war /usr/local/tomcat/webapps/mybank.war | |
| ./media/image41.png | |
| #执行Docker Build构建镜像 | |
| docker build -t mybank-tomcat . | |
| ./media/image42.png | |
| #查看生成的新镜像 | |
| docker images \ | grep mybank-tomcat |
| ./media/image43.png | |
| #测试run镜像 | |
| docker run -it –rm -p 8080:8080 mybank-tomcat | |
| #访问IP:8080即可看到访问页面 | |
| #推送镜像到私有仓库 | |
| #打tag | |
| docker tag mybank-tomcat:latest registry.your-registry.com/mybank-tomcat:latest | |
| #推送 | |
| docker push registry.your-registry.com/mybank-tomcat:latest |
OpenShift的构建与部署
2.1. 快速构建部署一个应用
| #web console创建一个应用 | |
|---|---|
| ./media/image44.png | |
| #选择“wildfly:10”的Builder镜像 | |
| ./media/image45.png | |
| #输入示例项目代码地址:https://github.com/nichochen/mybank-demo-maven | |
| ./media/image46.png | |
| ./media/image47.png | |
| #如果构建日志报错,尝试手动先pull需要的镜像 #docker pull OpenShift/wildfly-100-centos7 | |
| #日中可以看到构建的过程 | |
| ./media/image48.png | |
| #构建到最后可以看到是将生成的镜像推送到内部的镜像仓库中(Registry) | |
| ./media/image49.png | |
| #完成状态 | |
| ./media/image50.png | |
| #查看本地Docker镜像列表,可以看到mybank镜像 | |
| docker images \ | grep mybank |
| ./media/image51.png | |
| #查看应用状态 | |
| oc get pod -n mybank | |
| ./media/image52.png |
2.2. 镜像构建介绍
- Build Config
| #在上一个实例中,单击create后,OpenShift会创建名为“Build Config”的对象。 |
|---|
| #查询创建的Build Config |
| oc get bc |
| ./media/image53.png |
| #查询bc中的具体配置信息 |
| oc get bc mybank -o yaml |
| ./media/image54.png |
| #红框中标示出bc的重要内容 #定义构建输出到了一个mybank:latest的Image Stream #源代码仓库地址 #前面制定的Builder镜像信息,没有指向某个实际的镜像,而是指向了一个Image Stream(用Image Stream的概念来管理一组镜像的集合,定义多个镜像名称和Tag,再指向实际的Docker镜像), |
| #查看定义的刚生成名为mybank的Image Stream |
| oc get is mybank |
| ./media/image55.png |
| #查看详细信息 #该Image Stream实际指向了OpenShift/wildfly-100-centos7\@sha256:968b2cb9f11c347fbaa6830d33386e5d31b283bdf0060b4cff865e14f5064848 |
| oc describe is mybank |
- Build
| #Build Config只是静态的配置信息,OpenShift根据这个配置信息可以触发多次实际构建实例,构建的实例称为Build。 #一个Build Config可以被多次触发,生成多个Build |
|---|
| #查看mybank的build构建记录 |
| oc get build |
| ./media/image56.png |
| #查看build构建详细信息,这里的信息与web console下看到的日志信息相同 |
| oc log build/mybank-1 |
| #可以通过之前的Build Config再执行一个新的Build构建 |
| oc start-build mybank |
| oc get build |
| ./media/image57.png |
| #查看新的构建状态 |
| oc logs build/mybank-2 |
2.3. 镜像部署介绍
- Deployment Config
| #当前文的Build构建完成,就是S2I流程完成后,生成的应用镜像被推送到内部的镜像仓库,同时更新相关的Image Stream,之后OpenShift就会触发一次部署,部署也有配置定义对象:Deployment Config。DC描述了镜像部署的参数和要求 |
|---|
| #查看Deployment Config列表 |
| oc get dc |
| ./media/image58.png |
| #查看dc详细定义 |
| oc get dc mybank -o yaml |
| #在Deployment Config中,可以定义容器运行的细节配置 ,如容器的启动命令,容器可用的CPU和内存配置等等。 |
- Deploy
| #每个DC可以被多次触发,每一次触发称为一个Deploy #每一次Deploy都会生成一个Replication Controller,用以监控容器的状态,RC实际是kubernetes中的一个组件,其负责监控容器的实际数量 |
|---|
| #查看Replication Controller |
| oc get rc |
| ./media/image59.png |
2.4. 服务的连通性介绍(Service & Route)
- Service
| #在部署应用时,OpenShift会自动生成DC对应的Service |
|---|
| oc get svc |
| oc describe svc mybank |
| ./media/image60.png |
- Route
| #基于Service,OpenShift同时也自动创建了对应的Route |
|---|
| oc get route |
| oc describe route mybank |
| ./media/image61.png |
| #修改指定域名 |
| oc edit route |
弹性伸缩
- Replication Controller
| #正常情况下,每一个部署的应用的容器实例数量在其Deployment Config中定义,OpenShift会为每次的部署实例化一个RC(可以不定义RC) |
|---|
| #查看当前mybank应用活动实例数为1 |
| oc get pod |
| ./media/image62.png |
- 扩展容器实例
| #通过RC,可以调整实例存着的数量 |
|---|
| oc scale dc mybank –replicas=2 |
| ./media/image63.png |
| #可以看到pod变为2个,rc中的数量也已经被更新为2 |
- 状态自服务
| #删除运行中的pod,测试rc恢复pod |
|---|
| oc delete pod mybank-1-5ek1w |
| oc get pod |
| ./media/image64.png |
| #可以看到其中一个pod被删除的瞬间,一个新的pod同时被创建了 |
| #RC的作用就是监控容器状态,并始终保持正常运行的pod数量 |
应用更新发布
- 触发更新构建
| #Build Config信息中可以看到定义了两个WebHook触发器 #Generic WebHook #GitHub WebHook |
|---|
| oc get bc mybank -o yaml |
| ./media/image65.png |
| #在web console中可以看到实际的调用地址 |
| ./media/image66.png |
| # Generic WebHook使用,只需向调用地址发送POST请求即可触发 |
| curl -k -X POST https://172.16.142.132:8443/oapi/v1/namespaces/mybank/buildconfigs/mybank/webhooks/a62289d1f901ea32/generic |
| ./media/image67.png |
| ./media/image68.png |
| #post请求发送到OpenShift之后,一个新的build就产生并开始执行 |
| #GitHub WebHook需要用户登陆到GitHub |
- 更新部署
| #构建结束后,更新部署被触发,OpenShift有Rolling(滚动更新)和Recreate(重新创建)两种,默认是Rolling |
|---|
| #更新策略在Deployment Config中定义 |
| oc get dc mybank -o yaml |
| ./media/image69.png |
持续集成与部署
部署Jenkins服务
OpenShift提供了集成OpenShift插件的Jenkins容器镜像和部署模版
默认提供两个Jenkins部署模版:Jenkins-ephemeral(测试验证用)和jenkins-persistent(持久化支持)
| #以dev用户登陆 |
|---|
| oc login -u dev |
| #创建名为ci的新项目用来部署jenkins |
| oc new-project ci |
| ./media/image70.png |
| #下载并导入Jenkins模版Jenkins-ephemeral |
| oc create -f https://raw.githubusercontent.com/openshift/origin/v1.3.0/examples/jenkins/jenkins-ephemeral-template.json |
| ./media/image71.png |
| oc get template |
| ./media/image72.png |
| #为默认的Service Account用户添加权限,使Jenkins容器有足够的权限操作项目的配置及执行部署 |
| oc policy add-role-to-user edit -z default |
| #通过Jenkins模版部署Jenkins服务,指定默认管理员密码为123\@abcd |
| oc new-app –template=jenkins-ephemeral –param=JENKINS_PASSWORD=123\@abcd |
| ./media/image73.png |
| #时间稍长,应为需要联网下载jenkins镜像 #查看服务状态 |
| oc get pod |
| ./media/image74.png |
| #Jenkins模版中定义了Route,通过指定的主机名(配好hosts,手动添加解析将jenkins-ci.router.default.svc.cluster.local指向Router服务所在的IP地址),便可以访问Jenkins服务 |
| oc get route |
| ./media/image75.png |
| #访问Jenkins服务 #https://jenkins-ci.router.default.svc.cluster.local/ #admin:123\@abcd |
| ./media/image76.png |
| ./media/image77.png |
触发项目构建
- Jenkins部署好了之后,就可以在jenkins上出发mybank的S2I构建
| #为jenkins授权,可以在mybank项目中执行操作 |
|---|
| oc policy add-role-to-user edit system:serviceaccount:ci:jenkins -n mybank |
| #创建Jenkins项目,Jenkins界面操作 |
| ./media/image78.png |
| ./media/image79.png |
| ./media/image80.png |
| ./media/image81.png |
- 手动触发构建
| #Jenkins控制台首页 |
|---|
| ./media/image82.png |
| #查看构建输出 |
| ./media/image83.png |
应用数据持久化
持久化镜像仓库
- 检查挂载点
| oc login -u system:admin |
|---|
| oc project default |
| oc get pod |
| ./media/image84.png |
| #通过oc volume查看Registry组件的DC关于Volume的定义,创建了一个Volume Mounts对象registry-storage,这个挂载点指向了/registry目录 #我们要做的就是给registry-storage这个挂载点挂上一个持久化后端 |
| oc get dc |
| oc volumes dc/docker-registry –all |
| ./media/image85.png |
- 备份数据
| #当前Registry容器内的/registry目录下已有很多镜像相关的文件 |
|---|
| oc get po |
| oc rsh docker-registry-1-akri7 ‘du’ ‘-sh’ /registry |
| ./media/image86.png |
| #需要先备份这些文件,通过ocrsync命令同步到宿主机上 |
| mkdir /root/backup cd /root/backup |
| oc rsync docker-registry-1-akri7:/registry . |
| ./media/image87.png |
- 创建存储
| #选用NFS作为后端存储,生产环境可使用GlusterFS,Ceph |
|---|
| #创建一个NFS共享目录 |
| mkdir -p /exports/pv0001 yum -y install nfs-utils rpcbind chown nfsnobody:nfsnobody /exports/ -R echo “/exports/pv0001 *(rw,sync,all_squash)” >> /etc/exports systemctl start rpcbind exportfs -r systemctl start nfs-server showmount -e 127.0.0.1 |
| setenforce 0 |
| getenforce |
| #测试挂载 |
| [root\@master ~]# mount 172.16.142.132:exports/pv0001 /mnt/ [root\@master ~]# [root\@master ~]# [root\@master ~]# touch /mnt/test [root\@master ~]# ls /mnt/ test [root\@master ~]# rm -rf /mnt/test [root\@master ~]# umount /mnt/ |
- 创建持久化卷
| #创建pv.json文件 |
|---|
| [root\@master ~]# more pv.json { “apiVersion”: “v1”, “kind”: “PersistentVolume”, “metadata”: { “name”: “pv0001” }, “spec”: { “capacity”: { “storage”: “5Gi” }, “accessModes”: [ “ReadWriteOnce” ], “nfs”: { “path”: “/exports/pv0001”, “server”: “172.16.142.132” }, “persistentVolumeReclaimPolicy”: “Retain” } } |
| oc create -f pv.json |
| oc get pv |
| ./media/image88.png |
- 创建持久化卷请求
| #创建pvc.json文件 |
|---|
| [root\@master ~]# more pvc.json { “apiVersion”: “v1”, “kind”: “PersistentVolumeClaim”, “metadata”: { “name”: “docker-registry-claim” }, “spec”: { “accessModes”: [ “ReadWriteOnce” ], “resources”: { “requests”: { “storage”: “3Gi” } } } } |
| oc create -f pvc.json |
| oc get pvc |
| oc get pv |
| ./media/image89.png |
- 关联持久化卷请求
| #将备份的文件恢复到创建的nfs目录中 |
|---|
| mv /root/backup/registry/* /exports/pv0001/ |
| chown nfsnobody:nfsnobody /exports/ -R |
| #测试删除Registry容器,RC将会重新创建它 |
| oc get pod |
| oc delete pod docker-registry-1-akri7 |
| ./media/image90.png |
| #容器启动后,再次检查/registry目录,发现数据消失,应为之前并没有做持久化 |
| oc rsh docker-registry-1-fqtfp ‘du’ ‘-sh’ /registry |
| ./media/image91.png |
| #为Registry的容器添加持久化卷请求,docker-registry-claim,并与挂载点registry-storage关联 |
| oc volume dc/docker-registry –add –name=registry-storage -t pvc –claim-name=docker-registry-claim –overwrite |
| #DC被修改后,Openshift会创建新的容器实例 |
| #再次检查容器的/registry目录,发现目录数据恢复了 |
| oc volume dc/docker-registry –add –name=registry-storage -t pvc –claim-name=docker-registry-claim –overwrite |
| oc get pod |
| oc rsh docker-registry-2-f36ot ‘du’ ‘-sh’ /registry |
| ./media/image92.png |
监控与日志管理
容器集群数据采集
容器集群日志管理
使用开源方案EFK:Elasticsearch,Fluentd,Kibana
Fluentd:将以容器方式运行在集群的各个节点上。读取宿主机上的/var/log/message及/var/lib/docker目录下的系统及容器日志信息,并对信息进行格式化成JSON格式,最好发送给Elasticsearch
Elasticsearch:收到日志信息后,存储信息并建立索引
Kibana:提供图形界面用用户检索分析Elasticsearch中的日志
AuthProxy:为Kibana实现身份验证,与Openshift Web实现单点登陆
Curator:管理和优化Elasticsearch索引
创建部署模版
| #管理员身份登陆 |
|---|
| oc login –u system:admin |
| #下载部署模版并解压 |
| wget https://github.com/openshift/origin-aggregated-logging/archive/v1.3.0.tar.gz |
| tar zxvf v1.3.0.tar.gz |
| #导入日志部署模版 |
| oc create -n openshift -f origin-aggregated-logging-1.3.0/deployer/deployer.yaml |
- 配置Service Account
| #新建项目 |
|---|
| oadm new-project logging –node-selector=”” |
| oc project logging |
| #创建应用部署的Service Account账号 |
| oc new-app logging-deployer-account-template |
| #配置服务授权 |
| oadm policy add-cluster-role-to-user oauth-editor \ system:serviceaccount:logging:logging-deployer |
| oadm policy add-scc-to-user privileged \ system:serviceaccount:logging:aggregated-logging-fluentd |
| oadm policy add-cluster-role-to-user cluster-reader \ system:serviceaccount:logging:aggregated-logging-fluentd |
- 配置证书
| #创建应用组件使用的证书,并创建Secret对象loging-deployer存储对应的证书。改Secret对象会被部署引用 |
|---|
| oadm ca create-server-cert \ –signer-cert=/opt/openshift/openshift.local.config/master/ca.crt \ –signer-key=/opt/openshift/openshift.local.config/master/ca.key \ –signer-serial=/opt/openshift/openshift.local.config/master/ca.serial.txt \ –hostnames=’kibana.apps.example.com’ \ –cert=/etc/opt/openshift/openshift.local.config/master/kibana.crt \ –key=/etc//opt/openshift/openshift.local.config/master/kibana.key |
| oc create secret generic logging-deployer \ –from-file kibana.crt=/etc/opt/openshift/openshift.local.config/master/kibana.crt \ –from-file kibana.key=/etc/opt/openshift/openshift.local.config/master/kibana.key |
| ./media/image93.png |
| ./media/image94.png |
- 部署日志组件模版
| #设置集群部署参数,创建一个Config Map对象logging-deployer为日志组件的部署设定参数 #参数指定Kinbana域名,Openshift集群Master地址,Elasticsearch的实例数及使用的内存大小 |
|---|
| oc create configmap logging-deployer \ –from-literal kibana-hostname=kibana.apps.example.com \ –from-literal public-master-url=https://master.example.com:8443 \ –from-literal es-cluster-size=1 \ –from-literal es-instance-ram=1G |
| ./media/image95.png |
| #通过模版部署日志组件 |
| #网络原因,提前下好所需镜像 |
| for i in openshift/origin-logging-curator:v1.3.0 \ openshift/origin-logging-fluentd:v1.3.0 \ openshift/origin-logging-auth-proxy:v1.3.0 \ openshift/origin-logging-deployment:v1.3.0 \ openshift/origin-logging-elasticsearch:v1.3.0 \ openshift/origin-logging-kibana:v1.3.0 ; do docker pull \$i; done |
| oc new-app logging-deployer-template \ –param IMAGE_VERSION=v1.3.0 \ –param IMAGE_PREFIX=openshift/origin- \ –param MODE=install |