# 从 `Alauda DevOps Tekton v3` 迁移到 `Alauda DevOps Pipelines` (v4) :::tip * 本文档中,`v3` 指代 `Tekton Operator` 或 `Alauda DevOps Tekton v3`,`v4` 指代 `Alauda DevOps Pipelines`。 ::: :::note * **本指南专门针对从 `v3` 迁移到 `v4`。** 若需升级 `v4` 版本之间,请参考 Pipelines 升级文档。 ::: 本指南提供了从 `v3` 平滑迁移到 `v4` 的详细步骤。升级过程设计为无缝迁移,确保您现有的 `CI/CD` 流水线不受影响。 ## 迁移步骤 ### 1. 卸载现有 Tekton Pipeline 实例和 `Alauda DevOps Tekton v3` 开始升级前,您需要卸载现有的 Tekton 组件。请按以下步骤操作: > **重要提示:** 卸载过程不会影响您现有的 Task、TaskRun、Pipeline 和 PipelineRun 资源。这些资源在升级完成后将保持不变。 1. **删除 Pipeline 实例** ```bash $ kubectl delete tektonpipelines.operator.tekton.dev pipeline ``` 2. **确认 Pipeline 实例已删除** ```bash $ kubectl get tektonpipelines.operator.tekton.dev pipeline ``` 确认命令无资源返回,表示删除成功。 3. **卸载 Tekton Operator** ```bash $ kubectl delete subscriptions.operators.coreos.com tekton-operator -n tekton-operator ``` 4. **确认 Operator 已卸载** ```bash $ kubectl get subscriptions.operators.coreos.com -A | grep tekton ``` 确认命令无结果返回,表示卸载成功。 ### 2. 部署 `Alauda DevOps Pipelines` (v4) 1. 进入您的集群的 `Administrator` -> `Application Market Management` -> `OperatorHub` 页面 2. 搜索并选择 **Alauda DevOps Pipelines** 3. 选择合适的 Channel :::warning * **只能选择 `pipelines-4.0` Channel 中的版本进行安装。** 因为其他 Channel 中的 Pipeline 组件版本较高,可能与原有 `CI/CD` 系统不兼容。 ::: 4. 按照页面提示完成部署 5. **等待 `Alauda DevOps Pipelines` Operator 就绪** `Alauda DevOps Pipelines` Operator 部署完成后,会自动部署相关组件如 `Pipelines`。您可以使用以下命令检查组件状态: ```bash $ kubectl get tektonconfigs.operator.tekton.dev config $ kubectl get tektonpipelines.operator.tekton.dev pipeline ``` 等待两个资源状态均显示为 `Ready` 后,再继续下一步。 :::note * 如果您之前仅在 `Alauda Container Platform Builds` 中使用过 `Tekton`,可以跳过以下步骤,直接使用 `Alauda DevOps Pipelines` 的默认配置。 ::: ### 3. 配置 TektonConfig :::note * 如果您之前仅在 `Alauda Container Platform Builds` 中使用过 `Tekton`,可以跳过以下步骤,直接使用 `Alauda DevOps Pipelines` 的默认配置。 ::: 在 Alauda DevOps Pipelines Operator 部署完成后,您需要配置 `TektonConfig` 资源,以确保与现有系统兼容: > **最佳实践:** 建议仅修改 `spec.pipeline` 部分配置,以保持系统稳定。 ```yaml apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: await-sidecar-readiness: true disable-creds-init: false enable-bundles-resolver: true enable-cluster-resolver: true enable-custom-tasks: true enable-git-resolver: true enable-hub-resolver: true enable-provenance-in-status: true enable-step-actions: true enforce-nonfalsifiability: none keep-pod-on-cancel: false metrics.count.enable-reason: false metrics.pipelinerun.duration-type: histogram metrics.pipelinerun.level: pipeline metrics.taskrun.duration-type: histogram metrics.taskrun.level: task performance: disable-ha: false require-git-ssh-secret-known-hosts: false running-in-environment-with-injected-sidecars: true send-cloudevents-for-runs: false set-security-context: false trusted-resources-verification-no-match-policy: ignore # Tekton Operator 兼容性配置 coschedule: workspaces disable-affinity-assistant: true enable-api-fields: alpha enable-cel-in-whenexpression: true enable-param-enum: true max-result-size: 8192 results-from: sidecar-logs options: disabled: false configMaps: # 修改默认配置:init 容器配额、runAsUser、镜像拉取超时 config-defaults: data: # 容器配置 default-imagepullbackoff-timeout: 5m default-pod-template: | securityContext: runAsUser: 0 # 资源配额配置 default-container-resource-requirements: | place-scripts: # 更新 'place-scripts' 容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" cpu: "100m" prepare: # 更新 'prepare' 容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "256Mi" cpu: "100m" working-dir-initializer: # 更新 'working-dir-initializer' 容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "512Mi" cpu: "100m" prefix-scripts: # 更新以 'scripts-' 开头容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" cpu: "100m" prefix-sidecar-scripts: # 更新以 'sidecar-scripts-' 开头容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" cpu: "100m" sidecar-tekton-log-results: # 更新 'sidecar-tekton-log-results' 容器资源请求和限制 requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" cpu: "100m" addon: {} chain: artifacts.oci.format: simplesigning artifacts.oci.storage: oci artifacts.pipelinerun.format: in-toto artifacts.pipelinerun.storage: oci artifacts.taskrun.format: in-toto artifacts.taskrun.storage: oci disabled: false options: {} config: {} dashboard: options: {} readonly: false hub: options: {} platforms: openshift: {} profile: all pruner: disabled: false keep: 100 resources: - pipelinerun schedule: 0 8 * * * targetNamespace: tekton-pipelines trigger: enable-api-fields: stable options: {} ``` ### 4. 配置日志访问权限 :::note * 如果您之前仅在 `Alauda Container Platform Builds` 中使用过 `Tekton`,可以跳过以下步骤,直接使用 `Alauda DevOps Pipelines` 的默认配置。 ::: 由于启用了 `results-from: sidecar-logs` 功能,您需要为 controller 配置日志访问权限: > **技术说明:** 此配置允许 controller 从 Pod 日志中获取结果信息。详细信息请参考 [Tekton 官方文档](https://github.com/tektoncd/pipeline/tree/main/optional_config/enable-log-access-to-controller)。 ```bash kubectl apply -f - <