Déploiement#
Warning
Cette documentation a été écrite pour l'ancienne plateforme NGOTALPHA
Elle doit être revue et corrigée.
Informations requises#
Pour le déploiement de ce composant, le client doit nous fournir les informations suivantes :
- l'id du projet ;
- le numéro du projet ;
- la clé du compte de service permettant l'authentification sur Google Cloud Monitoring ;
- la liste et la configuration des métriques ;
- les labels à poser sur les métriques.
Cela doit ressembler à (avec les XXX remplacés par les vraies valeurs et sans les commentaires):
{
"project_id": "XXX",
"project_number": "XXX",
"private_key": "XXX",
"metrics": {
"typePrefixes": ["XXX", "XXX", ...], # Exemple : compute.googleapis.com/instance
# Début de la partie optionnelle
"filters": ["XXX", ...],
"interval": "10m",
"offset": "5m",
"ingestDelay": "true",
"aggregateDeltas": "true",
"aggregateDeltasTTL": "15m"
# Fin de la partie optionnnelle
},
# Début de la partie optionnelle
"labels": {
"foo": "bar",
"XXX": "XXX"
}
# Fin de la partie optionnnelle
}
Pour faciliter cet échange nous avons mis en place une stack Terraform pour la création du compte de service Google. Un repository a été créé afin de suivre les changements. Le client doit nous faire parvenir ces informations sous forme de token à l'aide de la fonctionnalité Wrap de Vault.
Unwrap du token Vault et sauvegardes des données#
La fonctionnalité Wrap/Unwrap de Vault est utilisé pour nous faire parvenir les données sensibles du client de manières sécurisé, un accès au Vault interne OAB est donc nécessaire https://vault-oab.si.fr.intraorange.
Après le déchiffrage du token, nous allons sauvegarder la clé du compte de service dans le Vault infra et le reste des données dans Caascad-Zone.
Warning
Le token est configuré avec un TTL de 24h.
Warning
Le token peut être déchiffré qu'une seule fois.
Authentification au Vault interne OAB#
export VAULT_ADDR="https://vault-oab.si.fr.intraorange"
vault login -method oidc -path=sso
Unwrap du token#
TOKEN=""
vault unwrap -format=json ${TOKEN} | jq '.data' > data-stackdriver-exporter.json
Vérification du contenu du fichier data-stackdriver-exporter.json
Authentification au Vault infra#
INFRA_ZONE_NAME="" # infra-stg | infra-prd
export VAULT_ADDR="https://vault.${INFRA_ZONE_NAME}.caascad.com"
vault login -method oidc
Ajout du mot de passe dans Vault infra#
SE_PROJECT_ID=$(jq -r '.project_id' data-stackdriver-exporter.json)
SE_PROJECT_NUMBER=$(jq -r '.project_number' data-stackdriver-exporter.json)
SE_PRIVATE_KEY=$(jq -r '.private_key' data-stackdriver-exporter.json)
ZONE=""
vault write secret/zones/fe/${ZONE}/stackdriver-exporter-client/${SE_PROJECT_ID}-${SE_PROJECT_NUMBER} credentials=${SE_PRIVATE_KEY}
Ajout des données non sensibles dans Caascad-Zone#
Conversion du fichier json en cue et suppression du password#
jq 'del(.private_key)' data-stackdriver-exporter.json > non-sensitive-data-stackdriver-exporter.cue && cue import -f non-sensitive-data-stackdriver-exporter.cue
Modification du fichier ~/git/caascad/terraform/envs-ng/zones/caascad_zones/zones_cloudavenue.cue#
Création une branche dans le repository envs-ng.
Ajout du contenu du fichier non-sensitive-data-stackdriver-exporter.cue dans la clé .${ZONE}.monitoring.stackdriverExporter
Vérification et génération des fichiers de zones
cd ~/git/caascad/terraform/envs-ng/
nix-shell
generate-static-zones-files
cat ~/git/caascad/terraform/envs-ng/gen/zones_static/zones.json | jq ".\"${ZONE}\".monitoring.stackdriverExporter"
Trackbone plan avant le CAASCHR#
Après toutes ces modifications, le déploiement de Stackdriver-Exporter est possible.
Plan du déploiement
cd ~/git/caascad/terraform/envs-ng/contexts/ngotalpha
trackbone plan -z ${ZONE} -c stackdriver-exporter-client
trackbone plan -z ${ZONE} -c ngotalpha-prometheus-rules
Si tout est OK, vous pouvez demander la review de votre MR et préparer votre CAASCHR.