本指南介绍如何安装Tekton管道,包含以下主题:
-
选择你想要安装的Tekton管道版本:
-
如果你还没有现成的Kubernetes集群,请先安装,要求为1.15及以上版本:
#在GKE上创建集群的命令示例 gcloud container clusters create $CLUSTER_NAME \ --zone=$CLUSTER_ZONE --cluster-version=1.15.11-gke.5
-
为当前用户赋予
cluster-admin
权限:kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=$(gcloud config get-value core/account)
请参考 基于角色的访问控制.
要在Kubernetes集群中安装Tekton,需要:
-
运行以下命令安装Tekton管道及其依赖:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
你可以通过指定
previous/$VERSION_NUMBER
来安装特定的版本,例如:kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.2.0/release.yaml
如果你的容器运行时不支持
image-reference:tag@digest
(例如, 像在OpenShift 4.x中使用的cri-o
), 那么使用release.notags.yaml
文件来代替:kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.notags.yaml
-
通过以下命令监控安装的进度,直到所有的Pod都变成运行状态:
kubectl get pods --namespace tekton-pipelines --watch
注意: 通过CTRL+C来停止监控.
恭喜! 你已经成功地在Kubernetes集群中安装了Tekton管道。接下来,你可查看以下主题:
要在OpenShift集群中安装Tekton,你首先需要应用anyuid
安全上下文到tekton-pipelines-controller
服务账户。这是运行webhook Pod的必须条件。
参考
安全上下文约束
查看更多信息。
-
以
cluster-admin
权限登录,以下使用默认的system:admin
用户:# For MiniShift: oc login -u admin:admin oc login -u system:admin
-
设置命令空间(项目)以及配置其服务账户:
oc new-project tekton-pipelines oc adm policy add-scc-to-user anyuid -z tekton-pipelines-controller
-
安装Tekton管道:
oc apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.notags.yaml
参考 OpenShift命令行文档 查看有关
oc
命令的说明. -
使用以下命令查看安装进度,直到所有组件都显示为
运行
状态:oc get pods --namespace tekton-pipelines --watch
注意: 通过 CTRL + C 停止监控.
恭喜! 你已经成功地在OpenShift集群中安装了Tekton管道。接下来,你可参考以下主题:
If you want to run OpenShift 4.x on your laptop (or desktop), you should take a look at Red Hat CodeReady Containers.
Tekton管道中的Tasks
需要从一个或多个位置中获取输入或存储输出。
你可以使用以下方式来配置Tekton管道所需的存储资源:
注意: Tasks
所需的输入与输出位置可通过 PipelineResources
来定义。
对于Tekton管道来说,两种选项具有相同的功能,你可以按照你的实际业务需要进行选择。例如:
- 在一些环境中,创建一个持久化卷可能比传输文件到云存储更慢。
- 如果集群运行在多个可用区,访问持久化卷可能就不合适了。
注意: 要自定义持久化卷所用ConfigMaps
的名称 (例如避免与其他服务冲突的情况), 重命名你的 ConfigMap
名称并更新controller.yaml中引用的值.
要配置 持久化卷, 通过使用一个名称为 config-artifact-pvc
的ConfigMap
然后配置以下属性:
size
: 卷的大小. 默认为5GiB.storageClassName
: 持久化卷所使用的存储类名称。默认为默认存储类。
要配置 S3 桶或者 GCS 桶,
使用一个名称为config-artifact-bucket
的ConfigMap
然后配置以下属性:
location
- 桶的位置, 例如gs://mybucket
或者s3://mybucket
.bucket.service.account.secret.name
- 服务账号使用的包含可访问桶的凭证的密文名称。bucket.service.account.secret.key
- 服务账号所需JSON文件的键名称。bucket.service.account.field.name
- 当指定密文路径时,所使用的环境变量名称。默认为GOOGLE_APPLICATION_CREDENTIALS
. 如果使用S3,需设置为BOTO_CONFIG
.
重要: 配置你的桶的回收策略为在运行Tasks
后删除所有文件。
注意: 你只能使用 us-east-1
可用区的S3桶. 这是gsutil
的限制.
以下为使用S3桶的示例:
apiVersion: v1
kind: Secret
metadata:
name: tekton-storage
namespace: tekton-pipelines
type: kubernetes.io/opaque
stringData:
boto-config: |
[Credentials]
aws_access_key_id = AWS_ACCESS_KEY_ID
aws_secret_access_key = AWS_SECRET_ACCESS_KEY
[s3]
host = s3.us-east-1.amazonaws.com
[Boto]
https_validate_certificates = True
---
apiVersion: v1
kind: ConfigMap
metadata:
name: config-artifact-bucket
namespace: tekton-pipelines
data:
location: s3://mybucket
bucket.service.account.secret.name: tekton-storage
bucket.service.account.secret.key: boto-config
bucket.service.account.field.name: BOTO_CONFIG
以下为使用GCS桶的示例:
apiVersion: v1
kind: Secret
metadata:
name: tekton-storage
namespace: tekton-pipelines
type: kubernetes.io/opaque
stringData:
gcs-config: |
{
"type": "service_account",
"project_id": "gproject",
"private_key_id": "some-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\nME[...]dF=\n-----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "1234567890",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/tekton-storage%40gproject.iam.gserviceaccount.com"
}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: config-artifact-bucket
namespace: tekton-pipelines
data:
location: gs://mybucket
bucket.service.account.secret.name: tekton-storage
bucket.service.account.secret.key: gcs-config
bucket.service.account.field.name: GOOGLE_APPLICATION_CREDENTIALS
你可以自定义Tekton管道运行TaskRun
及 PipelineRun
时所用的服务账号 (ServiceAccount
), 超时时间 (Timeout
), 以及Pod模板 (PodTemplate
) , 要自定义这些值,可直接修改配置文件 config-defaults
。
以下示例将自定义:
- 默认服务账号从
default
修改为tekton
. - 默认超时时间从60 分钟修改为 20 分钟.
- 为所有由执行
TaskRuns
的Pod附加统一的app.kubernetes.io/managed-by
标签. - 为默认的Pod模板添加一个节点选择器.
更多信息, 请参考
TaskRuns
中的PodTemplate
或者PipelineRuns
中的PodTemplate
.
apiVersion: v1
kind: ConfigMap
metadata:
name: config-defaults
data:
default-service-account: "tekton"
default-timeout-minutes: "20"
default-pod-template: |
nodeSelector:
kops.k8s.io/instancegroup: build-instance-group
default-managed-by-label-value: "my-tekton-installation"
注意: 由config-defaults.yaml提供的_example
键
的内容示例都可由你来自定义。
要自定义管道控制器的行为,可修改配置文件 feature-flags
:
-
disable-home-env-overwrite
- 设置此标记为true
,如果你想阻止Tekton执行步骤时覆盖你的$HOME环境变量, 默认为false
, 更多信息请参考 相关issue. -
disable-working-directory-overwrite
- 设置此标记为true
,如果你想阻止Tekton执行步骤时覆盖你的工作区目录,默认为false
,这将允许Tekton在执行每一个步骤时将工作目录设置为/workspace
. 更多信息请参考 相关issue.
例如:
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-flags
data:
disable-home-env-overwrite: "true" # Tekton will not override the $HOME variable for individual Steps.
disable-working-directory-overwrite: "true" # Tekton will not override the working directory for individual Steps.
你可以创建Tekton管道的自定义发布版本,参考以下步骤 创建一个正式发布. 例如, 你可能需要自定义Tekton管道所使用的容器镜像。
开始使用Tekton管道, 参考Tekton管道手册 以及查看我们的 示例.
除非另有说明,本页内容采用Creative Commons Attribution 4.0 License授权协议,示例代码采用Apache 2.0 License授权协议