1.template的定义

官方对template的定义是

A template describes a set of objects that can be parameterized and processed to produce a list of objects for creation by OKD. A template can be processed to create anything you have permission to create within a project, for example services, build configurations, and deployment configurations. A template may also define a set of labels to apply to every object defined in the template.

也就是Template是一组对象的集合,包括Service,BC,DC等,template可以针对里面定义的一组对象指定标签,便于批量操作。

2.template的使用

创建一个template

ericdeMacBook-Pro:template ericnie$ cat deployment-template.yaml
apiVersion: v1
kind: Template
metadata:
creationTimestamp: null
name: deployment-example # 模板配置部分
objects: # 资源配置部分
- apiVersion: v1
kind: ImageStream
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: deployment-example
name: deployment-example
spec:
lookupPolicy:
local: false
tags:
- annotations:
openshift.io/imported-from: s2itomcat:latest
from:
kind: DockerImage
name: s2itomcat:latest
generation: null
importPolicy: {}
name: latest
referencePolicy:
type: ""
status:
dockerImageRepository: ""
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: deployment-example
name: deployment-example
spec:
replicas:
selector:
app: deployment-example
deploymentconfig: deployment-example
strategy:
resources: {}
template:
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: deployment-example
deploymentconfig: deployment-example
spec:
containers:
- image: openshift/deployment-example:latest
name: deployment-example
ports:
- containerPort:
protocol: TCP
resources: {}
test: false
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- deployment-example
from:
kind: ImageStreamTag
name: s2itomcat:latest
type: ImageChange
status:
availableReplicas:
latestVersion:
observedGeneration:
replicas:
unavailableReplicas:
updatedReplicas:
- apiVersion: v1
kind: Service
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: deployment-example
name: deployment-example
spec:
ports:
- name: -tcp
port:
protocol: TCP
targetPort:
selector:
app: deployment-example
deploymentconfig: deployment-example
status:
loadBalancer: {}
ericdeMacBook-Pro:template ericnie$ oc process deployment-example | oc create -f -
imagestream "deployment-example" created
deploymentconfig "deployment-example" created
service "deployment-example" created

查看这些对象

ericdeMacBook-Pro:template ericnie$ oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
deployment-example config,image(s2itomcat:latest)
s2itomcat config,image(s2itomcat:latest)
ericdeMacBook-Pro:template ericnie$ oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
deployment-example ClusterIP 172.30.160.162 <none> /TCP 11m
s2itomcat ClusterIP 172.30.145.161 <none> /TCP 5d
ericdeMacBook-Pro:template ericnie$ oc get imagestream
NAME DOCKER REPO TAGS UPDATED
deployment-example 172.30.1.1:/s2i-tomcat/deployment-example latest
mytomcat 172.30.1.1:/s2i-tomcat/mytomcat latest days ago
s2itomcat 172.30.1.1:/s2i-tomcat/s2itomcat latest hours ago

在界面上看到这些对象已经创建

3.参数化

如果一个模版对应多个微服务,可以创建参数化模版并赋值。修改如下

ericdeMacBook-Pro:template ericnie$ cat deployment-template.yaml
apiVersion: v1
kind: Template
metadata:
creationTimestamp: null
name: deployment-example # 模板配置部分
objects: # 资源配置部分
- apiVersion: v1
kind: ImageStream
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: ${APP_NAME}
name: ${APP_NAME}
spec:
lookupPolicy:
local: false
tags:
- annotations:
openshift.io/imported-from: s2itomcat:latest
from:
kind: DockerImage
name: s2itomcat:latest
generation: null
importPolicy: {}
name: latest
referencePolicy:
type: ""
status:
dockerImageRepository: ""
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: ${APP_NAME}
name: ${APP_NAME}
spec:
replicas:
selector:
app: ${APP_NAME}
deploymentconfig: ${APP_NAME}
strategy:
resources: {}
template:
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: ${APP_NAME}
deploymentconfig: ${APP_NAME}
spec:
containers:
- image: s2itomcat:latest
name: ${APP_NAME}
ports:
- containerPort:
protocol: TCP
resources: {}
test: false
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- ${APP_NAME}
from:
kind: ImageStreamTag
name: s2itomcat:latest
type: ImageChange
status:
availableReplicas:
latestVersion:
observedGeneration:
replicas:
unavailableReplicas:
updatedReplicas:
- apiVersion: v1
kind: Service
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: ${APP_NAME}
name: ${APP_NAME}
spec:
ports:
- name: -tcp
port:
protocol: TCP
targetPort:
selector:
app: ${APP_NAME}
deploymentconfig: ${APP_NAME}
status:
loadBalancer: {}
parameters:
- name: APP_NAME
displayname: application name
value: myapp

创建

ericdeMacBook-Pro:template ericnie$ oc new-app deployment-template.yaml
--> Deploying template "s2i-tomcat/deployment-example" for "deployment-template.yaml" to project s2i-tomcat * With parameters:
* APP_NAME=myapp --> Creating resources ...
imagestream "myapp" created
deploymentconfig "myapp" created
service "myapp" created
--> Success
Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
'oc expose svc/myapp'
Run 'oc status' to view your app.

4.批量删除对象

ericdeMacBook-Pro:template ericnie$ oc delete all -l app=deployment-example
deploymentconfig "deployment-example" deleted
imagestream "deployment-example" deleted
route "deployment-example" deleted
pod "deployment-example-1-wmz26" deleted
service "deployment-example" deleted

5.导出现有应用到模版

ericdeMacBook-Pro:template ericnie$ oc export deploymentconfig,buildconfig,svc,route --as-template=mytomcat > mytomcat.yaml

3.11版本

oc get -o yaml --export deploymentconfig > openshift-tomcat.yaml
ericdeMacBook-Pro:template ericnie$ cat mytomcat.yaml
apiVersion: v1
kind: Template
metadata:
creationTimestamp: null
name: mytomcat
objects:
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftWebConsole
creationTimestamp: null
generation:
labels:
app: s2itomcat
name: s2itomcat
spec:
replicas:
selector:
deploymentconfig: s2itomcat
strategy:
activeDeadlineSeconds:
resources: {}
rollingParams:
intervalSeconds:
maxSurge: %
maxUnavailable: %
timeoutSeconds:
updatePeriodSeconds:
type: Rolling
template:
metadata:
creationTimestamp: null
labels:
app: s2itomcat
deploymentconfig: s2itomcat
spec:
containers:
- image: 172.30.1.1:/s2i-tomcat/s2itomcat@sha256:9c192795180367f2a689b1b395b4156e746fdc266c9b1249a97651b1caa002d6
imagePullPolicy: Always
name: s2itomcat
ports:
- containerPort:
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds:
test: false
triggers:
- imageChangeParams:
automatic: true
containerNames:
- s2itomcat
from:
kind: ImageStreamTag
name: s2itomcat:latest
namespace: s2i-tomcat
type: ImageChange
- type: ConfigChange
status:
availableReplicas:
latestVersion:
observedGeneration:
replicas:
unavailableReplicas:
updatedReplicas:
- apiVersion: v1
kind: BuildConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftWebConsole
creationTimestamp: null
labels:
app: s2itomcat
name: s2itomcat
spec:
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: s2itomcat:latest
postCommit: {}
resources: {}
runPolicy: Serial
source:
git:
ref: master
uri: https://github.com/ericnie2015/openshift-tomcat.git
type: Git
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: s2i-tomcat:latest
namespace: openshift
type: Source
triggers:
- imageChange: {}
type: ImageChange
- type: ConfigChange
- generic:
secret: 0e2a7f575472e635
type: Generic
- github:
secret: 2c06c9b430310ec1
type: GitHub
status:
lastVersion:
- apiVersion: v1
kind: Service
metadata:
annotations:
openshift.io/generated-by: OpenShiftWebConsole
creationTimestamp: null
labels:
app: s2itomcat
name: s2itomcat
spec:
ports:
- name: -tcp
port:
protocol: TCP
targetPort:
selector:
deploymentconfig: s2itomcat
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
- apiVersion: v1
kind: Route
metadata:
annotations:
openshift.io/generated-by: OpenShiftWebConsole
openshift.io/host.generated: "true"
creationTimestamp: null
labels:
app: s2itomcat
name: s2itomcat
spec:
host: s2itomcat-s2i-tomcat.192.168.99.100.nip.io
port:
targetPort: -tcp
to:
kind: Service
name: s2itomcat
weight:
wildcardPolicy: None
status:
ingress:
- conditions:
- lastTransitionTime: --26T13::16Z
status: "True"
type: Admitted
host: s2itomcat-s2i-tomcat.192.168.99.100.nip.io
routerName: router
wildcardPolicy: None

Openshift template的使用的更多相关文章

  1. flask程序部署在openshift上的一些注意事项

    https://www.openshift.com/blogs/how-to-install-and-configure-a-python-flask-dev-environment-deploy-t ...

  2. OpenShift实战(三):OpenShift持久化存储Redis

    1.模板定义 修改OpenShift自带模板 [root@master1 pv]# oc edit template redis-persistent 添加如下: 2.创建PV 编辑redis pv ...

  3. openshift 容器云从入门到崩溃之五《部署应用》

    1.配置部署模板 配置好用户权限之后就可以部署应用了oc常用的两种部署方式: Deploy Image方式 优点:这种方式是最简单的部署方式,你只需要有一个容器镜像就行了或者公开的docker hub ...

  4. 理解OpenShift(1):网络之 Router 和 Route

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  5. 理解OpenShift(4):用户及权限管理

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  6. jenkins openshift 持续集成

    参数部分没有 不要照抄,只供参考 需求: CI利用confd+etcd生成配置文件 CI把git的COMMIT 传到openshift的buildconfigs #!/bin/bash echo ec ...

  7. zabbix 监控openshift pod状态

    需求: pod中的容器重启一次则报警通知 pod非Runing 状态则报警 pod中的容器非true状态则报警 三个需求其实是有点重叠的 pod重启期间pod肯定会有非Running状态,只要有重启报 ...

  8. openshift 持续集成与部署 -- 构建部署流水线

    Jenkins持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.j跟svn.git能无缝集成,也支持直接与知名源代码托管网站,比如github.bitbucket ...

  9. (转)添加Template(模板)并基于模板部署应用

    通过Template,可以定义一个或多个需要部署的镜像,定义依赖的对象,定义可供用户输入的配置参数项. 以cakephp-mysql.json为例. # oc create -f https://ra ...

随机推荐

  1. Python——format()/str.format()函数

    格式化输出,除了类似于C语言的格式化输出外,还有str.format()方法,Python内建的format()函数,允许用户将待输出值以参数的形式,调用format()函数,在Python交互式sh ...

  2. 3.22. grep sed re

    1.整理正则表达式博客 re  http://www.cnblogs.com/oyoui/p/6599846.html 2.grep(正则表达式及字符处理) 1.显示出所有含有root的行: [roo ...

  3. 如何在SQL Server中的SELECT TOP 中使用变量

    语法   [ TOP (expression) [PERCENT] [ WITH TIES ] ] 注意:expression 是在一对圆括号内的,而之后又有如下的例子 在 TOP 中使用变量 以下示 ...

  4. 【JBPM4】判断节点decision 方法3 handler

    JPDL <?xml version="1.0" encoding="UTF-8"?> <process key="decision ...

  5. JavaScript性能优化【转载】

    你愿意为打开一个网页等待多长时间?我一秒也不愿意等.但是事实上大多数网站在响应速度方面都让人失望.现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性 ...

  6. 搭建openstack系统初始化(2)

    操作系统环境 :Centos 7.3 x64 1).安装需要的包 yum install wget vim chrony net-tools bash-completion -y 2)配置阿里elpl ...

  7. buntu 16.04上安装和配置Samba服务器

    https://www.linuxidc.com/Linux/2017-11/148194.htm

  8. 常用的smarty变量操作

    php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符.语法中使用"|"应用变量操作符,多个参数用":"??指簟?/DIV> capita ...

  9. Linux NFS服务器的简明配置6.8

    Linux NFS服务器的简明配置6.8   Linux NFS服务器的简明配置 一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的 ...

  10. 141. Linked List Cycle【Easy】【判断链表是否存在环】

    Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...