×

理解模板

模板描述了一组可以参数化和处理以生成 OpenShift Dedicated 用于创建的对象列表的对象。模板可以处理以创建您有权在项目中创建的任何内容,例如服务、构建配置和部署配置。模板还可以定义一组要应用于模板中定义的每个对象的标签。

您可以使用 CLI 从模板创建对象列表,或者如果模板已上传到您的项目或全局模板库,则可以使用 Web 控制台。

上传模板

如果您有一个定义模板的 JSON 或 YAML 文件,您可以使用 CLI 将模板上传到项目。这会将模板保存到项目中,以便任何具有对该项目适当访问权限的用户都可以重复使用。本主题后面提供了有关编写自己的模板的说明。

步骤
  • 使用以下方法之一上传模板

    • 将模板上传到您当前项目的模板库,使用以下命令传递 JSON 或 YAML 文件

      $ oc create -f <filename>
    • 使用带有项目名称的-n选项将模板上传到不同的项目

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

现在可以使用 Web 控制台或 CLI 选择该模板。

使用 Web 控制台创建应用程序

您可以使用 Web 控制台从模板创建应用程序。

步骤
  1. 在 Web 控制台导航菜单顶部,从上下文选择器中选择**开发人员**。

  2. 在所需项目中,单击**+添加**

  3. 在**开发人员目录**磁贴中单击**所有服务**。

  4. 单击**类型**下的**构建器镜像**以查看可用的构建器镜像。

    只有在其注释中列有builder标签的镜像流标签才会显示在此列表中,如下所示

    kind: "ImageStream"
    apiVersion: "image.openshift.io/v1"
    metadata:
      name: "ruby"
      creationTimestamp: null
    spec:
    # ...
      tags:
        - name: "2.6"
          annotations:
            description: "Build and run Ruby 2.6 applications"
            iconClass: "icon-ruby"
            tags: "builder,ruby" (1)
            supports: "ruby:2.6,ruby"
            version: "2.6"
    # ...
    1 在此处包含builder可确保此镜像流标签在 Web 控制台中显示为构建器。
  5. 修改新应用程序屏幕中的设置以配置支持您的应用程序的对象。

使用 CLI 从模板创建对象

您可以使用 CLI 处理模板并使用生成的配置来创建对象。

添加标签

标签用于管理和组织生成的资源,例如 Pod。模板中指定的标签将应用于从该模板生成的每个资源。

步骤
  • 从命令行在模板中添加标签

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

参数列表

可以在模板的parameters部分找到可以覆盖的参数列表。

步骤
  1. 可以使用以下命令并指定要使用的文件,通过 CLI 列出参数

    $ oc process --parameters -f <filename>

    或者,如果模板已上传

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

    例如,以下显示了在默认的openshift项目中列出其中一个快速入门模板的参数时的输出。

    $ oc process --parameters -n openshift rails-postgresql-example
    示例输出
    NAME                         DESCRIPTION                                                                                              GENERATOR           VALUE
    SOURCE_REPOSITORY_URL        The URL of the repository with your application source code                                                                  https://github.com/sclorg/rails-ex.git
    SOURCE_REPOSITORY_REF        Set this to a branch name, tag or other ref of your repository if you are not using the default branch
    CONTEXT_DIR                  Set this to the relative path to your project if it is not in the root of your repository
    APPLICATION_DOMAIN           The exposed hostname that will route to the Rails service                                                                    rails-postgresql-example.openshiftapps.com
    GITHUB_WEBHOOK_SECRET        A secret string used to configure the GitHub webhook                                                     expression          [a-zA-Z0-9]{40}
    SECRET_KEY_BASE              Your secret key for verifying the integrity of signed cookies                                            expression          [a-z0-9]{127}
    APPLICATION_USER             The application user that is used within the sample application to authorize access on pages                                 openshift
    APPLICATION_PASSWORD         The application password that is used within the sample application to authorize access on pages                             secret
    DATABASE_SERVICE_NAME        Database service name                                                                                                        postgresql
    POSTGRESQL_USER              database username                                                                                        expression          user[A-Z0-9]{3}
    POSTGRESQL_PASSWORD          database password                                                                                        expression          [a-zA-Z0-9]{8}
    POSTGRESQL_DATABASE          database name                                                                                                                root
    POSTGRESQL_MAX_CONNECTIONS   database max connections                                                                                                     10
    POSTGRESQL_SHARED_BUFFERS    database shared buffers                                                                                                      12MB

    输出标识了在处理模板时使用类似正则表达式的生成器生成的几个参数。

生成对象列表

使用 CLI,可以处理定义模板的文件以将对象列表返回到标准输出。

步骤
  1. 处理定义模板的文件以将对象列表返回到标准输出

    $ oc process -f <filename>

    或者,如果模板已上传到当前项目

    $ oc process <template_name>
  2. 通过处理模板并将输出传递给oc create来从模板创建资源。

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

    或者,如果模板已上传到当前项目

    $ oc process <template> | oc create -f -
  3. 您可以通过为要覆盖的每个<name>=<value>对添加-p选项来覆盖文件中定义的任何参数值。参数引用出现在模板项内的任何文本字段中。

    例如,在下面的示例中,模板的POSTGRESQL_USERPOSTGRESQL_DATABASE参数被覆盖,以输出具有自定义环境变量的配置。

    1. 从模板创建对象列表

      $ oc process -f my-rails-postgresql \
          -p POSTGRESQL_USER=bob \
          -p POSTGRESQL_DATABASE=mydatabase
    2. JSON 文件可以重定向到文件,也可以通过将处理后的输出传递给oc create命令直接应用,而无需上传模板。

      $ oc process -f my-rails-postgresql \
          -p POSTGRESQL_USER=bob \
          -p POSTGRESQL_DATABASE=mydatabase \
          | oc create -f -
    3. 如果参数数量很多,可以将它们存储在一个文件中,然后将此文件传递给oc process

      $ cat postgres.env
      POSTGRESQL_USER=bob
      POSTGRESQL_DATABASE=mydatabase
      $ oc process -f my-rails-postgresql --param-file=postgres.env
    4. 您还可以通过使用"-"作为--param-file的参数来从标准输入读取环境变量。

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

修改已上传的模板

您可以编辑已上传到项目的模板。

步骤
  • 修改已上传的模板

    $ oc edit template <template>

编写模板

您可以定义新的模板,以便轻松地重新创建应用程序的所有资源。模板定义了它创建的资源以及一些元数据,以指导这些资源的创建。

以下是一个简单的模板对象定义示例 (YAML)

apiVersion: template.openshift.io/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 控制台中搜索时帮助您找到它。除了模板名称之外的其他元数据是可选的,但很有用。除了常规描述性信息外,元数据还包括一组标签。有用的标签包括模板相关的语言名称,例如 Java、PHP、Ruby 等。

以下是一个模板描述元数据示例

kind: Template
apiVersion: template.openshift.io/v1
metadata:
  name: cakephp-mysql-example (1)
  annotations:
    openshift.io/display-name: "CakePHP MySQL Example (Ephemeral)" (2)
    description: >-
      An example CakePHP application with a MySQL database. For more information
      about using this template, including OpenShift considerations, see
      https://github.com/sclorg/cakephp-ex/blob/master/README.md.


      WARNING: Any data stored will be lost upon pod destruction. Only use this
      template for testing." (3)
    openshift.io/long-description: >-
      This template defines resources needed to develop a CakePHP application,
      including a build configuration, application DeploymentConfig, and
      database DeploymentConfig.  The database is stored in
      non-persistent storage, so this configuration should be used for
      experimental purposes only. (4)
    tags: "quickstart,php,cakephp" (5)
    iconClass: icon-php (6)
    openshift.io/provider-display-name: "Red Hat, Inc." (7)
    openshift.io/documentation-url: "https://github.com/sclorg/cakephp-ex" (8)
    openshift.io/support-url: "https://access.redhat.com" (9)
message: "Your admin credentials are ${ADMIN_USERNAME}:${ADMIN_PASSWORD}" (10)
1 模板的唯一名称。
2 简短易懂的名称,用户界面可以使用。
3 模板的描述。包含足够的细节,以便用户了解正在部署的内容以及部署前必须了解的任何注意事项。它还应提供指向其他信息的链接,例如自述文件。可以包含换行符以创建段落。
4 其他模板描述。例如,服务目录可能会显示此信息。
5 与模板关联的用于搜索和分组的标签。添加将模板包含到提供的目录类别之一中的标签。请参阅控制台常量文件中的CATALOG_CATEGORIES中的idcategoryAliases
6 要在 Web 控制台中与模板一起显示的图标。
可用的图标
  • icon-3scale

  • icon-aerogear

  • icon-amq

  • icon-angularjs

  • icon-ansible

  • icon-apache

  • icon-beaker

  • icon-camel

  • icon-capedwarf

  • icon-cassandra

  • icon-catalog-icon

  • icon-clojure

  • icon-codeigniter

  • icon-cordova

  • icon-datagrid

  • icon-datavirt

  • icon-debian

  • icon-decisionserver

  • icon-django

  • icon-dotnet

  • icon-drupal

  • icon-eap

  • icon-elastic

  • icon-erlang

  • icon-fedora

  • icon-freebsd

  • icon-git

  • icon-github

  • icon-gitlab

  • icon-glassfish

  • icon-go-gopher

  • icon-golang

  • icon-grails

  • icon-hadoop

  • icon-haproxy

  • icon-helm

  • icon-infinispan

  • icon-jboss

  • icon-jenkins

  • icon-jetty

  • icon-joomla

  • icon-jruby

  • icon-js

  • icon-knative

  • icon-kubevirt

  • icon-laravel

  • icon-load-balancer

  • icon-mariadb

  • icon-mediawiki

  • icon-memcached

  • icon-mongodb

  • icon-mssql

  • icon-mysql-database

  • icon-nginx

  • icon-nodejs

  • icon-openjdk

  • icon-openliberty

  • icon-openshift

  • icon-openstack

  • icon-other-linux

  • icon-other-unknown

  • icon-perl

  • icon-phalcon

  • icon-php

  • icon-play

  • iconpostgresql

  • icon-processserver

  • icon-python

  • icon-quarkus

  • icon-rabbitmq

  • icon-rails

  • icon-redhat

  • icon-redis

  • icon-rh-integration

  • icon-rh-spring-boot

  • icon-rh-tomcat

  • icon-ruby

  • icon-scala

  • icon-serverlessfx

  • icon-shadowman

  • icon-spring-boot

  • icon-spring

  • icon-sso

  • icon-stackoverflow

  • icon-suse

  • icon-symfony

  • icon-tomcat

  • icon-ubuntu

  • icon-vertx

  • icon-wildfly

  • icon-windows

  • icon-wordpress

  • icon-xamarin

  • icon-zend

7 提供模板的个人或组织的名称。
8 引用模板进一步文档的 URL。
9 可以获得模板支持的 URL。
10 此模板实例化时显示的说明性消息。此字段应告知用户如何使用新创建的资源。在显示消息之前,会在消息上执行参数替换,以便生成的凭据和其他参数可以包含在输出中。包含用户应遵循的任何后续步骤文档的链接。

编写模板标签

模板可以包含一组标签。当实例化模板时,这些标签将添加到每个创建的资源中。以这种方式定义标签使用户可以轻松查找和管理从特定模板创建的所有资源。

以下是一个模板对象标签示例

kind: "Template"
apiVersion: "v1"
...
labels:
  template: "cakephp-mysql-example" (1)
  app: "${NAME}" (2)
1 应用于从此模板创建的所有资源的标签。
2 也应用于从此模板创建的所有资源的参数化标签。对标签键和值都执行参数扩展。

编写模板参数

参数允许您提供值,或在实例化模板时生成值。然后,该值将替换参数引用的任何位置。引用可以在对象列表字段中的任何字段中定义。这对于生成随机密码或允许您提供自定义模板所需的 hostname 或其他用户特定值非常有用。参数可以通过两种方式引用。

  • 作为字符串值,通过在模板的任何字符串字段中使用 ${PARAMETER_NAME} 的形式放置值。

  • 作为 JSON 或 YAML 值,通过在模板中任何字段的位置使用 ${{PARAMETER_NAME}} 的形式放置值。

使用 ${PARAMETER_NAME} 语法时,可以在单个字段中组合多个参数引用,并且引用可以嵌入到固定数据中,例如 "http://${PARAMETER_1}${PARAMETER_2}"。两个参数值都将被替换,结果值是一个带引号的字符串。

使用 ${{PARAMETER_NAME}} 语法时,只允许单个参数引用,并且不允许前导和尾随字符。除非替换后结果不是有效的 JSON 对象,否则结果值是不带引号的。如果结果不是有效的 JSON 值,则结果值将被加引号并被视为标准字符串。

单个参数可以在模板中多次引用,并且可以在单个模板中使用这两种替换语法进行引用。

可以提供默认值,如果您不提供不同的值,则使用此默认值。

以下是将显式值设置为默认值的示例。

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

参数值也可以基于参数定义中指定的规则生成,例如生成参数值。

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

在前面的示例中,处理过程会生成一个长度为 12 个字符的随机密码,其中包含所有大小写字母和数字。

可用的语法不是完整的正则表达式语法。但是,您可以使用 \w\d\a\A 修饰符。

  • [\w]{10} 生成 10 个字母字符、数字和下划线。这遵循 PCRE 标准,等于 [a-zA-Z0-9_]{10}

  • [\d]{10} 生成 10 个数字。这等于 [0-9]{10}

  • [\a]{10} 生成 10 个字母字符。这等于 [a-zA-Z]{10}

  • [\A]{10} 生成 10 个标点符号或符号字符。这等于 [~!@#$%\^&*()\-_+={}\[\]\\|<,>.?/"';:`]{10}

根据模板是用 YAML 还是 JSON 编写的,以及修饰符嵌入的字符串类型,您可能需要用第二个反斜杠转义反斜杠。以下示例是等效的。

包含修饰符的 YAML 模板示例
  parameters:
  - name: singlequoted_example
    generate: expression
    from: '[\A]{10}'
  - name: doublequoted_example
    generate: expression
    from: "[\\A]{10}"
包含修饰符的 JSON 模板示例
{
    "parameters": [
       {
        "name": "json_example",
        "generate": "expression",
        "from": "[\\A]{10}"
       }
    ]
}

这是一个包含参数定义和引用的完整模板示例。

kind: Template
apiVersion: template.openshift.io/v1
metadata:
  name: my-template
objects:
  - kind: BuildConfig
    apiVersion: build.openshift.io/v1
    metadata:
      name: cakephp-mysql-example
      annotations:
        description: Defines how to build the application
    spec:
      source:
        type: Git
        git:
          uri: "${SOURCE_REPOSITORY_URL}" (1)
          ref: "${SOURCE_REPOSITORY_REF}"
        contextDir: "${CONTEXT_DIR}"
  - kind: DeploymentConfig
    apiVersion: apps.openshift.io/v1
    metadata:
      name: frontend
    spec:
      replicas: "${{REPLICA_COUNT}}" (2)
parameters:
  - name: SOURCE_REPOSITORY_URL (3)
    displayName: Source Repository URL (4)
    description: The URL of the repository with your application source code (5)
    value: https://github.com/sclorg/cakephp-ex.git (6)
    required: true (7)
  - name: GITHUB_WEBHOOK_SECRET
    description: A secret string used to configure the GitHub webhook
    generate: expression (8)
    from: "[a-zA-Z0-9]{40}" (9)
  - name: REPLICA_COUNT
    description: Number of replicas to run
    value: "2"
    required: true
message: "... The GitHub webhook secret is ${GITHUB_WEBHOOK_SECRET} ..." (10)
1 实例化模板时,此值将被 SOURCE_REPOSITORY_URL 参数的值替换。
2 实例化模板时,此值将被 REPLICA_COUNT 参数的不带引号的值替换。
3 参数的名称。此值用于在模板中引用参数。
4 参数的用户友好名称。此名称显示给用户。
5 参数的描述。为参数的目的提供更详细的信息,包括对预期值的任何约束。描述应使用完整的句子以遵循控制台的文本标准。不要使其成为显示名称的重复。
6 参数的默认值,如果您在实例化模板时没有覆盖该值,则使用此默认值。避免对密码等使用默认值,而应将生成的密码与密钥结合使用。
7 表示此参数是必需的,这意味着您不能将其用空值覆盖。如果参数没有提供默认值或生成的值,则必须提供一个值。
8 其值已生成的参。
9 生成器的输入。在这种情况下,生成器会生成一个 40 个字符的字母数字值,包括大写和小写字符。
10 参数可以包含在模板消息中。这会通知您生成的数值。

编写模板对象列表

模板的主要部分是实例化模板时创建的对象列表。这可以是任何有效的 API 对象,例如构建配置、部署配置或服务。该对象将完全按照此处定义的方式创建,任何参数值都将在创建之前被替换。这些对象的定义可以引用前面定义的参数。

以下是一个对象列表的示例。

kind: "Template"
apiVersion: "v1"
metadata:
  name: my-template
objects:
  - kind: "Service" (1)
    apiVersion: "v1"
    metadata:
      name: "cakephp-mysql-example"
      annotations:
        description: "Exposes and load balances the application pods"
    spec:
      ports:
        - name: "web"
          port: 8080
          targetPort: 8080
      selector:
        name: "cakephp-mysql-example"
1 此模板创建的服务的定义。

如果对象定义元数据包含固定的 namespace 字段值,则在模板实例化期间,该字段将从定义中删除。如果 namespace 字段包含参数引用,则执行正常的参数替换,并且对象将在参数替换解析到的任何命名空间中创建,假设用户有权在该命名空间中创建对象。

将模板标记为可绑定

模板服务代理在其目录中为其感知到的每个模板对象宣传一项服务。默认情况下,每项服务都被宣传为可绑定的,这意味着最终用户可以针对已配置的服务进行绑定。

步骤

模板作者可以阻止最终用户绑定针对从给定模板提供的服务。

  • 通过向模板添加注释 template.openshift.io/bindable: "false" 来阻止最终用户绑定针对从给定模板提供的服务。

公开模板对象字段

模板作者可以指示应公开模板中特定对象的字段。模板服务代理识别 ConfigMapSecretServiceRoute 对象上的公开字段,并在用户绑定由代理支持的服务时返回公开字段的值。

要公开一个或多个对象的字段,请向模板中的对象添加以 template.openshift.io/expose-template.openshift.io/base64-expose- 为前缀的注释。

每个注释键(去除其前缀)都将被传递以成为 bind 响应中的键。

每个注释值都是一个 Kubernetes JSONPath 表达式,该表达式在绑定时解析以指示应在 bind 响应中返回其值的字段。

Bind 响应键值对可以在系统的其他部分用作环境变量。因此,建议每个注释键(去除其前缀)都应为有效的环境变量名称,以字符 A-Za-z_ 开头,后跟零个或多个字符 A-Za-z0-9_

除非使用反斜杠转义,否则 Kubernetes 的 JSONPath 实现会将 .@ 等字符解释为元字符,无论它们在表达式中的位置如何。因此,例如,要引用名为 my.keyConfigMap 数据,所需的 JSONPath 表达式将是 {.data['my\.key']}。根据 JSONPath 表达式在 YAML 中的编写方式,可能需要额外的反斜杠,例如 "{.data['my\\.key']}"

以下是如何公开不同对象字段的示例。

kind: Template
apiVersion: template.openshift.io/v1
metadata:
  name: my-template
objects:
- kind: ConfigMap
  apiVersion: v1
  metadata:
    name: my-template-config
    annotations:
      template.openshift.io/expose-username: "{.data['my\\.username']}"
  data:
    my.username: foo
- kind: Secret
  apiVersion: v1
  metadata:
    name: my-template-config-secret
    annotations:
      template.openshift.io/base64-expose-password: "{.data['password']}"
  stringData:
    password: <password>
- kind: Service
  apiVersion: v1
  metadata:
    name: my-template-service
    annotations:
      template.openshift.io/expose-service_ip_port: "{.spec.clusterIP}:{.spec.ports[?(.name==\"web\")].port}"
  spec:
    ports:
    - name: "web"
      port: 8080
- kind: Route
  apiVersion: route.openshift.io/v1
  metadata:
    name: my-template-route
    annotations:
      template.openshift.io/expose-uri: "http://{.spec.host}{.spec.path}"
  spec:
    path: mypath

鉴于上述部分模板,对 bind 操作的示例响应如下。

{
  "credentials": {
    "username": "foo",
    "password": "YmFy",
    "service_ip_port": "172.30.12.34:8080",
    "uri": "http://route-test.router.default.svc.cluster.local/mypath"
  }
}
步骤
  • 使用 template.openshift.io/expose- 注释将字段值作为字符串返回。这很方便,尽管它不处理任意二进制数据。

  • 如果要返回二进制数据,请改用 template.openshift.io/base64-expose- 注释,以便在返回数据之前对其进行 base64 编码。

等待模板就绪

模板作者可以指定模板中某些对象需要等待,然后服务目录、模板服务代理或TemplateInstance API 才会认为模板实例化已完成。

要使用此功能,请使用以下注释标记模板中一种或多种类型为BuildBuildConfigDeploymentDeploymentConfigJobStatefulSet的对象

"template.alpha.openshift.io/wait-for-ready": "true"

只有在所有标有该注释的对象报告就绪后,模板实例化才算完成。类似地,如果任何带注释的对象报告失败,或者模板在 1 小时固定超时时间内未能就绪,则模板实例化失败。

出于实例化的目的,每种对象的准备就绪和失败定义如下:

种类 准备就绪 失败

Build

对象报告阶段完成。

对象报告阶段已取消、出错或失败。

BuildConfig

最新关联的构建对象报告阶段完成。

最新关联的构建对象报告阶段已取消、出错或失败。

Deployment

对象报告新的副本集和部署可用。这遵循对象上定义的就绪探针。

对象报告 progressing 状态为 false。

DeploymentConfig

对象报告新的复制控制器和部署可用。这遵循对象上定义的就绪探针。

对象报告 progressing 状态为 false。

Job

对象报告完成。

对象报告一个或多个失败。

StatefulSet

对象报告所有副本就绪。这遵循对象上定义的就绪探针。

不适用。

以下是一个使用wait-for-ready注释的模板摘录示例。更多示例可在 OpenShift Dedicated 快速入门模板中找到。

kind: Template
apiVersion: template.openshift.io/v1
metadata:
  name: my-template
objects:
- kind: BuildConfig
  apiVersion: build.openshift.io/v1
  metadata:
    name: ...
    annotations:
      # wait-for-ready used on BuildConfig ensures that template instantiation
      # will fail immediately if build fails
      template.alpha.openshift.io/wait-for-ready: "true"
  spec:
    ...
- kind: DeploymentConfig
  apiVersion: apps.openshift.io/v1
  metadata:
    name: ...
    annotations:
      template.alpha.openshift.io/wait-for-ready: "true"
  spec:
    ...
- kind: Service
  apiVersion: v1
  metadata:
    name: ...
  spec:
    ...
其他建议
  • 设置内存、CPU 和存储的默认大小,以确保您的应用程序拥有足够的资源来顺利运行。

  • 如果该标签跨越主要版本使用,请避免引用映像中的latest标签。这可能会导致在将新映像推送到该标签时运行的应用程序中断。

  • 良好的模板构建和部署干净利落,无需在模板部署后进行修改。

从现有对象创建模板

无需从头开始编写整个模板,您可以以 YAML 形式导出项目中的现有对象,然后通过添加参数和其他自定义项作为模板形式来修改 YAML。

步骤
  • 以 YAML 形式导出项目中的对象

    $ oc get -o yaml all > <yaml_filename>

    您也可以替换特定资源类型或多个资源,而不是all。运行oc get -h以获取更多示例。

    oc get -o yaml all中包含的对象类型为:

    • BuildConfig

    • Build

    • DeploymentConfig

    • ImageStream

    • Pod

    • ReplicationController

    • Route

    • Service

不建议使用all别名,因为内容可能在不同的集群和版本之间有所不同。请改用指定所有必需的资源。