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 :
Les deux requêtes doivent retourner no data.
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
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.