Infrastructure Services

Core infrastructure applications: Atlantis, Dex, CoreDNS, Webhooks, and Docs Portal

The infra-services-apps.yaml file defines multiple Applications for core infrastructure services running on the Infra Management Cluster.

ArgoCD Resources

ApplicationNamespacePurpose
infra-docs-portalargocdInfrastructure documentation site
atlantisargocdTerraform PR automation
webhooksargocdGeneric webhook handler
miscargocdMiscellaneous cluster resources
dexargocdOIDC identity provider
corednsargocdCustom DNS for private zones

File Path: k8s/infra-services/argocd/overlays/infra-platform-cluster/apps/infra-services-apps.yaml

Source Structure

Each application has its own manifest directory:

k8s/infra-services/
├── infra-docs-portal/           # Documentation site
├── atlantis/                    # Terraform automation
├── webhooks/                    # Webhook handler
├── cluster-init/                # Cluster bootstrap resources
│   └── overlays/
│       └── infra-mgmt/          # Misc resources for infra-mgmt
├── dex/                         # OIDC provider
└── coredns/                     # Custom DNS

Applications

Infra Docs Portal

The internal infrastructure documentation portal (this site).

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: infra-docs-portal
  annotations:
    argocd-image-updater.argoproj.io/image-list: docs=europe-west1-docker.pkg.dev/tb-infra-management-395208/infra/docs:latest
    argocd-image-updater.argoproj.io/docs.update-strategy: digest
spec:
  syncPolicy:
    automated:
      prune: true
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/infra-docs-portal
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Features:

  • Auto image updates via ArgoCD Image Updater
  • Digest-based update strategy for latest tag

Manifests: k8s/infra-services/infra-docs-portal/

Atlantis

Terraform PR automation for infrastructure changes.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: atlantis
spec:
  syncPolicy:
    automated:
      prune: true
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/atlantis
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Manifests: k8s/infra-services/atlantis/

Webhooks

Generic webhook handler for various integrations.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: webhooks
  annotations:
    argocd-image-updater.argoproj.io/image-list: webhooks=europe-west1-docker.pkg.dev/tb-infra-management-395208/infra/webhooks:latest
    argocd-image-updater.argoproj.io/webhooks.update-strategy: digest
spec:
  syncPolicy:
    automated:
      prune: true
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/webhooks
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Features:

  • Auto image updates via ArgoCD Image Updater

Manifests: k8s/infra-services/webhooks/

Misc (Cluster Init)

Miscellaneous resources for other apps and services, including cluster bootstrap resources.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: misc
spec:
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/cluster-init/overlays/infra-mgmt
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Note: No automated sync - changes require manual sync.

Manifests: k8s/infra-services/cluster-init/overlays/infra-mgmt/

Dex

Shared OIDC identity provider for ArgoCD instances and other tools.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: dex
spec:
  syncPolicy:
    automated:
      prune: true
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/dex
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Manifests: k8s/infra-services/dex/

CoreDNS

Custom CoreDNS instance for private DNS zones.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: coredns
  annotations:
    argocd-image-updater.argoproj.io/image-list: coredns=europe-west1-docker.pkg.dev/tb-infra-mgmt-gke-prod-uk-40fd/tb-infra/coredns-sql:latest
    argocd-image-updater.argoproj.io/coredns.update-strategy: digest
spec:
  syncPolicy:
    automated:
      prune: true
    syncOptions:
      - CreateNamespace=true
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: infra-services
  source:
    path: k8s/infra-services/coredns
    repoURL: https://github.com/Titanbay/infra-services
    targetRevision: 'main'

Features:

  • Custom CoreDNS with SQL backend
  • Auto image updates

Manifests: k8s/infra-services/coredns/

How to Update

Modifying Service Configuration

  1. Edit manifests in the service’s directory (e.g., k8s/infra-services/atlantis/)
  2. Commit and push to main
  3. ArgoCD auto-syncs the changes

Adding a New Service

  1. Create the service manifests in k8s/infra-services/<service-name>/
  2. Add an Application definition to infra-services-apps.yaml or create a new file
  3. If creating a new file, add it to apps/kustomization.yaml
  4. Commit and push to main
DirectoryPurpose
k8s/infra-services/infra-docs-portal/Docs portal deployment
k8s/infra-services/atlantis/Atlantis deployment
k8s/infra-services/webhooks/Webhooks service
k8s/infra-services/cluster-init/Cluster bootstrap resources
k8s/infra-services/dex/Dex OIDC provider
k8s/infra-services/coredns/Custom CoreDNS