openshift template介绍

原文: https://docs.openshift.com/container-platform/3.11/dev_guide/templates.html

概述

在openshift云平台,我们会使用模版配合不同的参数来创建不同的应用,即,一个模版是一系列可以被参数化并创建一组对象的集合。模版可以创建任何你有权限创建的任意对象,例如services, build cnofiguration以及deploy configuration。一个模版通常会给模版中所常见的对象定义标签(labels)。

你可以自己定义模版 ,也可以使用已经上传的模版。

上传模版

如果你用的json或者yaml去定义个template, 你可以通过cli上传模版,这样任何人只要和合适的权限都可以使用该模版。

上传模版到当前项目,使用以下命令:

$ oc create -f <filename>

上传模版到不同的项目,则需要指定项目,如下:

$ oc create -f <filename> -n <project>

基于模版创建应用,有两种方法,即可参考 Creating an Application Using the Web Console也可以通过cli去创建。

标签

标签用于管理已经生成的对象,例如pods。我们可以定义模版时就定义好标签,也可以通过命令行去给整个模版的对象添加标签。

命令如下:

$ oc process -f <filename> -l name=otherLabel

参数

模版中的一些参数在使用模版时可以被覆盖。你可以命令行获取到指定模版文件的参数。命令如下:

$ oc process --parameters -f <filename>

如果模版已经上传,则你可以使用以下命令:

$ oc process --parameters -n <project> <template_name>

对于模版中参数更多内容,可参考 parameters section of the template

生成对象

通过cli,你可以使用以下指令来处理模版文件而生成所有对象到标准输出。

$ oc process -f <filename>

如果模版已经上传,则你可以使用以下指令:

$ oc process <template_name>

这两个命令,并没有真正的生成对象。我们需要使用以下命令,处理模版到标准输出然后管道输出给真正的创建指令:

$ oc process -f <filename> | oc create -f -

如果模版已经上传,则你可以使用以下指令:

$ oc process <template> | oc create -f -

可以和“-p”选项一起使用去重写模版参数的值,如下指令:

$ oc process -f my-rails-postgresql \
    -p POSTGRESQL_USER=bob \
    -p POSTGRESQL_DATABASE=mydatabase \
    | oc create -f -

如果参数比较多,你可以将他们存入文件中,然后直接使用参数文件,如下指令:

$ cat postgres.env
POSTGRESQL_USER=bob
POSTGRESQL_DATABASE=mydatabase
$ oc process -f my-rails-postgresql --param-file=postgres.env、

你也可以通过标准输出指定参数,命令如下:

$ sed s/bob/alice/ postgres.env | oc process -f my-rails-postgresql --param-file=-

编辑已上传的模版

使用以下指令去编辑已经上传到当前项目的模版:

$ oc edit template <template>

即时应用和快速入门模版

openshift容器平台默认提供了一些即可应用和快速入门模版,以支持用户可以快速创建应用。这样的模版有rails, Django, node.js, CakePHP,以及Perl. 你可以通过以下指令去查看模版:

$ oc get templates -n openshift

如果没有输出,则可参考 Loading the Default Image Streams and Templates

模版,这些模版的编译的是GitHub的一些共同的源代码。如果你想编译源码并构建应用,则你需要:

  1. Fork模版中默认的SOURCE_REPOSITORY_URL参数
  2. 当基于模版时创建应用时,覆盖参数的值

如果,你想查看这一过程的基于web console的整个演练,可参考 Getting Started for Developers: Web Console.

编写模版

当你需要重复创建你的应用是,你可以定义模版。格式如下:

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: dockerfile/redis
      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

描述

模版的描述是通知用户这个模版是干什么的,然后帮助用户在web console端很容易的找到。其他的metadata则可有可无。

 

标签

模版可以包含许多标签。当这些模版被实例化时,这些标签就会添加给这个对象。例如,定下以下标签,则可以让我们很容易的找到基于这个模版创建的所有的对象。

kind: "Template"
apiVersion: "v1"
...
labels:
  template: "cakephp-mysql-example" 
  app: "${NAME}" 

参数

当模版被实例化时,参数的值可以被用户提供,可以被直接生成。如果提供了默认值,则用户在实例化模版时,则可以不指定该参数。

参数1: 默认参数

parameters:
  - name: USERNAME
    description: "The user name for Joe"
    value: joe

参数2:生成参数值

parameters:
  - name: PASSWORD
    description: "The random user password"
    generate: expression
    from: "[a-zA-Z0-9]{12}"

对象列表

模版中最主要的部分就是模版实例化时生成的一组对象。对象类型没有限制。

从已存在的对象中创建模版

可通过以下命令导出已有的对象作为参考并完成自己的模版比自己从头写要简单的多。

 

$ oc get -o yaml --export all > <yaml_filename>

其中all可以替换为bc, dc等其他对象。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值