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 :

  • 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 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.