fix: vendor Tekton release.yaml for proper ArgoCD management
ROOT CAUSE: - tektoncd/pipeline config/ dir uses ko:// image refs (build-time placeholders) - ArgoCD synced the raw dev manifests → InvalidImageName on all pods - tektoncd/operator requires its own CRDs and controller (too heavy) - Tekton has no official Helm chart FIX: - Vendor the pre-built release.yaml (v0.68.0) into k8s/infra/tekton/ - Point ArgoCD Application at our own repo (forgejo) - Release contains real container images (ghcr.io/tektoncd/pipeline/*) - Remove external tektoncd repo from AppProject (not needed) TO UPGRADE TEKTON: 1. Download new release from github.com/tektoncd/pipeline/releases 2. Replace k8s/infra/tekton/release.yaml 3. Commit — ArgoCD syncs automatically
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
# Tekton Pipelines v0.68.0
|
||||||
|
#
|
||||||
|
# Install method: vendored release.yaml in k8s/infra/tekton/
|
||||||
|
# downloaded from https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.68.0/release.yaml
|
||||||
|
#
|
||||||
|
# To upgrade:
|
||||||
|
# 1. Download new release.yaml from https://github.com/tektoncd/pipeline/releases
|
||||||
|
# 2. Replace k8s/infra/tekton/release.yaml
|
||||||
|
# 3. Commit and push — ArgoCD syncs automatically
|
||||||
apiVersion: argoproj.io/v1alpha1
|
apiVersion: argoproj.io/v1alpha1
|
||||||
kind: Application
|
kind: Application
|
||||||
metadata:
|
metadata:
|
||||||
@@ -9,42 +18,38 @@ metadata:
|
|||||||
wave: "06"
|
wave: "06"
|
||||||
spec:
|
spec:
|
||||||
project: homelab
|
project: homelab
|
||||||
|
|
||||||
source:
|
source:
|
||||||
# tektoncd/operator is the official Kubernetes Operator for Tekton
|
repoURL: https://forgejo.riotpiao.com/riotpiao-poimen/homelab.git
|
||||||
# It manages the lifecycle of Tekton Pipelines installation
|
|
||||||
# Source: https://github.com/tektoncd/operator
|
|
||||||
repoURL: https://github.com/tektoncd/operator.git
|
|
||||||
targetRevision: main
|
targetRevision: main
|
||||||
# The operator's config directory contains the latest release manifests
|
path: k8s/infra/tekton
|
||||||
path: config/install
|
|
||||||
|
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: tekton-pipelines
|
namespace: tekton-pipelines
|
||||||
|
|
||||||
syncPolicy:
|
syncPolicy:
|
||||||
automated:
|
automated:
|
||||||
prune: true
|
prune: true
|
||||||
selfHeal: true
|
selfHeal: true
|
||||||
syncOptions:
|
syncOptions:
|
||||||
- CreateNamespace=true
|
- CreateNamespace=true
|
||||||
- Validate=false
|
- ServerSideApply=true
|
||||||
- RespectIgnoreDifferences=true
|
|
||||||
retry:
|
retry:
|
||||||
limit: 5
|
limit: 5
|
||||||
backoff:
|
backoff:
|
||||||
duration: 5s
|
duration: 5s
|
||||||
factor: 2
|
factor: 2
|
||||||
maxDuration: 3m
|
maxDuration: 3m
|
||||||
|
|
||||||
ignoreDifferences:
|
ignoreDifferences:
|
||||||
# Ignore webhook certificate changes (managed by cert-manager)
|
|
||||||
- group: admissionregistration.k8s.io
|
- group: admissionregistration.k8s.io
|
||||||
kind: ValidatingWebhookConfiguration
|
kind: ValidatingWebhookConfiguration
|
||||||
jsonPointers:
|
jsonPointers:
|
||||||
- /webhooks/0/clientConfig/caBundle
|
- /webhooks/0/clientConfig/caBundle
|
||||||
|
- /webhooks
|
||||||
- group: admissionregistration.k8s.io
|
- group: admissionregistration.k8s.io
|
||||||
kind: MutatingWebhookConfiguration
|
kind: MutatingWebhookConfiguration
|
||||||
jsonPointers:
|
jsonPointers:
|
||||||
- /webhooks/0/clientConfig/caBundle
|
- /webhooks/0/clientConfig/caBundle
|
||||||
|
- /webhooks
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ spec:
|
|||||||
- https://stakater.github.io/stakater-charts
|
- https://stakater.github.io/stakater-charts
|
||||||
# ArgoCD ecosystem charts
|
# ArgoCD ecosystem charts
|
||||||
- https://argoproj.github.io/argo-helm
|
- https://argoproj.github.io/argo-helm
|
||||||
# Tekton Pipelines (CNCF CI/CD) — uses tektoncd/operator
|
|
||||||
- https://github.com/tektoncd/operator.git
|
|
||||||
destinations:
|
destinations:
|
||||||
- server: https://kubernetes.default.svc
|
- server: https://kubernetes.default.svc
|
||||||
namespace: "*"
|
namespace: "*"
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: tekton-pipelines
|
|
||||||
namespace: argocd
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: tekton-pipelines
|
|
||||||
app.kubernetes.io/part-of: homelab-infra
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
|
|
||||||
source:
|
|
||||||
repoURL: https://github.com/tektoncd/pipeline.git
|
|
||||||
targetRevision: main
|
|
||||||
path: config/release
|
|
||||||
|
|
||||||
destination:
|
|
||||||
server: https://kubernetes.default.svc
|
|
||||||
namespace: tekton-pipelines
|
|
||||||
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
||||||
- Validate=false
|
|
||||||
- RespectIgnoreDifferences=true
|
|
||||||
retry:
|
|
||||||
limit: 5
|
|
||||||
backoff:
|
|
||||||
duration: 5s
|
|
||||||
factor: 2
|
|
||||||
maxDuration: 3m
|
|
||||||
|
|
||||||
ignoreDifferences:
|
|
||||||
# Ignore webhook certificate changes
|
|
||||||
- group: admissionregistration.k8s.io
|
|
||||||
kind: ValidatingWebhookConfiguration
|
|
||||||
jsonPointers:
|
|
||||||
- /webhooks/0/clientConfig/caBundle
|
|
||||||
- group: admissionregistration.k8s.io
|
|
||||||
kind: MutatingWebhookConfiguration
|
|
||||||
jsonPointers:
|
|
||||||
- /webhooks/0/clientConfig/caBundle
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
metadata:
|
|
||||||
name: tekton-pipelines
|
|
||||||
|
|
||||||
# Tekton release includes CRDs, RBAC, controllers, webhook
|
|
||||||
# We use a remote base to stay on the latest stable release
|
|
||||||
bases:
|
|
||||||
- https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml?ref=main
|
|
||||||
|
|
||||||
# Add our local namespace override
|
|
||||||
resources:
|
|
||||||
- namespace.yaml
|
|
||||||
|
|
||||||
# Common labels for all resources
|
|
||||||
commonLabels:
|
|
||||||
app: tekton
|
|
||||||
component: pipelines
|
|
||||||
managed-by: argocd
|
|
||||||
|
|
||||||
# Don't transform namespace - let the release define its own
|
|
||||||
# namespace: tekton-pipelines
|
|
||||||
|
|
||||||
patches:
|
|
||||||
# Ensure webhook is properly configured for validation
|
|
||||||
- target:
|
|
||||||
kind: ValidatingWebhookConfiguration
|
|
||||||
name: validation.webhook.pipeline.tekton.dev
|
|
||||||
patch: |-
|
|
||||||
- op: replace
|
|
||||||
path: /webhooks/0/failurePolicy
|
|
||||||
value: Fail
|
|
||||||
# Ensure mutation webhook is properly configured
|
|
||||||
- target:
|
|
||||||
kind: MutatingWebhookConfiguration
|
|
||||||
name: webhook.pipeline.tekton.dev
|
|
||||||
patch: |-
|
|
||||||
- op: replace
|
|
||||||
path: /webhooks/0/failurePolicy
|
|
||||||
value: Fail
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: tekton-pipelines
|
|
||||||
labels:
|
|
||||||
name: tekton-pipelines
|
|
||||||
managed-by: argocd
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user