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 ...
随机推荐
- 无缝滚动Js
<html> <body> <div style="width: 190px; height: 127px; overflow: hidden; font-si ...
- leetcode 之LRU Cache(26)
很实际的一道题.定义一个双向链表list,方便插入和删除:定义一个哈希表,方便查找. 具体的,哈希表存放每个结点的key和它对应的结点的地址:访问结点时,如果结点存在,则将其交换到头部,同是更新哈希表 ...
- 22:django 配置详解
django配置文件包含了你的django安装的所有配置信息,本节为大家详细讲解django的配置 基本知识 一个配置文件只是一个包含模块级别变量的的python模块,所有的配置变量都是大写的,哈哈哈 ...
- [转] Socket心跳包异常检测的C语言实现,服务器与客户端代码案例
转载自:zxh2075的专栏 在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大.本文实现的是由客户端给服务器发送心跳包,服务器不必返 ...
- redis之(一)redis的简单介绍
[一]:概念 --->Redis是一个开源的,高性能的,基于键值对的缓存与存储系统 --->Redis数据库中的多有数据都存储在内存中,由于内存的读写速度远快于硬盘,一秒读写超过10万键值 ...
- Intersection of Two Linked Lists——经典问题
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- python安装numpy和scipy的资源
whl资源:注意python版本和位数. http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
- scp命令详解—跨服务器复制文件
scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入. 在服务器104.238.161.75上操作,将服务器 ...
- IO扩展控件(System.IO.Abstractions)
刚看到这个Namespace的时候还以为是.Net Framework里自带的包,结果查了一圈无任何结果.果断上Github搜索,一击即中 https://github.com/tathamoddie ...
- 1. Maven - 开始
今天开始记录Maven的学习过程. ☞ 相关明细 操作系统:win7 参考书籍:<maven-definitive-guide_zh>(Maven权威指南) maven版本:3.3.3 ☞ ...