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