Aller au contenu

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.