Aller au contenu

Nginx Alertreceiver / TrueSight: add external client#

Contexte#

Il s'agit d'ajouter un client externe (la source des alertes vient d'une source externe : cloud provider, ...) dans Nginx Alertreceiver.

CAASCHR#

Champ Description
Titre [PRD] Ajout d'un client externe dans Nginx Alertreceiver
Durée En général, il faut 1h

Dans la description, bien revoir ces points :

  • les objectifs
  • la procédure de vérification
  • la variable new_client

Description#

h2. Zones
{code}
$new_client
{code}

h2. Préparatifs

{code}
new_client=($new_client)
{code}

h2. Contexte

Ce changement ne peux pas etre validé en stg car c'est un changement spécifique sur PRDCASA.

h2. Changements

* Ajout d'un client externe dans Nginx Alertreceiver

h2. Déploiement

h3. Lancer la configuration `nginx-alertreceiver` avec le mode bootstrap

{code}
cd contexts/pf
trackbone apply -z prdcasa -c nginx-alertreceiver -t bootstrap=true -t nginx_alertreceiver_zone_for_bootstrap=$new_client
{code}

Cette étape va :

- générer une nouvelle clef externe, exemple : `6Wo1uIb4mWk8I8GSkfBYTSf8y8ILENTT`
- modifier la configuration de l'ingress avec $new_client, exemple :
  {code}
   + if ($request_uri = "/alertreceiver/test?apikey=6Wo1uIb4mWk8I8GSkfBYTSf8y8ILENTT") {
   +   set $code "OVERRIDE_ME";
   +   set $cc_client "$new_client";
   +   set $resp_body "";
   + }
  {code}
- créer un nouveau secret dans Vault : [secret/applications/nginx-alertreceiver/$new_client](https://vault.infra-prd.caascad.com/ui/vault/secrets/secret/show/applications/nginx-alertreceiver/$new_client).

h3. Modifier le nouveau secret créé dans Vault

Modifiez manuellement le secret créé dans Vault pour le nouveau client : modifiez le champ "internal_apikey" (qui est égal à "OVERRIDE_ME") avec la clé API interne obtenue lors de la première étape.

h3. Lancer la configuration `nginx-alertreceiver`

{code}
cd contexts/pf
trackbone apply -z prdcasa -c nginx-alertreceiver
{code}

Cette étape va modifier la configuration avec la nouvelle clé API interne.

h3. Communiquer l'URL et la clé API externe au nouveau client

1. créez un fichier `alerting hub.json` avec les informations suivantes (remplacez XXX) :
{code}
{
  "apikey": "XXX",
  "url": "https://alertreceiver.prdcasa.caascad.com/alertreceiver/$new_client"
}
{code}

2. S'authentifier sur le Vault interne OAB :
{code}
export VAULT_ADDR=https://vault-oab.si.fr.intraorange
vault login -method oidc -path=sso
{code}

3. Envoi sécurisé des informations pour une durée de 48h :
{code}
vault write -wrap-ttl=48h sys/wrapping/wrap @alertinghub.json
{code}

Exemple d'output :
{code}
Key                              Value
---                              -----
wrapping_token:                  hvs.CAESINpqn0fXjZ7KrBtNgTdq791KH7FOMfAAIVoof7S5TyKiGh4KHGh2cy5VQVp4NjJKSEFvQUtWc3VqQnVpM3JHRWk
wrapping_accessor:               VQiZYkMfhJcxvdl7hx6s5NWD
wrapping_token_ttl:              48h
wrapping_token_creation_time:    2023-06-08 19:31:45.791737325 +0200 CEST
wrapping_token_creation_path:    sys/wrapping/wrap
{code}

4. Envoyer le `wrapping_token` de la sortie précédente au client.

h2. Vérifications

h3. Vérification ingress Nginx Alertreceiver

{code}
kswitch prdcasa
kubectl get ingress -n nginx-alertreceiver -o yaml
{code}

*Résultat attendu* :
{code}
  if ($request_uri = "/alertreceiver/$new_client?apikey=6Wo1uIb4mWk8I8GSkfBYTSf8y8ILENTT") {
     set $code "xxxxxxxxxxxxx";
          set $cc_client "$new_client";
          set $resp_body "";
  }

{code}
Où "xxxxxxxxxxxxx" doit être la clé API interne.

h2. Merge

Merger la MR envs-ng si tout s'est bien passé.