Skip to content

Latest commit

 

History

History
132 lines (100 loc) · 3.34 KB

README.md

File metadata and controls

132 lines (100 loc) · 3.34 KB

EOEPCA ArgoCD App-of-apps

Initial ArgoCD Provisioning (manual)

Note that this should not be needed, assuming that ArgoCD is installed directly via pulumi.

Create argocd namespace...

kubectl create namespace argocd

Install ArgoCD from latest stable release...

curl -JLs -o argocd.yaml https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml \
  && kubectl apply -n argocd -f argocd.yaml

Deploy Ingress for ArgoCD...

kubectl apply -f argocd-ingress.yaml

Retrieve intial admin password...

argocd admin initial-password -n argocd

Login as admin...

argocd login argocd.<domain>
  # Username: admin
  # Password: <initial-password>

Update admin password...

argocd account update-password  # pattern ^.{8,32}$

Login

Login to argocd...

argocd login argocd.<domain>

Supply credentials of an admin user...

  Username: admin
  Password: <admin-password>

Project

Create eoepca argocd project...

argocd proj create eoepca -f https://raw.githubusercontent.com/EOEPCA/eoepca-plus/deploy-develop/argocd/project.yaml

App-of-apps

The deployment is bootstrapped from the eoepca app-of-apps, which is defined as a Kustomization in the argocd/ directory. The kustomization.yaml in turn brings in the various components of the full system deployment - each of which is defined as an ArgoCD Application - comprising building blocks and infrastructure components on which they depend.

The app--of-apps deployment is triggered using...

argocd app create eoepca \
  --project eoepca \
  --dest-namespace argocd \
  --dest-server https://kubernetes.default.svc \
  --repo https://github.com/EOEPCA/eoepca-plus \
  --path argocd \
  --revision deploy-develop \
  --sync-policy automated \
  --auto-prune \
  --self-heal \
  --allow-empty

Which results in the following Application CRD in the argocd namespace...

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: eoepca
  namespace: argocd
spec:
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: eoepca
  source:
    path: argocd
    repoURL: https://github.com/EOEPCA/eoepca-plus
    targetRevision: deploy-develop
  syncPolicy:
    automated:
      allowEmpty: true
      prune: true
      selfHeal: true

Organisation of Applications

The Applications are organised under broad groupings...

  • eoepca
    EOEPCA+ building blocks
    Can be organised into subdirectories, as required, for convenience.
    The deploy of zoo-dru as an ArgoCD Application provides an example of a helm chart deployment with the values being provided through multiple dedicated values files. See the Zoo-DRU deployment README.
  • infra
    Services that support the building blocks, including...
    • Sealed Secrets
      Secure management of k8s secrets in git
    • Minio
      S3-compatible Object Storage
      See minio deployment README for details of the deployment of this composite Application. This provides an example of an approach to wrap a more complex service deployment into a self-contained ArgoCD Application.
    • Harbor
      Container registry
  • test
    Resources used for testing/debugging - such as the dummy service