apiVersion: v1
data:
.dockerconfigjson: <pull_secret> (1)
kind: Secret
metadata:
annotations:
build.shipwright.io/referenced.secret: "true" (2)
name: secret-docker
type: kubernetes.io/dockerconfigjson
您可以向构建密钥添加注释 build.shipwright.io/referenced.secret: "true"
。基于此注释,构建控制器会在创建、更新或删除等事件触发构建密钥时采取协调操作。以下示例显示了带注释密钥的使用方法
apiVersion: v1
data:
.dockerconfigjson: <pull_secret> (1)
kind: Secret
metadata:
annotations:
build.shipwright.io/referenced.secret: "true" (2)
name: secret-docker
type: kubernetes.io/dockerconfigjson
1 | Base64 编码的拉取密钥。 |
2 | build.shipwright.io/referenced.secret 注释的值设置为 true 。 |
此注释过滤掉构建实例中未引用的密钥。例如,如果密钥没有此注释,即使触发了密钥事件,构建控制器也不会协调。在事件触发时进行协调允许构建控制器重新触发构建配置上的验证,帮助您了解是否缺少依赖项。
您可以为 Git 仓库定义以下类型的身份验证
基本身份验证
安全 Shell (SSH) 身份验证
您也可以在 Build
CR 中使用这两种身份验证类型配置 Git 密钥。
使用基本身份验证,您必须配置 Git 仓库的用户名和密码。以下示例显示了 Git 基本身份验证的使用方法
apiVersion: v1
kind: Secret
metadata:
name: secret-git-basic-auth
annotations:
build.shipwright.io/referenced.secret: "true"
type: kubernetes.io/basic-auth (1)
stringData: (2)
username: <cleartext_username>
password: <cleartext_password>
1 | Kubernetes 密钥的类型。 |
2 | 以明文存储用户名和密码的字段。 |
使用 SSH 身份验证,您必须配置 Tekton 注释以指定要使用的 Git 仓库提供程序的主机名。例如,GitHub 为 github.com
,GitLab 为 gitlab.com
。
以下示例显示了 Git SSH 身份验证的使用方法
apiVersion: v1
kind: Secret
metadata:
name: secret-git-ssh-auth
annotations:
build.shipwright.io/referenced.secret: "true"
type: kubernetes.io/ssh-auth (1)
data:
ssh-privatekey: | (2)
# Insert ssh private key, base64 encoded
1 | Kubernetes 密钥的类型。 |
2 | 用于向 Git 进行身份验证的 SSH 密钥的 Base64 编码。您可以使用 base64 ~/.ssh/id_rsa.pub 命令生成此密钥,其中 ~/.ssh/id_rsa.pub 表示通常用于向 Git 进行身份验证的密钥的默认位置。 |
在相关命名空间中创建密钥后,您可以在 Build
自定义资源 (CR) 中引用它。您可以使用这两种身份验证类型配置 Git 密钥。
以下示例显示了使用 SSH 身份验证类型的 Git 密钥
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-golang-build
spec:
source:
git:
url: git@gitlab.com:userjohn/newtaxi.git
cloneSecret: secret-git-ssh-auth
以下示例显示了使用基本身份验证类型的 Git 密钥
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-golang-build
spec:
source:
git:
url: https://gitlab.com/userjohn/newtaxi.git
cloneSecret: secret-git-basic-auth
要将镜像推送到私有容器注册表,您必须在相应的命名空间中定义一个密钥,然后在您的 Build
自定义资源 (CR) 中引用它。
运行以下命令以生成密钥
$ oc --namespace <namespace> create secret docker-registry <container_registry_secret_name> \
--docker-server=<registry_host> \ (1)
--docker-username=<username> \ (2)
--docker-password=<password> \ (3)
--docker-email=<email_address>
1 | <registry_host> 值表示此格式的 URL:https://<registry_server>/<registry_host> 。 |
2 | <username> 值是用户 ID。 |
3 | <password> 值可以是您的容器注册表密码或访问令牌。 |
运行以下命令以注释密钥
$ oc --namespace <namespace> annotate secrets <container_registry_secret_name> build.shipwright.io/referenced.secret='true'
在您的 Build
CR 中将 spec.output.pushSecret
字段的值设置为密钥名称
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-golang-build
# ...
output:
image: <path_to_image>
pushSecret: <container_registry_secret_name>
发行版部署 YAML 文件包含两个集群范围的角色,用于使用 Builds 对象。以下角色默认安装
shpwright-build-aggregate-view
:授予您对 Builds 资源(例如 BuildStrategy
、ClusterBuildStrategy
、Build
和 BuildRun
)的读取访问权限。此角色聚合到 Kubernetes view
角色。
shipwright-build-aggregate-edit
:授予您对命名空间级别配置的构建资源的写入权限。构建资源包括BuildStrategy
、Build
和BuildRun
。所有ClusterBuildStrategy
资源都具有读取权限。此角色会聚合到 Kubernetes 的edit
和admin
角色。
只有集群管理员才能对ClusterBuildStrategy
资源进行写入操作。您可以通过创建具有这些权限的单独 Kubernetes ClusterRole
角色并将该角色绑定到相应的用户来更改此设置。