Aller au contenu

Modification d'un déploiement pour un client#

Note

Cette documentation ne s'applique qu'à NGOT

export ENVS_NG=xxx # exemple : $HOME/git/caascad/terraform/envs-ng
export CLIENT=xxx # example : pf
export INSTANCE_NAME=tenantxxx # nom pour différencier les différentes instances de Promitor pour un client, on commence par tenant1

Identifiants dans Vault infra-stg#

Note

Cette section est un prérequis qui permet de faire un test sur staging avant de faire le déploiement en production avec un CAASCHR.

On récupère les credentials dans Vault infra-prd :

export VAULT_ADDR="https://vault.infra-prd.caascad.com"
vault token lookup || vault login -method oidc
export VAULT_FORMAT=json

if [ -z ${INSTANCE_NAME} ]; then echo "WARNING: set INSTANCE_NAME"; fi
application_id=$(vault read secret/zones/fe/svc-monitoring-stack-client-${CLIENT}/promitor-client/${INSTANCE_NAME} | jq -r .data.application_id)
application_key=$(vault read secret/zones/fe/svc-monitoring-stack-client-${CLIENT}/promitor-client/${INSTANCE_NAME} | jq -r .data.application_key)

On les met temporairement dans Vault infra-stg :

export VAULT_ADDR="https://vault.infra-stg.caascad.com"
vault token lookup || vault login -method oidc

vault write "secret/zones/fe/svc-monitoring-stack-client-test04/promitor-client/${INSTANCE_NAME}" application_id=${application_id} application_key=${application_key}

Ajout des informations de collecte dans Ngot-Zone#

Pour modifier le fichier promitor-<client>.cue, il est possible d'utiliser ce générateur :

cd /tmp
git clone git@git.corp.caascad.com:caascad/applications/monitoring_zones_generator.git && cd monitoring_zones_generator/promitor
nix-env -iA nixpkgs.gomplate # si gomplate n'est pas déjà installé
export GIT_NGOT_PATH=/tmp 

rm -rf /tmp/obs-${CLIENT}
git clone git@sourcehub.orange-business.com:cs-factory/cs-factory-environments/obs-${CLIENT}.git /tmp/obs-${CLIENT}

gomplate -f template.cue | cue fmt - > promitor-$CLIENT.cue
cp promitor-${CLIENT}.cue ${ENVS_NG}/zones/ngot_zones
mv promitor-${CLIENT}.cue ${ENVS_NG}/zones/ngot_zones/promitor-test04.cue # permet de faire un test sur staging avant de faire le déploiement en prod avec un CAASCHR
sed -i -e "s/svc-monitoring-stack-client-${CLIENT}/svc-monitoring-stack-client-test04/g" ${ENVS_NG}/zones/ngot_zones/promitor-test04.cue
cd ${ENVS_NG}
git switch -c new_${CLIENT}_promitor
nix-shell
generate-static-zones-files

Déploiements#

Test de la configuration client sur staging#

Warning

Afin d'éviter les requêtes en double sur les comptes Azure des clients, le test doit durer le moins longtemps possible : 30 minutes au maximum.

Déploiement#

Déployer sur obs-test04 :

cd ${ENVS_NG}/contexts/ngot
trackbone apply -z "svc-monitoring-stack-client-test04" -c promitor-client

Vérifications#

  • modifications prises en compte, dans Grafana vérifier que la modification a été prise en compte (par exemple la présence d'un nouveau label, d'une nouvelle métrique, ...).
  • aucune erreur constatée, dans Grafana faire les différentes requêtes PromQL :
    promitor_scrape_error == 1 # On vérifie que le scraper fonctionne correctement
    increase(promitor_runtime_http_request_duration_seconds_count{job=~"promitor-resource-discovery-.*", status_code!="200"}[5m]) > 0 # on vérifie que la resource discovery fonctionne correctement
    
    Les deux requêtes doivent retourner no data.

Cleanup test staging#

trackbone destroy -z "svc-monitoring-stack-client-test04" -c promitor-client
rm ${ENVS_NG}/zones/ngot_zones/promitor-test04.cue
generate-static-zones-files

export VAULT_ADDR="https://vault.infra-stg.caascad.com"
vault token lookup || vault login -method oidc

if [ -z ${INSTANCE_NAME} ]; then echo "WARNING: set INSTANCE_NAME"; fi
vault delete "secret/zones/fe/svc-monitoring-stack-client-test-04/promitor-client/${INSTANCE_NAME}"

Déploiement en production#

Une fois que le test en staging a réussi, le déploiement de promitor-client est possible.

Warning

Ne pas faire le déploiement en production tant que le test en staging n'a pas réussi.

Plan du déploiement :

cd ${ENVS_NG}/contexts/ngot
trackbone plan -z "svc-monitoring-stack-client-${CLIENT}" -c promitor-client
trackbone plan -z "svc-monitoring-stack-client-${CLIENT}" -c prometheus-rules --add-services
git add ${ENVS_NG}/zones/ngot_zones/promitor-$CLIENT.cue
git add ${ENVS_NG}/gen/
git commit -m "promitor-client: $CLIENT: add/update"
git push

Si tout est OK, vous pouvez demander la review de votre MR et préparer votre CAASCHR à l'aide du template suivant.