JImmy的文档: Openshift template

1) 什么是template

      Openshift在创建应用过程中需要创建多个资源,例如创建最简单的deployment-example应用,需要创建的Imagestream、Deployemtconfig、Service三个资源,template提供了一种保存多个资源配置的模板,用户可以直接根据模板创建多个资源,完成应用的部署。

2) template 怎么创建

    下面提供一个最简单的Deploymentexample的模板,模板看似很长其实就包括两部分模板配置部分和资源配置部分(objects,objects部分包含了各类资源)。

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: openshift/deployment-example:latest
      from:
        kind: DockerImage
        name: openshift/deployment-example: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: 1
    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: 8080
            protocol: TCP
          resources: {}
    test: false
    triggers:
    - type: ConfigChange
    - imageChangeParams:
        automatic: true
        containerNames:
        - deployment-example
        from:
          kind: ImageStreamTag
          name: deployment-example:latest
      type: ImageChange
  status:
    availableReplicas: 0
    latestVersion: 0
    observedGeneration: 0
    replicas: 0
    unavailableReplicas: 0
    updatedReplicas: 0
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      openshift.io/generated-by: OpenShiftNewApp
    creationTimestamp: null
    labels:
      app: deployment-example
    name: deployment-example
  spec:
    ports:
    - name: 8080-tcp
      port: 8080
      protocol: TCP
      targetPort: 8080
    selector:
      app: deployment-example
      deploymentconfig: deployment-example
  status:
    loadBalancer: {}  
创建Template进行如下操作即可:
[root@master2 template]# oc create -f deployment-template.yaml 
template "deployment-example" created
[root@master2 template]# oc get template
NAME                 DESCRIPTION   PARAMETERS    OBJECTS
deployment-example                 0 (all set)   3

3) 如何使用template,使用前面创建的template创建应用过程如下:

[root@master2 template]# oc process deployment-example | oc create -f -
imagestream "deployment-example" created
deploymentconfig "deployment-example" created
service "deployment-example" created
[root@master2 template]# oc get dc
NAME                 REVISION   DESIRED   CURRENT   TRIGGERED BY
deployment-example   1          1         1         config,image(deployment-example:latest)
[root@master2 template]# oc get svc
NAME                 CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
deployment-example   172.30.192.204   <none>        8080/TCP   5m
[root@master2 template]# oc get imagestream
NAME                 DOCKER REPO                                                    TAGS      UPDATED
deployment-example   docker-registry.default.svc:5000/template/deployment-example   latest    5 minutes ago

4)常见使用

   a.  带参数的template实例:

   redis-template.yaml(参数REDIS_PASSWORD)

apiVersion: v1
kind: Template
metadata:
  name: redis-template
  annotations:
    description: "Description"
    iconClass: "icon-redis"
    tags: "database,nosql"
objects:
- apiVersion: v1
  kind: Pod
  metadata:
    name: redis-master
  spec:
    containers:
    - env:
      - name: REDIS_PASSWORD
        value: ${REDIS_PASSWORD}
      image: docker.io/redis:latest
      name: master
      ports:
      - containerPort: 6379
        protocol: TCP
parameters:
- description: Password used for Redis authentication
  from: '[A-Z0-9]{8}'
  generate: expression
  name: REDIS_PASSWORD
labels:
  redis: master
[root@master2 template]# oc create -f redis-template.yaml 
template "redis-template" created
[root@master2 template]# oc process redis-template -p REDIS_PASSWORD=qwer1234|oc create -f -
pod "redis-master" created


b.   基于现有环境生成模版

(1) 创建一个应用
# oc new-app openshift/deployment-example:latest

(2) 将该应用的imagestream,dc,svc制作成template test1, 并把template test1配置导入到文件test1
# oc export imagestream,dc,svc --as-template=test1 > test1

(3) 修改文件test1中镜像部分(image字段),因为原来的镜像已经不存在了,会导致出问题

(4) 创建template 名城为test1
# oc create -f test1

(5) 基于template创建应用
# oc process test1 | oc create -f -


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值