Configuration Azure

Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Présentation

Avant d’installer CloudPrem sur Azure, vous devez configurer un ensemble de ressources d’infrastructure de support. Ces composants fournissent les services de calcul, de stockage, de base de données et de réseau fondamentaux dont CloudPrem dépend. Cette documentation présente toutes les ressources à configurer dans votre compte Azure avant de passer aux étapes d’installation décrites dans le guide d’installation Azure AKS.

Exigences en matière d’infrastructure

Voici les composants que vous devez provisionner :

Azure Kubernetes Service (AKS)

CloudPrem s’exécute entièrement sur Kubernetes. Vous avez besoin d’un cluster AKS avec suffisamment de CPU, de mémoire et d’espace disque configurés pour votre charge de travail. Consultez les recommandations de dimensionnement du cluster Kubernetes pour obtenir des conseils.

Déployer le cluster AKS

Vérifier la connectivité et l’état du cluster

Pour confirmer que le cluster est accessible et que les nœuds sont à l’état Ready, exécutez la commande suivante :

kubectl get nodes -o wide

Azure PostgreSQL Flexible Server

CloudPrem stocke ses métadonnées et sa configuration dans une base de données PostgreSQL. Datadog recommande Azure Database pour PostgreSQL Flexible Server. Elle doit être accessible depuis le cluster AKS, idéalement avec la mise en réseau privé activée. Consultez les recommandations de dimensionnement Postgres pour plus de détails.

Créer la base de données PostgreSQL

Vérifier la connectivité à la base de données

Pour des raisons de sécurité, créez une base de données et un utilisateur dédiés pour CloudPrem, et accordez à cet utilisateur des droits uniquement sur cette base de données, et non à l'échelle du cluster.

Connectez-vous à votre base de données PostgreSQL depuis le réseau AKS à l’aide du client PostgreSQL psql. Démarrez d’abord un pod interactif dans votre cluster Kubernetes en utilisant une image incluant psql :

kubectl run psql-client \
  -n <NAMESPACE_NAME> \
  --rm -it \
  --image=bitnami/postgresql:latest \
  --command -- bash

Puis exécutez la commande suivante directement depuis le shell, en remplaçant les valeurs fictives par vos valeurs réelles :

psql "host=<HOST> \
      port=<PORT> \
      dbname=<DATABASE> \
      user=<USERNAME> \
      password=<PASSWORD>"

En cas de succès, une invite similaire à la suivante doit s’afficher :

psql (15.2)
SSL connection (protocol: TLS...)
Type "help" for help.

<DATABASE>=>

Conteneur Blob Storage

CloudPrem utilise Azure Blob Storage pour persister les logs. Créez un conteneur dédié à cet usage.

Créer un conteneur Blob Storage

Utilisez un conteneur dédié par environnement (par exemple, cloudprem-prod, cloudprem-staging), et attribuez des rôles RBAC avec le principe du moindre privilège au niveau du conteneur, plutôt qu’au niveau du compte de stockage.

Identité client et autorisations

Une application Azure AD doit disposer d’un accès en lecture/écriture au conteneur Blob Storage. Enregistrez une application dédiée pour CloudPrem et attribuez au principal de service correspondant le rôle Contributor sur le conteneur Blob Storage créé précédemment.

Enregistrer l’application

Enregistrer une application dans Microsoft Entra ID

Attribuer le rôle Contributor

Attribuer un rôle Azure pour l’accès aux données blob

Contrôleur d’entrée NGINX

Contrôleur d’entrée NGINX public

L’ingress public est indispensable pour permettre au plan de contrôle et au service de requêtes de Datadog de gérer et d’interroger les clusters CloudPrem via l’internet public. Il fournit un accès sécurisé à l’API gRPC CloudPrem grâce aux mécanismes suivants :

  • Crée un Azure Load Balancer accessible depuis internet qui accepte le trafic en provenance des services Datadog
  • Implémente le chiffrement TLS avec terminaison au niveau du contrôleur d’entrée
  • Utilise HTTP/2 (gRPC) pour la communication entre Datadog et les clusters CloudPrem
  • Requiert une authentification TLS mutuelle (mTLS) où les services Datadog doivent présenter des certificats client valides
  • Configure le contrôleur en mode TLS passthrough pour transmettre les certificats client aux pods CloudPrem via l’en-tête ssl-client-cert
  • Rejette les requêtes ne présentant pas de certificats client valides ou l’en-tête de certificat

Utilisez le fichier de valeurs Helm nginx-public.yaml suivant pour créer le contrôleur d’entrée NGINX public :

nginx-public.yaml

controller:
  electionID: public-ingress-controller-leader
  ingressClass: nginx-public
  ingressClassResource:
    name: nginx-public
    enabled: true
    default: false
    controllerValue: k8s.io/public-ingress-nginx
  service:
    type: LoadBalancer
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz

Installez ensuite le contrôleur avec Helm à l’aide de la commande suivante :

helm upgrade --install nginx-public ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace nginx-ingress-public \
  --create-namespace \
  -f nginx-public.yaml

Vérifiez que le pod du contrôleur est en cours d’exécution :

kubectl get pods -n nginx-ingress-public -l app.kubernetes.io/component=controller

Vérifiez que le service expose une IP externe :

kubectl get svc -n nginx-ingress-public -l app.kubernetes.io/component=controller

Contrôleur d’entrée NGINX interne

L’ingress interne permet l’ingestion de logs depuis les Agents Datadog et d’autres collecteurs de logs au sein de votre environnement via HTTP. Utilisez le fichier de valeurs Helm nginx-internal.yaml suivant pour créer le contrôleur d’entrée NGINX interne :

nginx-internal.yaml

controller:
  electionID: internal-ingress-controller-leader
  ingressClass: nginx-internal
  ingressClassResource:
    name: nginx-internal
    enabled: true
    default: false
    controllerValue: k8s.io/internal-ingress-nginx
  service:
    type: LoadBalancer
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: true
      service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz

Installez ensuite le contrôleur avec Helm à l’aide de la commande suivante :

helm upgrade --install nginx-internal ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace nginx-ingress-internal \
  --create-namespace \
  -f nginx-internal.yaml

Vérifiez que le pod du contrôleur est en cours d’exécution :

kubectl get pods -n nginx-ingress-internal -l app.kubernetes.io/component=controller

Vérifiez que le service expose une IP externe :

kubectl get svc -n nginx-ingress-internal -l app.kubernetes.io/component=controller

DNS

Vous pouvez également ajouter une entrée DNS pointant vers l’IP du répartiteur de charge public, afin que les éventuels changements d’IP futurs ne nécessitent pas de mise à jour de la configuration côté Datadog.

Étapes suivantes

Après avoir finalisé la configuration Azure

  1. Installez CloudPrem sur Azure AKS - Suivez le guide d’installation Azure AKS pour déployer CloudPrem
  2. Configurez l’ingestion de logs - Configurez l’ingestion de logs pour commencer à envoyer des logs à CloudPrem

Pour aller plus loin