我正在阅读有关身份验证的 tekton文档,它解释了进行身份验证需要两件事
创建一个秘密文档,下面给出示例
apiVersion: v1
kind: Secret
metadata:
name: basic-user-pass
annotations:
tekton.dev/git-0: https://github.com # Described below
type: kubernetes.io/basic-auth
stringData:
username: <username>
password: <password>
Run Code Online (Sandbox Code Playgroud)
将秘密对象添加到服务帐户
apiVersion: v1
kind: ServiceAccount
metadata:
name: build-bot
secrets:
- name: basic-user-pass
Run Code Online (Sandbox Code Playgroud)
我对 k8s 中服务帐户的心理模型是,它是用于访问 k8s API 服务器的 JWT。我不明白向 ServiceAccount 添加秘密有什么意义,如何以及为什么使用它。
问题:
因此,Tekton Pipelines允许您创建单独的任务并将它们连接到云原生 ci/cd 管道中。它太酷了。但正如你所想象的那样,你认为很简单的事情其实很棘手。例如,我试图将 Kaniko 执行程序作为任务运行,但该执行程序需要特定参数。我可以对这些 args 进行硬编码,但这会降低任务的可重用性,因此我希望之前的任务只是从源和输出读取配置文件,或者为后续任务设置 env 变量。不知道如何做到这一点。就 Kaniko 而言,它真的很棘手,因为您没有任何外壳或任何东西。有什么建议?
这是他们文档中的一个示例任务,我对其进行了调整以显示我正在尝试做的事情。
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: example-task-name
spec:
inputs:
resources:
- name: workspace
type: git
params:
- name: pathToDockerFile
type: string
description: The path to the dockerfile to build
default: /workspace/workspace/Dockerfile
outputs:
resources:
- name: builtImage
type: image
steps:
- name: ubuntu-example
image: ubuntu
args: "export FOO=bar"
- image: gcr.io/example-builders/build-example
command: ["echo $FOO"]
Run Code Online (Sandbox Code Playgroud) 我有 2 个TektonPipeline和A. B我想B在管道A完成时触发管道的执行。
我当前的解决方法是Task在管道末尾A将 REST 请求发送到 Tekton EventListener(这已经是我系统的一部分,因为管道A从 GitLab 构建代码,所以它监听 GitLab 事件)。所以我只是屏蔽我的请求,就好像它来自 GitLab 并B触发了管道一样。
我想知道这里是否有更好的方法?我知道管道内的管道功能,但似乎一个管道中的步骤将包含到另一个管道中,这不是我想要的。
提前致谢!
我有一个我想要的管道:
我希望在第 3 步中的拆卸任务在第 2 步中运行,而不管测试是通过还是失败。据我所知,如果前一个任务成功,runAfter只会运行一个任务。
我尝试查看Condition,但似乎找不到示例...
我可以使用的其他任何东西或有人可以指出我的一些例子吗?
jenkins-pipeline tekton tekton-pipelines openshift-pipelines
我们的端到端测试基于 maven/CucumberJVM。所有工件均使用 Jenkins 构建并保存在 Artifactory 中。那么 tekton 应该适用于一个(或多个)环境
我将如何显示测试运行的结果?在 Tekton 仪表板中?已经有插件了吗?作为测试运行的结果,是否可以显示静态 html 文件?
提前感谢您的任何提示。最好的问候,英戈
我是 devops 的新手,正在阅读有关此的 openshift 文档。似乎构建配置和管道(openshift 4.6 中的 tekton)都可以实现源到图像的过程并由 git webhooks 触发。那么openshift buildconfig 和pipeline 有什么区别呢?
PS:刚刚完成了openshift上的pipeline教程,整个过程没有创建build或buildconfig资源。
我们有一个正在运行的 AWS EKS(使用 Pulumi 设置),我们在其中安装了 Tekton,如云原生 Buildpacks Tekton 文档中所述。示例项目可用。
我们的 Tekton 管道配置如下(也源自Cloud Native Buildpacks Tekton 文档):
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: buildpacks-test-pipeline
spec:
params:
- name: IMAGE
type: string
description: image URL to push
- name: SOURCE_URL
type: string
description: A git repo url where the source code resides.
- name: SOURCE_REVISION
description: The branch, tag or SHA to checkout.
default: ""
workspaces:
- name: source-workspace # Directory where application source is located. …Run Code Online (Sandbox Code Playgroud) 从我们的 Tekton 管道中,我们希望使用 ArgoCD CLI 来动态argocd app create地argocd app sync基于所构建的应用程序。我们通过向ConfigMap添加 a 来创建一个新用户,如文档中所述:accounts.tekton: apiKeyargocd-cm
kubectl patch configmap argocd-cm -n argocd -p '{"data": {"accounts.tekton": "apiKey"}}'
Run Code Online (Sandbox Code Playgroud)
然后我们为tekton用户创建了一个令牌:
argocd account generate-token --account tekton
Run Code Online (Sandbox Code Playgroud)
将此令牌作为 the password,username tekton我们做了argocd login类似的事情
argocd login $(kubectl get service argocd-server -n argocd --output=jsonpath='{.status.loadBalancer.ingress[0].hostname}') --username=tekton --password="$TOKEN";
Run Code Online (Sandbox Code Playgroud)
现在,在我们的 Tekton 管道中(但我们猜测,考虑到非管理员用户的使用,这对于所有其他 CI 来说都是相同的),如果我们运行,我们会收到以下错误argocd app create:
$ argocd app create microservice-api-spring-boot --repo https://gitlab.com/jonashackt/microservice-api-spring-boot-config.git --path deployment --dest-server https://kubernetes.default.svc …Run Code Online (Sandbox Code Playgroud) tekton ×8
kubernetes ×3
amazon-eks ×1
argocd ×1
dashboard ×1
devops ×1
e2e-testing ×1
gitlab ×1
gitlab-ci ×1
gitops ×1
openshift ×1