Skip to content

feat(system+ci): add Istio/Argo CD system stack and CI - #4

Merged
vitramir merged 3 commits into
mainfrom
feature/system-stack-and-ci
Feb 24, 2026
Merged

feat(system+ci): add Istio/Argo CD system stack and CI#4
vitramir merged 3 commits into
mainfrom
feature/system-stack-and-ci

Conversation

@rowan-stein

Copy link
Copy Markdown
Collaborator

Implements the system stack (Istio + Argo CD) using Terraform (helm + kubernetes providers) with local backend state, and adds CI to terraform apply stacks/k8s then stacks/system in one job on PRs and main.

  • stacks/system: namespaces, Helm repos, Helm releases (istio-base, istiod, gateway, argo-cd) with pinned versions and minimal values.
  • CI: .github/workflows/bootstrap.yml to provision k3d and apply both stacks; PR runs include teardown.
  • Defaults require no manual variable setting; system stack uses conventional kubeconfig path from k8s stack.

@rowan-stein
rowan-stein requested a review from a team as a code owner February 24, 2026 02:07

@noa-lucent noa-lucent left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the stack+CI work. I spotted a few blockers we need to sort out before this can merge.

Comment thread stacks/system/versions.tf
Comment thread stacks/system/providers.tf
Comment thread .github/workflows/bootstrap.yml Outdated
@casey-brooks

Copy link
Copy Markdown
Contributor

Local Validation

  • terraform fmt -recursive
  • terraform -chdir=stacks/k8s validate
  • terraform -chdir=stacks/k8s plan (add=2, change=0, destroy=0)
  • TF_VAR_kubeconfig_path=../k8s/.kube/agyn-local-kubeconfig.yaml terraform -chdir=stacks/system validate
  • TF_VAR_kubeconfig_path=../k8s/.kube/agyn-local-kubeconfig.yaml terraform -chdir=stacks/system plan (add=7, change=0, destroy=0)

All commands completed successfully.

noa-lucent
noa-lucent previously approved these changes Feb 24, 2026

@noa-lucent noa-lucent left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything looks good now—thanks for addressing the provider wiring and CI teardown strictly.

Comment thread .github/workflows/bootstrap.yml Outdated
- name: Apply system stack (Istio + Argo CD)
working-directory: stacks/system
env:
TF_VAR_kubeconfig_path: "../k8s/.kube/agyn-local-kubeconfig.yaml"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make this default value? So if we apply all stacks one by one without customization there is no need to provide values manually?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acknowledged. We’ll remove the TF_VAR override and rely on the system stack’s default kubeconfig_path so no manual values are needed during sequential applies. Casey will push the CI update shortly.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropped the TF_VAR_kubeconfig_path env override from the CI workflow so the system stack now uses its default value. Verified via terraform plan that both stacks run cleanly without setting variables manually.

@casey-brooks

Copy link
Copy Markdown
Contributor

Local Validation

  • terraform fmt -recursive
  • terraform -chdir=stacks/k8s init
  • terraform -chdir=stacks/k8s validate
  • terraform -chdir=stacks/k8s plan (add=2, change=0, destroy=0)
  • terraform -chdir=stacks/system init
  • terraform -chdir=stacks/system validate
  • terraform -chdir=stacks/system plan (add=7, change=0, destroy=0)

Plans run with the system stack's default kubeconfig_path to confirm no manual variable input is required.

@vitramir
vitramir merged commit 4ef99e2 into main Feb 24, 2026
1 check passed
@casey-brooks

Copy link
Copy Markdown
Contributor

Follow-up for the admin credential seeding is tracked in #5 since this PR was already merged. That change configures the Argo CD Helm chart to ship with the admin:admin bcrypt hash by default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants