Zurück zum Hub

cargo.ayedo.cloud/ayedo/k8s/argo-cd

Registry-Block

polycrate block pull cargo.ayedo.cloud/ayedo/k8s/argo-cd:0.17.7

ArgoCD Block

Installiert ArgoCD.

Patch 3.5.5 (Block 0.17.6)

Chart bleibt 10.4.0. App-Images sind v3.5.5 (global.image.tag plus Vault sidecar / copy-util).

10.4.0 / 10.4.3 / 10.5.0 pinnt Chart-seitig 3.5.1 bzw. 3.5.2. Offizielles Chart-Pairing für 3.5.5 ist 10.10.3+ (10.10.5 weiterhin appVersion v3.5.5, nicht 3.6). Kein Sprung 10.4.0 → 10.10.x nur für den Patch — gleiche Linie wie 0.17.4.

Watch

  • Images quay.io/argoproj/argocd:v3.5.5 brauchen Registry-Zugang. Vivavis: erst testen, wenn Egress steht.
  • 3.5.5: OCI-Tag-Cache, Hydrator lock-ref Retry, Repo-Server CMP Leak, symlink untar check.
  • app_version ist 3.5.5; Chart bleibt 10.4.0.

Not in this step

Kein Argo CD 3.6. Kein Helm-Chart 10.10.x. Kein argocd install als Teil dieses Releases.

Release notes: https://github.com/argoproj/argo-cd/releases/tag/v3.5.5

Endpoint-Monitoring

Bei ingress.enabled: true (oder gateway.enabled: true) schreibt der Block die Polycrate-Operator-Annotations auf das Ingress bzw. die HTTPRoute. Default an.

Key Default Bedeutung
ingress.endpoint_monitor.enabled true false lässt die Annotations weg

Probe: GET /healthz, erwarteter Status 200. polycrate_k8sapp_name ist der Block-Name.

changelog

  • x.x.x moved to CHANGELOG.poly
  • 0.8.11 fix: config.ingress.whitelisted_ips kann nun konfiguriert werden
  • 0.8.10 fix: adjusted env vars for helm
  • 0.8.9 fix: adjusted base image for vault sidecar
  • 0.8.8 fix: ajdusted security contexts and tool-download version for regpo-server to make vault-plugin work
  • 0.8.7 fix: migrated to ayedo Cloud Artifact Mirror; migrated to k8s/library based Helm install; fixed missing tpm-dir volume mount in app controller; added block.labels to helm chart values; bumped helm chart version to 7.1.10
  • 0.8.6 chore: added block.kind stanza
  • 0.8.5 Fix: metrics: true für alle Komponenten; Bump Chart to 7.1.6; VMServiceScrape + Grafana Dashboard konfigurierbar
  • 0.8.4 Fix: BREAKING CHANGE:
  • Alte installationen verwenden Redis ohne passwort, hier sollte Redis mit passwort neu installiert werden.
  • Redis Passwort block.config.redis.password muss angegeben werden, wenn block.config.redis.auth.enabled true ist. Ansonsten lässt sich argocd nicht aktualisieren.
  • 0.8.3 Fix: Image Updater Fixes:
  • Registries können nun hinzugefügt werden
  • Aktuell kann ein Secret für eine Registry hinzugefügt werden
  • Änderungen im Install, wegen Immutable Field Error
  • 0.8.2 Fix: Typo
  • 0.8.1 Fix: bitnami_resource_preset von controller auf small (vorher nano) gesetzt wegen OOM
  • 0.8.0 Feat: Chart auf 7.0.25 aktualisiert.
  • block.config.redis.auth.enabled ist im default auf false.
  • 0.7.0 Feat: Chart auf 7.0.20 aktualisiert, resources sind nun konfigurierbar
  • 0.6.0 Feat: Chart auf 6.0.0 aktualisiert
  • 0.5.0 Feat: redis und external_redis ist nun konfigurierbar, Chart auf 5.0.0 aktualisiert
  • 0.4.0 Feat: ApplicationSet ist nun aktivierbar
  • 0.3.0 Feat: Added Argo CD Image Updater
  • 0.2.2 Fix: OIDC Scopes konfigurierbar gemacht
  • 0.2.1 Fix: Ein Fehler /var/run/argocd/addregistry.sh: 5: [: helm: unexpected operator im addregistry.sh wurde behoebn.
  • 0.2.0 Feat: Lokale Benutzer, rbac-cm wird immer angelegt
  • Es können zusätzliche Benutzer angelegt werden block.config.user. Siehe Beispiel Mit ingress und zusätzlicher Benutzer. Der ingress muss eingerichtet werden, damit die Benutzer hinterlegt werden können.
  • Die ConfigMap rbac-cm wird jetzt immer angelegt. Zuvor wurde diese nur angelegt, wenn oidc aktiviert wurde.
  • 0.1.7 Fix: rbac als leere Liste definiert
  • 0.1.6 Fix: argocd-vault-plugin. grep Filter des "addregistry" Scripts korrigiert.
  • 0.1.5 Fix: ArgoCD Helm Chart wurde von 4.7.14 auf 4.8.1 aktualisiert. Ein Fehler wurde im argocd-vault-plugin behoben, bei dem es nicht möglich war eine neue App zu erstellen, wenn eine "dependency" in der Chart.yaml einen Login benötigte.
  • 0.1.4 Fix: Man kann über das Environment HELM_ARGS dem Plugin mehrere values.yaml mitgeben. Siehe: with-additional-helm-arguments. In der 0.1.3 fehlt der Fix aus 0.1.2, dieser ist in der 0.1.4 wieder integriert.
  • 0.1.3 Fix: exclusions hinzugefügt
  • 0.1.2 Fix: envsubst welches im argocd-vault-plugin verwendet wird, ersetzt nur noch Werte in der values.yaml welche mit $ARGOCD_ beginnen.
  • 0.1.1 Fix: Das argocd-vault-plugin installiert jetzt zusätzlich envsubst zum ersetzen von "Variablen" in einer Datei.
  • In ArgoCD können dem Plugin jetzt über die UI Environment Variablen mitgegeben werden (Bsp. TAG=1.2.3). (Beispiel) Wird in einer ArgoCD App ein refresh ausgeführt, werden alle vorkommen mit $ARGOCD_ENV_TAG durch 1.2.3 ersetzt (environments werden automatisch mit einem präfix ARGOCD_ENV_ versehen).
  • 0.1.0 feat: Neues Plugin argocd-vault-plugin Bei der installatio dieses Plugins, wird das vorhandene rbac aktualisiert (secrets und configMaps werden hinzugefügt. api eintrag wird geleert). Berechtigungen des repo Servers wurden von runAsUser: 65534 auf runAsUser: 999 angepasst. ArgoCD Helm Chart wurde von 4.6.1 auf 4.7.14 aktualisiert.
  • 0.0.10 fix an error with incorrect permissions on "sources" in RBAC config
  • 0.0.9 enable multiple clusters
  • 0.0.8 bump to chart 4.6.1
  • 0.0.7 added readme
  • 0.0.6 added oidc groups (rbac)

actions

install

Installiert ArgoCD

Installation mit Ingress und Exclusion für Cilium

blocks:
  - name: argocd
    from: cargo.ayedo.cloud/ayedo/k8s/argo-cd
    kubeconfig:
      from: k8s
    config:
      chart:
        auth:
          enabled: true
          username: *mirror_registry_auth_user
          password: *mirror_registry_auth_password
          registry: *mirror_registry_url
      admin_password: PaSsWoRdHeRe
      main_config:
        exclusions: |
          - apiGroups:
            - cilium.io
            kinds:
            - CiliumIdentity
            clusters:
            - "*"
      redis:
        enabled: true
        password: "secret here"
        auth:
          enabled: true
      ingress:
        enabled: true
        host: argocd.example.com
        tls:
          enabled: true
          issuer: letsencrypt-production

Mit ingress und OIDC

blocks:
  - name: argocd
    from: cargo.ayedo.cloud/ayedo/k8s/argo-cd
    kubeconfig:
      from: k8s
    config:
      chart:
        auth:
          enabled: true
          username: *mirror_registry_auth_user
          password: *mirror_registry_auth_password
          registry: *mirror_registry_url
      admin_password: PaSsWoRdHeRe
      ingress:
        enabled: true
        host: argocd.example.com
        tls:
          enabled: true
          issuer: letsencrypt-production
      redis:
        enabled: true
        password: "secret here"
        auth:
          enabled: true
      oidc:
        enabled: true
        name: "argocd"
        issuer: "https://auth.example.com/application/o/argocd/"
        client_id: "argocd_client_id"
        client_secret: "MySeCrEt-123456789"
        admin_group: "ArgoCD Admins"
        rbac:
          - group: "admin"
            role: "admin"
            project: "*"
            clusters: 
              - "*"
          - group: "dev"
            role: "dev"
            project: "*-dev"
            clusters: 
              - "*"

Mit ingress und zusätzlicher Benutzer

blocks:
  - name: argocd
    from: cargo.ayedo.cloud/ayedo/k8s/argo-cd
    kubeconfig:
      from: k8s
    config:
      chart:
        auth:
          enabled: true
          username: *mirror_registry_auth_user
          password: *mirror_registry_auth_password
          registry: *mirror_registry_url
      admin_password: PaSsWoRdHeRe
      users: # Ingress muss eingerichtet werden, ansonsten werden keine Benutzer angelegt.
        - name: franz
          password: deinpassword
          access: "apiKey,login"
          role: dev # Rolle muss in ConfigMap argocd-rbac-cm existieren
          generate_token: true # Erzeugt einen Token für diesen nutzer. In "users[].access" muss apiKey enthalten sein. Den 
        - name: bernd
          password: deinbrot
          access: "login"
          role: admin # Rolle wird im Standard ausgeliefert.
          generate_token: false
        - name: stefan
          password: ichguckenur
          access: "login"
          role: readonly # Rolle wird im Standard ausgeliefert.
          generate_token: false
      ingress:
        enabled: true
        host: argocd.example.com
        tls:
          enabled: true
          issuer: letsencrypt-production
      redis:
        enabled: true
        password: "secret here"
        auth:
          enabled: true
      oidc:
        enabled: true
        name: "argocd"
        issuer: "https://auth.example.com/application/o/argocd/"
        client_id: "argocd_client_id"
        client_secret: "MySeCrEt-123456789"
        admin_group: "ArgoCD Admins"
        rbac:
          - group: "admin"
            role: "admin"
            project: "*"
          - group: "dev"
            role: "dev"
            project: "*-dev"

Mit argocd-vault plugin

Voraussetzung ist, dass eine Hashicorp Vault installation vorhanden ist. Siehe Block Hashicorp Vault


Es können verschiedene Typen unter config.plugins.vault.auth.type angegeben werden. Die Verfügbaren optionen können der Block.poly entnommen werden. Dokumentation siehe: argocd-vault-plugin backends


Beim anlegen einer neuen App, muss am ende der Auswahl der "Dropdown" von Directory zu Plugin geändert werden und das Plugin argocd-vault-plugin-helm ausgewählt werden.


Man kann über das Environment HELM_ARGS dem Plugin mehrere values.yaml mitgeben. Siehe: with-additional-helm-arguments

  - name: argocd
    from: cargo.ayedo.cloud/ayedo/k8s/argo-cd:0.1.0
    kubeconfig:
      from: k8s
    config:
      chart:
        auth:
          enabled: true
          username: *mirror_registry_auth_user
          password: *mirror_registry_auth_password
          registry: *mirror_registry_url
      admin_password: PaSsWoRdHeRe
      plugins:
        vault:
          enabled: true
          url: "https://vault.example.com"
          auth:
            type: "token"
            vault:
              token: "hvs.tokenHere"
      ingress:
        enabled: true
        host: argocd.example.com
        tls:
          enabled: true
          issuer: letsencrypt-production
      redis:
        enabled: true
        password: "secret here"
        auth:
          enabled: true

uninstall

uninstall ArgoCD