Files
arcodangeandClaude Opus 5 d146affbcd
Helm Charts / Application charts pgcat (pull_request) Has been skipped
Helm Charts / Detect changed charts (push) Successful in 1m6s
Helm Charts / Detect changed charts (pull_request) Successful in 24s
Hashicorp Vault / Auth with gitea for vault (push) Failing after 8m38s
Hashicorp Vault / Tofu - Vault IAC (push) Has been skipped
Helm Charts / Library charts tool (pull_request) Has been skipped
Helm Charts / Library charts tool (push) Has been skipped
Hashicorp Vault / Tofu - Vault IAC (pull_request) Has been skipped
Hashicorp Vault / Auth with gitea for vault (pull_request) Failing after 8m40s
Helm Charts / Application charts pgcat (push) Has been skipped
fix(minio) — déclarer minio dans la liste centrale des applications Vault
CI en échec sur le workflow MinIO : role "gitea_cicd_minio" could not be found.

Diagnostic : les rôles CI gitea_cicd_<app> ne naissent PAS dans l'IaC de
l'application — ils viennent du module app_policy, appliqué centralement par
hashicorp-vault/iac pour chaque entrée de terraform.tfvars. J'avais posé
minio/iac (qui s'authentifie AVEC ce rôle) sans alimenter la liste : le run
tentait donc de s'authentifier avec un rôle que personne n'avait créé. Amorçage
circulaire, entièrement de mon fait.

- hashicorp-vault/iac/terraform.tfvars : minio ajouté aux applications, avec
  service_account_namespaces = ["tools"] comme crowdsec et plausible ;
- .gitea/workflows/vault.yaml : les triggers couvrent désormais *.tfvars en
  plus de *.tf. C'est là que vit la liste des applications : sans ça, ajouter
  une app ne déclenchait jamais la création de son rôle — le piège qui vient
  de mordre. Les ancres YAML des triggers sont retirées au passage (une ancre
  dans un trigger Gitea Actions fait taire push ET pull_request en silence,
  vécu sur arcodange/kadans, issues 113→117 ; c'est probablement pourquoi ce
  workflow ne partait qu'à la main) ;
- minio/README.md : l'ordre de mise en service dit maintenant les DEUX étapes
  et nomme l'erreur exacte à laquelle on s'expose en les inversant.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01CoafGWmRVESaWX819USUUA
2026-07-25 18:23:02 +02:00
..
2024-09-05 19:45:42 +02:00
2024-10-30 11:21:48 +01:00

Vault

  1. Les playbooks ansible configurent la base de données postgres et le minimum requis pour permetre au dépot "tools" d'appliquer via un workflow gitea action une configuration vault via tofu.
  2. Configuration des backend d'authentification et des roles pour postgres et kubernetes. Définition de rôles "${app}-ops" pour permettre au dépot d'une application de définir ses propres dépendances dans vault. Rotation de credentials postgres pour les applications.
  3. Le dépot de l'application webapp gère l'obtention de ses crédentials pour postgres.
flowchart LR

    classDef playbook stroke:#0f0,fill:#440,stroke-width: 1px
    classDef tofu stroke:#f00,fill:#404,stroke-width: 2px
    classDef argocd stroke:#00f,fill:#044,stroke-width: 3px
    classDef database stroke:#bb0,fill:#ff0,stroke-width: 5px,color: black
    classDef secret stroke:#f00,fill:#f00,stroke-width: 5px,color: yellow
    classDef secretOperator stroke:#f00,fill:DarkRed,stroke-width: 5px,color: Orange

    subgraph git_code[factory.git]
        subgraph ansible_collection
            setup_playbook[playbook arcodange.factory.setup]:::playbook
            tools_playbook[playbook arcodange.factory.tools]:::playbook
        end
        git_code_tofu_vault{{tofu}}:::tofu
    end

    subgraph git_tools[tools.git]
        argocd_tools{{Argo CD Apps}}:::argocd
        git_tools_tofu_vault{{tofu}}:::tofu
    end

    subgraph git_webapp[webapp.git]
        webapp["Go(lang) web app"]
        argocd_webapp{{Argo CD App}}:::argocd
        git_webapp_tofu_vault{{tofu}}:::tofu
    end

    subgraph servers
        subgraph k3s
            subgraph k3s_ns_tools[ns:tools]
                argocd{{Argo CD}}:::argocd
                pgbouncer
                subgraph vault
                    subgraph vault_auth[auth]
                        subgraph vault_auth_openid[openid]
                        end
                        vault_auth_jwt[jwt]
                        vault_auth_k8s[kubernetes]
                        vault_auth_jwt_role_gitea_cicd[gitea_cicd role]
                        vault_auth_jwt_role_gitea_cicd_webapp_ops[gitea_cicd_webapp ops role]
                        vault_auth_k8s_role_vso[vault-secret-operator role]
                        vault_auth_k8s_role_webapp[webapp role]
                        subgraph policies
                            policy_default[default]
                            policy_webapp[webapp]
                            policy_webapp_ops[webapp ops]
                            policy_admin[admin]
                            policy_vso[edit-vso-client-cache]
                        end
                    end
                    subgraph vault_secrets[secrets]
                        subgraph kvv2
                            google/credentials
                            webapp/config
                        end
                    end
                    subgraph vault_postgres[postgres]
                        creds/creds-editor
                        creds/webapp
                    end
                    subgraph vault_transit[transit]
                    end
                end
                vault-secret-operator:::secretOperator
            end
            subgraph k3s_ns_webapp[ns:webapp]
                webapp_deployment[deployment:webapp]
                webapp_postgres_creds_secret[secret:postgres creds]:::secret
                webapp_config_secret[secret:config]:::secret
                webapp_service_account[sa:webapp]
            end
        end
        subgraph postgres
            root_credentials
            postgres_db[(postgres)]:::database
            webapp_credentials:::secret
            webapp_db[(webpp)]:::database

            vault_creds_editor_role{{credentials_editor}}
        end
    end

    setup_playbook -. setup postgres .-> postgres
    
    tools_playbook -.-o git_code_tofu_vault
    git_code_tofu_vault -..-> vault_auth_openid
    git_code_tofu_vault -..-> vault_auth_jwt -- tofu:factory --- vault_auth_jwt_role_gitea_cicd
    git_code_tofu_vault -..-> kvv2
    git_code_tofu_vault -..-> google/credentials

    linkStyle 0,1 stroke:#ff3,stroke-width:1px,color:DarkKhaki;
    linkStyle 2,3,5,6 stroke:#f3f,stroke-width:2px,color:DarkOrange;
    
    git_tools -.-o argocd_tools
    argocd_tools -.-> pgbouncer
    argocd_tools -.-> vault
    argocd_tools -.-> vault-secret-operator
    argocd_tools o--o argocd

    linkStyle 7,8,9,10,11 stroke:#3ff,stroke-width:3px,color:DarkSlateBlue;

    git_tools_tofu_vault -..-> vault_auth_k8s -- sa:vso --- vault_auth_k8s_role_vso
    git_tools_tofu_vault -..-> webapp/config
    git_tools_tofu_vault -..-> vault_transit
    git_tools_tofu_vault -..-> vault_postgres
    vault_auth_k8s ---> k3s
    vault_postgres --> pgbouncer x==> postgres; webapp_deployment --> pgbouncer

    linkStyle 12,14,15,16 stroke:#f3f,stroke-width:2px,color:DarkOrange;
    linkStyle 18,19,20 stroke:gold,stroke-width:2px;
    
    vault_transit x---x vault-secret-operator
    vault-secret-operator x---x vault_auth_k8s_role_vso

    vault_auth_jwt_role_gitea_cicd x--x policy_default
    vault_auth_k8s_role_vso x--x policy_vso

    creds/webapp -.-> webapp_credentials
    creds/webapp -.-> vault-secret-operator
    vault-secret-operator -.-> webapp_postgres_creds_secret
    webapp/config -.-> vault-secret-operator
    vault-secret-operator -.-> webapp_config_secret

    argocd_webapp -.-> k3s_ns_webapp
    webapp --o webapp_deployment
    webapp_postgres_creds_secret --o webapp_deployment
    webapp_deployment --> webapp_service_account

    vault_auth_jwt -- tofu:tools --- vault_auth_jwt_role_gitea_cicd_webapp_ops
    vault_auth_jwt_role_gitea_cicd_webapp_ops x--x policy_webapp_ops
    vault_auth_k8s -- sa:webapp --- vault_auth_k8s_role_webapp x-- tofu:webapp --x policy_webapp

    git_webapp_tofu_vault -.-> vault_auth_k8s_role_webapp
    git_webapp_tofu_vault -.-> creds/webapp


    root_credentials x--x postgres_db
    webapp_credentials x--x webapp_db

    tools_playbook --> vault_creds_editor_role
    vault_creds_editor_role -. change password .-> webapp_credentials
    vault_postgres x--x vault_creds_editor_role