--- k8s_argocd_helm__name: "argo-cd" k8s_argocd_helm__release_namespace: "argo-cd" argo_realm_name: &argoname 'argocd' argo_realm_display_name: *argoname k8s_argocd_helm__domain: &argourl "{{ stage }}-kube-argocd.{{ domain }}" argo_realm_group: argoadmins # shouldn't be 'admin' due to default adminuser called 'admin' in argo argo_keycloak_clientscope_protocol: openid-connect argo_keycloak_clientscope_name: groups argo_client_id: *argoname argo_client_root_url: 'https://{{ k8s_argocd_helm__domain }}' argo_client_redirect_uris: - 'https://{{ k8s_argocd_helm__domain }}/auth/callback' argo_client_base_url: '/applications' argo_client_admin_url: 'https://{{ k8s_argocd_helm__domain }}' argo_client_web_origins: - 'https://{{ k8s_argocd_helm__domain }}' argo_realm_users: [ { "username": "{{ argocd_admin_username }}", "password": "{{ argocd_admin_password }}", "requiredActions": [] } ] # https://github.com/argoproj/argo-helm/tree/master/charts/argo-cd k8s_argocd_helm__release_values: global: hostAliases: - ip: "{{ shared_service_harbor_ip }}" hostnames: - "{{ shared_service_harbor_hostname }}" - ip: "{{ shared_service_keycloak_ip }}" hostnames: - "{{ shared_service_keycloak_hostname }}" - ip: "{{ shared_service_gitea_ip }}" hostnames: - "{{ shared_service_gitea_hostname }}" controller: metrics: enabled: true serviceMonitor: enabled: true namespace: "{{ k8s_argocd_helm__release_namespace }}" additionalLabels: release: "{{ k8s_prometheus_helm__name }}" repoServer: metrics: enabled: true serviceMonitor: enabled: true namespace: "{{ k8s_argocd_helm__release_namespace }}" additionalLabels: release: "{{ k8s_prometheus_helm__name }}" env: - name: ARGOCD_MAX_CONCURRENT_LOGIN_REQUESTS_COUNT value: "0" - name: ARGOCD_EXEC_TIMEOUT value: "300s" - name: XDG_CONFIG_HOME value: /.config - name: GNUPGHOME value: /home/argocd/.gnupg volumes: - name: custom-tools emptyDir: {} - name: gnupg-home emptyDir: {} - name: sops-gpg secret: secretName: sops-gpg volumeMounts: - mountPath: /home/argocd/.gnupg name: gnupg-home subPath: .gnupg - mountPath: /usr/local/bin/kustomize name: custom-tools subPath: kustomize # Verify this matches a XDG_CONFIG_HOME=/.config env variable - mountPath: /.config/kustomize/plugin/viaduct.ai/v1/ksops/ksops name: custom-tools subPath: ksops initContainers: - name: 1-install-ksops image: viaductoss/ksops:v3.0.1 command: ["/bin/sh", "-c"] args: - echo "Installing KSOPS..."; mv ksops /custom-tools/; mv $GOPATH/bin/kustomize /custom-tools/; echo "Done."; volumeMounts: - mountPath: /custom-tools name: custom-tools - name: 2-import-gpg-key image: argoproj/argocd:v2.2.5 command: ["gpg", "--import","/sops-gpg/gpg_key_smardigo_automation__private"] env: - name: GNUPGHOME value: /gnupg-home/.gnupg volumeMounts: - mountPath: /sops-gpg name: sops-gpg - mountPath: /gnupg-home name: gnupg-home server: config: oidc.config: | name: Keycloak issuer: '{{ keycloak_server_url }}/auth/realms/argocd' clientID: '{{ argo_client_id }}' clientSecret: $oidc.keycloak.clientSecret requestedScopes: ["openid", "profile", "email", "{{ argo_keycloak_clientscope_name }}"] url: 'https://{{ k8s_argocd_helm__domain }}' kustomize.buildOptions: "--enable-alpha-plugins" rbacConfig: policy.default: role:readonly policy.csv: | g, {{ argo_realm_group }}, role:admin g, admin, role:admin metrics: enabled: true serviceMonitor: enabled: true namespace: "{{ k8s_argocd_helm__release_namespace }}" additionalLabels: release: "{{ k8s_prometheus_helm__name }}" service: sessionAffinity: ClientIP ingress: enabled: true annotations: cert-manager.io/cluster-issuer: letsencrypt-prod cert-manager.io/issue-temporary-certificate: "true" kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/whitelist-source-range: "{{ ( ip_whitelist + ip_whitelist_admins ) | join(',') }}" nginx.ingress.kubernetes.io/force-ssl-redirect: "false" nginx.ingress.kubernetes.io/ssl-passthrough: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" hosts: - "{{ k8s_argocd_helm__domain }}" tls: - secretName: "{{ stage }}-kube-argocd-cert" hosts: - "{{ k8s_argocd_helm__domain }}" additionalProjects: - name: infrastructure namespace: '{{ k8s_argocd_helm__release_namespace }}' additionalLabels: {} additionalAnnotations: {} description: apps needed for maintaining stuff sourceRepos: - '*' destinations: - namespace: '*' server: https://kubernetes.default.svc clusterResourceWhitelist: - group: '*' kind: '*' orphanedResources: warn: false additionalApplications: - name: awx-operator namespace: '{{ k8s_argocd_helm__release_namespace }}' destination: namespace: awx server: https://kubernetes.default.svc project: infrastructure source: path: config/default repoURL: https://{{ shared_service_gitea_hostname }}/argocd/awx-operator.git targetRevision: '{{ awx_operator_revision | default(stage) }}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - name: awx-smardigo namespace: '{{ k8s_argocd_helm__release_namespace }}' destination: namespace: awx server: https://kubernetes.default.svc project: infrastructure source: path: apps/{{ stage }}/awx repoURL: https://{{ shared_service_gitea_hostname }}/argocd/argocd.git targetRevision: '{{ awx_smardigo_revision | default(stage) }}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - name: infrastructure namespace: '{{ k8s_argocd_helm__release_namespace }}' destination: namespace: infrastructure server: https://kubernetes.default.svc project: infrastructure source: path: config/default repoURL: https://{{ shared_service_gitea_hostname }}/argocd/argocd.git targetRevision: '{{ awx_smardigo_revision | default(stage) }}' syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true dex: enabled: false redis: metrics: enabled: true serviceMonitor: enabled: true namespace: "{{ k8s_argocd_helm__release_namespace }}" additionalLabels: release: "{{ k8s_prometheus_helm__name }}" configs: secret: argocdServerAdminPassword: '{{ argocd_server_admin_password | password_hash("bcrypt") }}' k8s_argocd__crd_applicationset_version: v0.4.0