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 ...
随机推荐
- [New Learn]被嫌弃的app的一生
1.简介 为什么叫被嫌弃的app的一生?致敬电影<被嫌弃的松子的一生>. 自学IOS东一锄西一镐的总感觉没有一个总的概念,还是多看看官网吧,先看一下一个app的整个生命周期,本文主要是翻译 ...
- 使用js获取url里的指定参数
String.prototype.getQuery = function(name){ var reg = new RegExp("(^|&)"+ name +&q ...
- HDU-5272
Dylans loves numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/O ...
- Disruptor Ringbuffer
系列译文: http://ifeve.com/disruptor/ 当有多个消费者时,(按Disruptor的设计)每个消费者各自控制自己的指针,依次读取每个Slot(也就是每个消费者都会读取到所有的 ...
- Python中的PIL
转自:http://blog.csdn.net/yockie/article/details/8498301 介绍 把Python的基础知识学习后,尝试一下如何安装.加载.使用非标准库,选择了图像处理 ...
- LoadRunner中常用函数参考手册
基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...
- vue-music 关于Search(搜索页面)--上拉加载
建立搜索框组件页面,searchBox,组件接受一个可以自定义传入的placeholder 属性.input v-model 双向绑定数据关联到query 中, 在created中监听 quer ...
- HttpClient(转载)
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我 们再讨论),它不仅是客户端发送Http请求变得容易,而 ...
- 生成自签名CA+SSL证书
1.创建CA证书配置CA.cnf文件 [ req ] distinguished_name = req_distinguished_name x509_extensions = root_ca [ r ...
- 关于 Unity WebGL 的探索(一)
到今天为止,项目已经上线一个多月了,目前稳定运行,各种 bug 也是有的.至少得到了苹果的两次推荐和 TapTap 一次首页推荐,也算是结项后第一时间对我们项目的一个肯定. 出于各种各样的可描述和不可 ...