Installer sur un existing cluster avec Helm
Introduction
GitGuardian peut être installé sur votre cluster Kubernetes existant avec Helm, un gestionnaire de paquets pour Kubernetes. GitGuardian prend en charge le déploiement sur bare metal, cloud privé ou cloud public.
Prérequis
Infrastructure requise
-
Cluster Kubernetes : Un cluster Kubernetes en cours d'exécution. Consultez les prérequis système pour plus de détails. Pour les clusters OpenShift, reportez-vous aux directives d'installation OpenShift.
-
Base de données PostgreSQL : Une instance PostgreSQL externe avec les extensions requises installées. Consultez la configuration de la base de données pour les détails de configuration.
-
Instance Redis : Une instance Redis dédiée. Consultez les prérequis système pour les détails de configuration.
Exigences supplémentaires
-
Helm : Helm version 3.13+ installé. Consultez les prérequis système pour la compatibilité des versions. Actuellement, le déploiement de l'application avec les charts Helm prend uniquement en charge Helm CLI, ArgoCD et FluxCD. Les installations Helm prennent en charge les clusters AMD64 et ARM64 ; consultez architecture.
-
Accès réseau : Assurez-vous que votre cluster respecte les prérequis réseau.
-
Nom de domaine : Un nom de domaine complet (FQDN) pour accéder à l'application. Consultez les prérequis système.
Installation
Seules les méthodes suivantes sont prises en charge pour déployer l'application avec les charts Helm : Helm CLI et ArgoCD.
Pour l'installation de GitGuardian dans un environnement Airgap, utilisez un dépôt d'images privé. Des instructions détaillées sont disponibles sur la page Installer sur Airgap.
RBAC de l'application Kubernetes
Les rôles RBAC suivants sont nécessaires au bon fonctionnement de l'application : ils permettent au Replicated SDK de valider les droits liés à la licence du client, garantissent que les versions non « skippables » ne sont pas contournées lors des mises à niveau, et autorisent la génération in-cluster du support bundle (limitée par une ValidatingAdmissionPolicy).
Si vous n'êtes pas cluster-admin dans votre cluster Kubernetes, vous devrez appliquer la configuration ci-dessous dans votre namespace cible <gitguardian_namespace> :
Rôles RBAC pour l'installation Helm
# GitGuardian Role
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: gim-role
rules:
- apiGroups:
- ''
resources:
- configmaps
- secrets
verbs:
- get
- list
- watch
# Spawns the support-bundle collector pod. Locked down by a
# ValidatingAdmissionPolicy (Kubernetes 1.30+) — see Troubleshoot > Support.
- apiGroups:
- ''
resources:
- pods
verbs:
- create
- apiGroups:
- ''
resources:
- pods
- pods/log
verbs:
- get
- delete
resourceNames:
- gitguardian-support-bundle
# GitGuardian RoleBinding
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: gim-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: gim-role
subjects:
- kind: ServiceAccount
name: gim-migration
- kind: ServiceAccount
name: gim
# Upgrade-path-check Role
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: upgrade-path-check
rules:
- apiGroups:
- ''
resources:
- configmaps
verbs:
- get
- list
# Upgrade-path-check RoleBindng
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: upgrade-path-check
roleRef:
kind: Role
name: upgrade-path-check
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: upgrade-path-check
# Replicated SDK Role
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: replicated-role
rules:
- apiGroups:
- ''
resources:
- configmaps
- persistentvolumeclaims
- pods
- secrets
- services
verbs:
- get
- list
- watch
- apiGroups:
- apps
resources:
- daemonsets
- deployments
- replicasets
- statefulsets
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- ''
resources:
- secrets
verbs:
- create
- apiGroups:
- ''
resources:
- secrets
verbs:
- update
resourceNames:
- replicated
- replicated-instance-report
- replicated-custom-app-metrics-report
- replicated-meta-data
# Replicated SDK RoleBinding
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: replicated-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: replicated-role
subjects:
- kind: ServiceAccount
name: replicated
# Support Bundle
# Below role is mandatory
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: support-bundle
namespace: <gitguardian_namespace>
rules:
- apiGroups: ['*']
resources: ['*']
verbs: ['get', 'list', 'watch']
- apiGroups: ['']
resources: ['pods/exec']
verbs: ['create']
# This role is optional and is used to retrieve cluster-scoped information, which can be useful for troubleshooting
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: support-bundle
rules:
- apiGroups: ['']
resources: ['namespaces', 'nodes']
verbs: ['get', 'list', 'watch']
- apiGroups: ['apiextensions.k8s.io']
resources: ['customresourcedefinitions']
verbs: ['get', 'list', 'watch']
- apiGroups: ['storage.k8s.io']
resources: ['storageclasses']
verbs: ['get', 'list', 'watch']
Accéder au registre des charts Helm
⚠️ Assurez-vous d'utiliser la dernière version de helm.
Le chart Helm de GitGuardian est disponible dans le registre privé Replicated. La licence est incluse directement dans le chart Helm, aucun téléchargement de fichier de licence séparé n'est donc requis.
Contactez l'équipe GitGuardian à l'adresse support@gitguardian.com pour obtenir le mot de passe.
Pour vous connecter, utilisez la commande ci-dessous, en remplaçant l'e-mail par celui fourni par l'équipe GitGuardian :
helm registry login registry.replicated.com --username your.name@yourcompany.com
Créer le secret de chiffrement
Créez un secret Kubernetes dans le namespace cible avec DJANGO_SECRET_KEY. GitGuardian l'utilise pour chiffrer les données sensibles de l'application dans la base de données. Consultez Secret obligatoire pour les commandes et les valeurs.
Il est essentiel de sauvegarder votre clé dans un coffre-fort sécurisé. La perte de la clé entraîne une perte de données irréversible de votre instance GitGuardian.
Personnaliser le fichier de valeurs local
Cette installation offre de multiples options de personnalisation. Utilisez un fichier de valeurs local (nommé local-values.yaml)
pour les personnalisations lors de l'installation de toute application Helm.
Assurez-vous que votre fichier de valeurs configure ces éléments essentiels :
Au minimum, vos valeurs doivent configurer les éléments suivants :
hostnamepostgresredisonPrem.adminUser
Voici un exemple de fichier de valeurs couvrant ces éléments :
hostname: gitguardian.internal.yourcompany.com # Hostname where the instance will be accessed
postgresql:
host: gitguardian-postgres # PostgreSQL host
username: postgres # PostgreSQL username
database: gitguardian # PostgreSQL database name
existingSecret: gitguardian-postgresql-secret # Kubernetes secret where to check the PostgreSQL password
existingSecretKeys:
password: postgres-password # Name of the key containing password in the secret
redis:
main:
host: gitguardian-redis # Redis host
tls:
enabled: false # Set TLS encryption for Redis
existingSecret: gitguardian-redis-secret # Kubernetes secret where to check the Redis password
existingSecretKeys:
url: redis-url # Name of the key containing redis url in the secret
onPrem:
adminUser:
email: your.name@yourcompany.com # email of the instance admin user
firstname: YourName # name of the instance admin user
Pour des instructions détaillées sur :
- les paramètres configurables, reportez-vous à la page Référence des valeurs du chart Helm.
- le paramètre
existingSecretet son processus de configuration, consultez la page Gestion des informations sensibles Helm. - la configuration de la base de données, consultez Configurer votre base de données.
- les options de scaling, consultez la Documentation sur le scaling.
- le proxy HTTP, consultez Configurer un serveur proxy.
Activer la conformité FIPS (facultatif)
Si vous avez besoin de modules cryptographiques conformes FIPS, vous pouvez les activer en ajoutant ce qui suit à votre fichier local-values.yaml :
global:
fips:
enabled: true
Lorsque FIPS est activé, l'installation utilisera des versions conformes FIPS des images de l'application qui incluent des modules cryptographiques spécialisés répondant aux Federal Information Processing Standards, garantissant un chiffrement de premier ordre des données sensibles, à la fois au repos et en transit.
Pour plus d'informations sur la conformité FIPS et les considérations de sécurité, consultez la page Recommandations de sécurité.
Configurer l'accès réseau à l'application
Le front end de l'application se trouve derrière un objet Service nommé nginx.
Vous pouvez configurer l'accès à l'application de différentes manières :
- Configurez le service en tant que
LoadBalanceravec la valeurfront.service.type. Consultez Load-balancer pour plus de détails. - Ajoutez un objet Ingress routant vers le service
nginx. Consultez Ingress pour plus de détails. - Si votre cluster dispose du service mesh
istio, activez-le avec la valeuristio.enabled. Cela activera les objets Gateway et VirtualService appropriés.
Veuillez noter que le service nginx n'est pas configuré avec le support SSL. Vous devez le configurer
et gérer votre certificat TLS via votre Load-Balancer, Ingress ou Service Mesh.
Exécuter les vérifications préalables 🚦
Les vérifications préalables sont essentielles pour une installation réussie. Les règles suivantes s'appliquent :
- ❌ Échecs des vérifications préalables : Si les vérifications préalables échouent, l'installation ne doit pas continuer tant que l'environnement cible ne répond pas à toutes les exigences. Veuillez contacter notre équipe de support si nécessaire.
- ⚠️ Avertissements des vérifications préalables : Si les vérifications préalables renvoient des avertissements, l'installation peut se poursuivre, mais il est recommandé de traiter ces avertissements pour respecter nos recommandations.
Nous vous conseillons vivement d'exécuter notre script de vérifications préalables pour vous assurer que votre cluster existant répond aux exigences de GitGuardian. Récupérez le script depuis notre dépôt public.
Spécifiez un namespace Kubernetes existant avec l'option -n. Si non spécifié, le script s'exécutera dans votre namespace par défaut.
Remplacez <release-name> par le nom de release helm de votre choix.
./preflights.sh -r <release-name> -n <namespace> oci://registry.replicated.com/gitguardian/gitguardian -f local-values.yaml
Installer l'application
Utilisez la commande suivante pour installer l'application avec votre fichier local-values.yaml.
Remplacez <release-name> par le nom de release helm de votre choix.
Spécifiez un namespace Kubernetes existant avec l'option -n. Si non spécifié, Helm installe GitGuardian dans votre namespace par défaut.
Utilisez l'option --create-namespace pour créer le namespace s'il n'existe pas.
helm install <release-name> --timeout 30m -n <namespace> --create-namespace oci://registry.replicated.com/gitguardian/gitguardian -f local-values.yaml
Note : L'installation peut prendre quelques minutes en raison des migrations de base de données.
Vérifier l'installation
Après une installation réussie, vous devriez voir la sortie suivante :
NAME: <release-name>
LAST DEPLOYED: Mon May 15 16:15:56 2023
NAMESPACE: <namespace>
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing GitGuardian Internal Monitoring.
Ces notes peuvent ensuite être récupérées avec helm get notes <release-name>
Sauvegarder la clé de chiffrement des données
GitGuardian chiffre toutes les informations sensibles de la base de données à l'aide d'une clé de chiffrement (aussi appelée Django Secret Key). En cas de récupération après sinistre, cette clé sera nécessaire pour restaurer vos données.
Lorsque vous ne la spécifiez pas, que ce soit via le paramètre en ligne miscEncryption.djangoSecretKey ou via un secret existant avec miscEncryption.existingSecret, la clé de chiffrement des données est automatiquement générée par le chart Helm. Vous devez la sauvegarder et la conserver dans un emplacement sécurisé. Utilisez la commande suivante
pour afficher la clé :
kubectl get secrets gim-secrets --namespace=<namespace> -o jsonpath='{.data.DJANGO_SECRET_KEY}' | base64 -d
Si nécessaire, spécifiez le namespace Kubernetes avec --namespace (le namespace par défaut est utilisé si non spécifié).
Connexion à l'application
Après une installation réussie, vous devrez récupérer votre mot de passe admin temporaire. Utilisez la commande suivante :
kubectl get secrets gim-secrets --namespace=<namespace> -o jsonpath='{.data.ADMIN_PASSWORD}'| base64 -d
Si nécessaire, spécifiez le namespace Kubernetes avec --namespace (le namespace par défaut est utilisé si non spécifié).
Vous pouvez accéder à l'application en utilisant le nom d'hôte que vous avez fourni, en vous connectant
avec l'e-mail indiqué dans onPrem.adminUser.email et le mot de passe
temporaire.
Dépannage
Si vous rencontrez des problèmes durant l'installation, vous pouvez générer un support bundle pour permettre à l'équipe GitGuardian de diagnostiquer et résoudre les problèmes plus efficacement. Consultez la documentation du support bundle pour des instructions détaillées.
Prochaines étapes
Après une installation réussie :
- Accédez à votre instance GitGuardian via le hostname configuré
- Connectez-vous avec les identifiants administrateur que vous avez définis (changez le mot de passe temporaire à la première connexion)
- Configurez les paramètres d'e-mail pour les notifications
- Mettez en place l'intégration SSO et SCIM (optionnel)
- Intégrez vos premiers dépôts pour démarrer la détection des secrets