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 :
- le nom du projet ;
- l'id du projet ;
- les AK/SK de l'utilisateur YACE ;
- la liste des services ;
- pour chaque service la liste des métriques.
Cela doit ressembler à (avec les XXX remplacés par les vraies valeurs et sans les commentaires):
{
"account_name": "ngot",
"account_id": xxxxxxxx,
"access_key": "XXX",
"secret_key": "XXX",
# Début de la partie optionnelle
"exportedTagsOnMetrics": {
"ec2": ["Name"]
},
# Fin de la partie optionnelle
"services": [
{
"type": "ec2",
"regions": ["eu-west-1", "eu-west-3"],
# Début de la partie optionnelle
"customTags": [{
"key": "xymon",
"value": "prs"
}],
"searchTags": [{
"key": "yace",
"value": "true"
}],
"dimensionNameRequirements": ["InstanceId"],
# Fin de la partie optionnelle
"metrics": [
{
"name": "CPUCreditBalance",
# Début de la partie optionnelle
"statistics": ["Minimum", "Maximum"],
"period": 600,
"length": 600,
"delay": 600,
"addCloudwatchTimestamp": false
# Fin de la partie optionnelle
}
# ... Autres métriques
]
}
# ... Autres services
]
}
Pour faciliter cet échange nous avons mis en place une stack Terraform pour la création des identifiants YACE. 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 l'AK/SK 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-yace.json
Vérification du contenu du fichier data-yace.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#
YACE_ACCOUNT_NAME=$(jq -r '.account_name' data-yace.json)
YACE_ACCOUNT_ID=$(jq -r '.account_id' data-yace.json)
YACE_ACCESS_KEY=$(jq -r '.access_key' data-yace.json)
YACE_SECRET_KEY=$(jq -r '.secret_key' data-yace.json)
ZONE=""
vault write secret/zones/fe/${ZONE}/yace-client/${YACE_ACCOUNT_NAME}-${YACE_ACCOUNT_ID} access_key=${YACE_ACCESS_KEY} secret_key=${YACE_SECRET_KEY}
Ajout des données non sensibles dans Caascad-Zone#
Conversion du fichier json en cue et suppression du password#
cue import -f data-yace.json -o non-sensitive-data-yace.cue && sed -i '/access_key/d' non-sensitive-data-yace.cue && sed -i '/secret_key/d' non-sensitive-data-yace.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-yace.cue dans la clé .${ZONE}.monitoring.yace
Vérification et génération des fichiers de zones
cd ~/git/caascad/terraform/envs-ng/zones/caascad_zones
cue vet -c
cd ../../
generate-static-zones-files
cat ~/git/caascad/terraform/envs-ng/gen/zones_static/zones.json | jq ".\"${ZONE}\".monitoring.yace"
Trackbone plan avant le CAASCHR#
Après toutes ces modifications, le déploiement de YACE est possible.
Plan du déploiement
cd ~/git/caascad/terraform/envs-ng/contexts/ngotalpha
trackbone plan -z ${ZONE} -c yace-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.