10.3. 使用 Red Hat Developer Hub 中的 Kubernetes 自定义操作创建模板
您可以通过将 Template
对象定义为 YAML 文件来创建模板。
Template
对象描述了模板及其元数据。它还包含所需的输入变量,以及构建服务所执行的操作列表。
+
apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: create-kubernetes-namespace title: Create a kubernetes namespace description: Create a kubernetes namespace spec: type: service parameters: - title: Information required: [namespace, token] properties: namespace: title: Namespace name type: string description: Name of the namespace to be created clusterRef: title: Cluster reference type: string description: Cluster resource entity reference from the catalog ui:field: EntityPicker ui:options: catalogFilter: kind: Resource url: title: Url type: string description: Url of the kubernetes API, will be used if clusterRef is not provided token: title: Token type: string ui:field: Secret description: Bearer token to authenticate with skipTLSVerify: title: Skip TLS verification type: boolean description: Skip TLS certificate verification, not recommended to use in production environment, default to false caData: title: CA data type: string ui:field: Secret description: Certificate Authority base64 encoded certificate labels: title: Labels type: string description: Labels to be applied to the namespace ui:widget: textarea ui:options: rows: 3 ui:help: 'Hint: Separate multiple labels with a semicolon!' ui:placeholder: 'kubernetes.io/type=namespace; app.io/managed-by=org' steps: - id: create-kubernetes-namespace name: Create kubernetes namespace action: kubernetes:create-namespace input: namespace: ${{ parameters.namespace }} clusterRef: ${{ parameters.clusterRef }} url: ${{ parameters.url }} token: ${{ secrets.token }} skipTLSVerify: ${{ parameters.skipTLSVerify }} caData: ${{ secrets.caData }} labels: ${{ parameters.labels }}
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: create-kubernetes-namespace
title: Create a kubernetes namespace
description: Create a kubernetes namespace
spec:
type: service
parameters:
- title: Information
required: [namespace, token]
properties:
namespace:
title: Namespace name
type: string
description: Name of the namespace to be created
clusterRef:
title: Cluster reference
type: string
description: Cluster resource entity reference from the catalog
ui:field: EntityPicker
ui:options:
catalogFilter:
kind: Resource
url:
title: Url
type: string
description: Url of the kubernetes API, will be used if clusterRef is not provided
token:
title: Token
type: string
ui:field: Secret
description: Bearer token to authenticate with
skipTLSVerify:
title: Skip TLS verification
type: boolean
description: Skip TLS certificate verification, not recommended to use in production environment, default to false
caData:
title: CA data
type: string
ui:field: Secret
description: Certificate Authority base64 encoded certificate
labels:
title: Labels
type: string
description: Labels to be applied to the namespace
ui:widget: textarea
ui:options:
rows: 3
ui:help: 'Hint: Separate multiple labels with a semicolon!'
ui:placeholder: 'kubernetes.io/type=namespace; app.io/managed-by=org'
steps:
- id: create-kubernetes-namespace
name: Create kubernetes namespace
action: kubernetes:create-namespace
input:
namespace: ${{ parameters.namespace }}
clusterRef: ${{ parameters.clusterRef }}
url: ${{ parameters.url }}
token: ${{ secrets.token }}
skipTLSVerify: ${{ parameters.skipTLSVerify }}
caData: ${{ secrets.caData }}
labels: ${{ parameters.labels }}
10.3.1. Red Hat Developer Hub 中支持的 Kubernetes 自定义操作
在 Red Hat Developer Hub 中,您可以在 scaffolder 模板中使用自定义 Kubernetes 操作。
自定义 Kubernetes 构建程序操作
- action: kubernetes:create-namespace
- 在 Developer Hub 中为 Kubernetes 集群创建一个命名空间。
参数名称 | 类型 | 要求 | 描述 | Example |
---|---|---|---|---|
|
| 必填 | Kubernetes 命名空间的名称 |
|
|
|
仅在未定义 | 来自目录的集群资源实体引用 |
|
|
|
仅在未定义 | Kubernetes 集群的 API url | |
|
| 必填 | 用于身份验证的 Kubernetes API bearer 令牌 | |
|
| 选填 | 如果为 true,则会跳过证书验证 | false |
|
| 选填 | Base64 编码的证书数据 | |
|
| 选填 | 应用到命名空间的标签 | app.io/type=ns; app.io/managed-by=org; |