Compare commits

..

5 Commits

Author SHA1 Message Date
XoR
01623cb260 fix: rename traefik-dashboard → traefik-dashboard-https
Avoids race condition with k3s built-in Traefik Helm chart which
creates its own 'traefik-dashboard' IngressRoute. Both charts tried
to own the same resource name, causing Helm install failure when
ArgoCD created it first.
2026-03-11 20:16:01 +03:00
XoR
4d8ebf96df Revert "fix: remove traefik-dashboard IngressRoute (conflicts with k3s built-in Traefik Helm chart)"
This reverts commit a2d0682168.
2026-03-11 20:10:08 +03:00
XoR
a2d0682168 fix: remove traefik-dashboard IngressRoute (conflicts with k3s built-in Traefik Helm chart)
The built-in k3s Traefik Helm chart creates its own traefik-dashboard
IngressRoute. Our ArgoCD-managed copy blocked Helm install because
Helm requires ownership labels (app.kubernetes.io/managed-by=Helm).

Removing our copy lets the built-in chart manage the dashboard route.
2026-03-11 20:04:55 +03:00
deploy-k3s
77831d73a9 fix: traefik-routes path after bootstrap move
Path was still infra/traefik-routes/manifests, but files moved to
bootstrap/traefik-routes/manifests in the restructuring.
2026-03-11 15:47:35 +03:00
deploy-k3s
f640de781d refactor: bootstrap/infra/ci separation (#27)
- Create bootstrap/ dir: cert-manager, traefik-routes, argo-rollouts,
  kargo, kargo-*-pipeline (not managed by Kargo promotion)
- infra/ now only: gitea, gitea-custom (promoted by Kargo)
- ci/ unchanged: gitea-runner (promoted by Kargo)
- Split kargo/credentials/ into dev/ and prod/ with separate ksops generators
- Remove kargo-credentials from AppSet (managed by Pulumi Go code)
- Update infra Warehouse: only gitea (was also argo-rollouts, cert-manager)
- Update infra Stage dev: only yaml-update for gitea version
- Fix test-env warehouse: valid subscription instead of empty array
- Update step numbers: bootstrap 1-5, infra 1-2
2026-03-11 13:18:22 +03:00
34 changed files with 37 additions and 67 deletions

View File

@@ -1,11 +1,11 @@
{ {
"name": "argo-rollouts", "name": "argo-rollouts",
"namespace": "argo-rollouts", "namespace": "argo-rollouts",
"step": "2", "step": "3",
"source": { "source": {
"repoURL": "https://argoproj.github.io/argo-helm", "repoURL": "https://argoproj.github.io/argo-helm",
"chart": "argo-rollouts", "chart": "argo-rollouts",
"targetRevision": 2.40.6 "targetRevision": "2.40.6"
}, },
"helm": { "helm": {
"values": "dashboard:\n enabled: true\n" "values": "dashboard:\n enabled: true\n"

View File

@@ -5,7 +5,7 @@
"source": { "source": {
"repoURL": "https://charts.jetstack.io", "repoURL": "https://charts.jetstack.io",
"chart": "cert-manager", "chart": "cert-manager",
"targetRevision": v1.19.4 "targetRevision": "v1.19.4"
}, },
"helm": { "helm": {
"values": "crds:\n enabled: true\n" "values": "crds:\n enabled: true\n"

View File

@@ -1,10 +1,10 @@
{ {
"name": "traefik-routes", "name": "traefik-routes",
"namespace": "kube-system", "namespace": "kube-system",
"step": "3", "step": "2",
"source": { "source": {
"repoURL": "https://github.com/Kargones/deploy-app-kargo-private.git", "repoURL": "https://github.com/Kargones/deploy-app-kargo-private.git",
"path": "infra/traefik-routes/manifests", "path": "bootstrap/traefik-routes/manifests",
"targetRevision": "main" "targetRevision": "main"
} }
} }

View File

@@ -1,8 +1,11 @@
# Traefik Dashboard IngressRoute # Traefik Dashboard IngressRoute (HTTPS access)
# Named traefik-dashboard-https to avoid conflict with k3s built-in
# Traefik Helm chart which creates its own "traefik-dashboard" IngressRoute
# on the internal "traefik" entrypoint (port 9000).
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
name: traefik-dashboard name: traefik-dashboard-https
namespace: kube-system namespace: kube-system
spec: spec:
entryPoints: entryPoints:

View File

@@ -1,7 +1,7 @@
{ {
"name": "gitea-custom", "name": "gitea-custom",
"namespace": "gitea", "namespace": "gitea",
"step": "6", "step": "2",
"source": { "source": {
"repoURL": "https://github.com/Kargones/deploy-app-kargo-private.git", "repoURL": "https://github.com/Kargones/deploy-app-kargo-private.git",
"path": "infra/gitea-custom/manifests", "path": "infra/gitea-custom/manifests",

View File

@@ -1,7 +1,7 @@
{ {
"name": "gitea", "name": "gitea",
"namespace": "gitea", "namespace": "gitea",
"step": "4", "step": "1",
"source": { "source": {
"repoURL": "https://dl.gitea.com/charts", "repoURL": "https://dl.gitea.com/charts",
"chart": "gitea", "chart": "gitea",

View File

@@ -1,10 +0,0 @@
{
"name": "kargo-credentials",
"namespace": "default",
"step": "5",
"source": {
"repoURL": "https://github.com/Kargones/deploy-app-kargo-private.git",
"path": "kargo/credentials",
"targetRevision": "main"
}
}

View File

@@ -0,0 +1,12 @@
apiVersion: viaduct.ai/v1
kind: ksops
metadata:
name: kargo-git-credentials
annotations:
config.kubernetes.io/function: |
exec:
path: ksops
files:
- git-creds-infra.dev.enc.yaml
- git-creds-ci.dev.enc.yaml
- git-creds-test-env.dev.enc.yaml

View File

@@ -1,20 +0,0 @@
# ksops generator: decrypts SOPS-encrypted K8s Secret manifests
# ArgoCD repo-server must have ksops + sops + age installed
#
# Dev cluster uses: *.dev.enc.yaml
# Prod cluster uses: *.prod.enc.yaml
#
# Which files to decrypt is controlled by the kustomization overlay
# in the cluster-specific branch (infra/stage/dev or infra/stage/prod)
apiVersion: viaduct.ai/v1
kind: ksops
metadata:
name: kargo-git-credentials
annotations:
config.kubernetes.io/function: |
exec:
path: ksops
files:
- git-creds-infra.dev.enc.yaml
- git-creds-ci.dev.enc.yaml
- git-creds-test-env.dev.enc.yaml

View File

@@ -1,5 +1,3 @@
# ksops generator for PROD cluster
# Replace ksops-generator.yaml on infra/stage/prod branch
apiVersion: viaduct.ai/v1 apiVersion: viaduct.ai/v1
kind: ksops kind: ksops
metadata: metadata:

View File

@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generators:
- ksops-generator.yaml

View File

@@ -30,20 +30,6 @@ spec:
- uses: git-clear - uses: git-clear
config: config:
path: ./out path: ./out
- uses: yaml-update
as: update-cert-manager
config:
path: ./src/infra/cert-manager/config.yaml
updates:
- key: source.targetRevision
value: ${{ chartFrom("https://charts.jetstack.io", "cert-manager").Version }}
- uses: yaml-update
as: update-argo-rollouts
config:
path: ./src/infra/argo-rollouts/config.yaml
updates:
- key: source.targetRevision
value: ${{ chartFrom("https://argoproj.github.io/argo-helm", "argo-rollouts").Version }}
- uses: yaml-update - uses: yaml-update
as: update-gitea as: update-gitea
config: config:

View File

@@ -5,16 +5,6 @@ metadata:
namespace: infra namespace: infra
spec: spec:
subscriptions: subscriptions:
- chart:
repoURL: https://charts.jetstack.io
name: cert-manager
semverConstraint: ">=1.17.0"
discoveryLimit: 5
- chart:
repoURL: https://argoproj.github.io/argo-helm
name: argo-rollouts
semverConstraint: ">=2.39.0"
discoveryLimit: 5
- chart: - chart:
repoURL: https://dl.gitea.com/charts repoURL: https://dl.gitea.com/charts
name: gitea name: gitea

View File

@@ -4,5 +4,11 @@ metadata:
name: test-env-images name: test-env-images
namespace: test-env namespace: test-env
spec: spec:
subscriptions: [] # Placeholder: no subscriptions yet.
# TODO: Add container image subscriptions for test services # When test services are added, subscribe to their container images here.
subscriptions:
- chart:
repoURL: https://dl.gitea.com/charts
name: gitea
semverConstraint: ">=0.0.1"
discoveryLimit: 1