2019-08-08-template模板解读

什么是 template 及他的用途

template 是一些资源的组合,资源是指 openshift中 应用、存储、服务暴露、密钥,即deploymentconfig,pv/pvc,service,route,secret,imagestream,configmap等。 并可以将应用名、镜像名、数据库地址、密码、环境地址等可变参数通过页面发布时候传递进去。 即通过可视化页面实现了中间件、微服务、数据库等应用快速发布。可以理解为应用商店的一种。

这是发布时选择template的页面

openshift-template-web.png

例如,这是mariadb配置参数页面

openshift-template-mariadb.png

openshift 已经提供了一些开箱即用的template,包含了 jboss,openjdk,nginx,php,mysql,mongo,postgres,mariadb...(openshift企业版) 因为上面有些中间件是红帽的企业版,所以openshift社区版不包含(比如jboss,amq),template总数会少一些,不过这都没关系,看完这篇我们可以自己做哈。 这些template位于一个名称为openshift的project下。

以下通过几个使用template的场景,由简入难,演示如何创建及使用template,template内容解读。

  1. 通过已有docker镜像发布应用,包含deploymentconfig,service,route

  2. 制作基于nfs 的pv pvc持久化存储模板,通过模板发布pv pvc,并可以将他挂载到第一步发布的应用

  3. 通过openshift s2i,实现源码编译自动发布springlcoud微服务应用

  4. 将helm中应用的转化为template

场景一 通过已有docker镜像发布应用

已经制作好了应用镜像,通过openshift web 页面实现发布,并能够访问 如果你想做一个属于自己的template,建议基于现有模板来修改

获取template文件及内容解读

获取template文件,这是我写好的例子,以下通过这个栗子说明template的组成及用法

template 文件可以理解为三大块组成 1. object往上是这个模板的定义参数,比如名称,提示信息,注释等。 2. object 到 parameters 是自定义的资源,可以是deployment,service,configmap,secret,pv等,任何你想通过模板快速创建的资源。 并将其中可变参数摘出来,通过页面输入进去。 注意若变量是非字符串,如应用端口,副本数、base64,需使用双大括号。 object中的资源建议使用相同的标签。 3. parameters,需要动态灵活配置的参数,摘出来,通过页面配置,再传递到上面的各种资源中。 需要注意若value配置默认端口需双引号。

导入template

把他发布到 openshift peoject,此 project 下的 template 所有用户都具备访问权限。

通过 template 发布服务

在web页面选择 "Add to Projtct" -> "Select from Project" openshift-template-deploy-1.png

会出现选择 template 页面,选 openshift project,因为上一步我们把 template 导入到了这个 project 下。内容比较多,我们通过关键词 image 检索下,注意此处显示的名称是 metadata.annotations.openshift.io/display-name 而不是 metadata.name

openshift-template-deploy-2.png

这页显示的是 template 介绍信息,都是yaml文件中 metadata.annotations 部分的内容

openshift-template-deploy-3.png

发布服务,名字自己定义,镜像用自己仓库的或者公网的,这里换成httpd,注意下面端口也要改成相应的。

openshift-template-deploy-4.png

发布成功后,页面会显示 template yaml 文件中 message 部分定义的内容。

如果容器启动异常,日志显示权限原因报错,改下权限

访问测试

通过域名方式访问应用,测试场景下一般不会把域名解析去写入dns server。 我们可以通过修改本地hosts文件方式解析 首先查看 default project 下 router 应用的 ip

在本地 hosts 文件中,把应用域名 httpd.example.com 解析到router, 此处是192.168.1.182

openshift-template-deploy-5.png

删除资源

如果要删除已发布的所有资源,这就是资源要使用相同标签的原因。app-ex是发布的应用名

场景二 制作基于nfs 的pv pvc持久化存储模板

通过 template 模板发布pv pvc,并可以将他挂载到第一步发布的应用 在日常使用中,还是建议通过 storageclass 方式提供存储卷,那样更便捷,此处只为展示 template 的能力。

首先准备nfs server

在nfs server 上查看共享路径

openshift 导入template

使用template 创建基于nfs的持久卷

web页面,选"Add to Project" -> "Select from Project", 在openshift project下 检索 nfs 填写nfs server 地址,路径

openshift-template-deploy-nfs-1.png

在 storage 查看状态,Bound 表示pv pvc关联上了

openshift-template-deploy-nfs-2.png

把存储卷挂载到应用中

Application -> deployment, 选择场景一发布的应用app-ex,右上角 "Actions" -> "Add Storage"

openshift-template-deploy-nfs-3.png

挂载存储后容器会重建,完成后进入终端 df -h 确认挂载情况

openshift-template-deploy-nfs-4.png

场景一,二 完成,三四待续。

github地址为 https://github.com/cai11745/k8s-ocp-yaml/blob/master/openshift-docs/2019-08-08--how-to-write-openshift-template.md 完整版本会在github合并

Last updated