Openshift template的使用
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的使用的更多相关文章
- flask程序部署在openshift上的一些注意事项
https://www.openshift.com/blogs/how-to-install-and-configure-a-python-flask-dev-environment-deploy-t ...
- OpenShift实战(三):OpenShift持久化存储Redis
1.模板定义 修改OpenShift自带模板 [root@master1 pv]# oc edit template redis-persistent 添加如下: 2.创建PV 编辑redis pv ...
- openshift 容器云从入门到崩溃之五《部署应用》
1.配置部署模板 配置好用户权限之后就可以部署应用了oc常用的两种部署方式: Deploy Image方式 优点:这种方式是最简单的部署方式,你只需要有一个容器镜像就行了或者公开的docker hub ...
- 理解OpenShift(1):网络之 Router 和 Route
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- 理解OpenShift(4):用户及权限管理
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- jenkins openshift 持续集成
参数部分没有 不要照抄,只供参考 需求: CI利用confd+etcd生成配置文件 CI把git的COMMIT 传到openshift的buildconfigs #!/bin/bash echo ec ...
- zabbix 监控openshift pod状态
需求: pod中的容器重启一次则报警通知 pod非Runing 状态则报警 pod中的容器非true状态则报警 三个需求其实是有点重叠的 pod重启期间pod肯定会有非Running状态,只要有重启报 ...
- openshift 持续集成与部署 -- 构建部署流水线
Jenkins持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.j跟svn.git能无缝集成,也支持直接与知名源代码托管网站,比如github.bitbucket ...
- (转)添加Template(模板)并基于模板部署应用
通过Template,可以定义一个或多个需要部署的镜像,定义依赖的对象,定义可供用户输入的配置参数项. 以cakephp-mysql.json为例. # oc create -f https://ra ...
随机推荐
- 在 static table view 中增加date picker 并进行动态高度设定
http://blog.apoorvmote.com/how-to-pop-up-datepicker-inside-static-cells/
- java之基本数据类型与引用数据类型
基本数据类型 需要注意的是字符是基本数据类型,但是字符串不是基本数据类型. 引用数据类型 类.接口类型.数组类型.枚举类型.注解类型. (上面说的字符串String属于引用数据类型中“类”的范畴) 两 ...
- 9:django 表单
django自带表单系统,这个表单系统不仅可以定义属性名,还可以自己定义验证,更有自己自带的错误提示系统 这节我们仅仅粗略的来看一下django表单系统的入门运用(具体的实在太多东西,主要是我觉得有很 ...
- hdu 2768(建图,最大点独立集)
Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hive的窗口函数1
Hive中提供了越来越多的分析函数,用于完成负责的统计分析.抽时间将所有的分析窗口函数理一遍,将陆续发布.今天先看几个基础的,SUM.AVG.MIN.MAX.用于实现分组内所有和连续累积的统计. 1. ...
- chattr命令的用法
chattr (配置文件隐藏属性)[root@www ~]# chattr [+-=][ASacdistu] 文件或目录名称选项与参数:+ :添加某一个特殊参数,其他原本存在参数则不动.- :移除某一 ...
- centos7yum安装tomcat
执行安装命令 [root@localhost ~]# yum -y install tomcat 查询tomcat是否安装成功 [root@localhost ~]# rpm -q tomcat to ...
- 四十四 常用内建模块 struct
准确地讲,Python没有专门处理字节的数据类型.但由于str既是字符串,又可以表示字节,所以,字节数组=str.而在C语言中,我们可以很方便地用struct.union来处理字节,以及字节和int, ...
- OpenStack 镜像服务 Glance部署(七)
创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glance-Registr ...
- C# For Bot Framework
Bot Framework是一个聊天机器人的框架,背后是微软的SDK,它可以使用C#和Nodejs开发,今天我尝试用创建一个比较简单Bot 参考地址:https://docs.microsoft.co ...