Deploiement du Proxy
Guide de deploiement du proxy Data Residency sur Kubernetes et OpenShift
Ce guide vous accompagne dans le deploiement du proxy Data Residency sur votre infrastructure Kubernetes ou OpenShift.
Prerequis#
- Cluster Kubernetes 1.25+ ou OpenShift 4.10+
- Helm 3.x installe
- Base PostgreSQL 14+ accessible depuis le cluster
- Certificat SSL valide (ou cert-manager configure)
- Acces au registre
ghcr.io/siovos
Architecture du proxy#
Installation avec Helm#
1. Ajouter le repo Helm#
helm repo add siovos https://charts.siovos.com
helm repo update2. Creer le namespace#
kubectl create namespace siovos-archi3. Configurer les secrets#
Creez un fichier secrets.yaml :
apiVersion: v1
kind: Secret
metadata:
name: siovos-proxy-secrets
namespace: siovos-archi
type: Opaque
stringData:
DATABASE_URL: "postgresql://user:password@postgres-host:5432/siovos_archi"
JWT_PUBLIC_KEY: |
-----BEGIN PUBLIC KEY-----
[Copiez la cle depuis Siovos Archi > Data Residency]
-----END PUBLIC KEY-----Appliquez le secret :
kubectl apply -f secrets.yaml4. Creer le fichier values#
Creez values.yaml :
replicaCount: 2
image:
repository: ghcr.io/siovos/siovos-archi-data-proxy
tag: "1.0.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 3000
ingress:
enabled: true
className: nginx # ou "openshift-default" pour OpenShift
hosts:
- host: proxy.votre-domaine.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: proxy-tls
hosts:
- proxy.votre-domaine.com
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
existingSecret: siovos-proxy-secrets
# Health checks
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 5
periodSeconds: 105. Installer le chart#
helm install siovos-proxy siovos/siovos-archi-data-proxy \
--namespace siovos-archi \
--values values.yaml6. Verifier le deploiement#
kubectl get pods -n siovos-archi
kubectl logs -n siovos-archi -l app=siovos-proxyConfiguration OpenShift#
Pour OpenShift, ajoutez ces configurations specifiques :
# values-openshift.yaml
ingress:
enabled: true
className: openshift-default
annotations:
route.openshift.io/termination: edge
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALLInstallez avec :
helm install siovos-proxy siovos/siovos-archi-data-proxy \
--namespace siovos-archi \
--values values.yaml \
--values values-openshift.yamlVariables d'environnement#
| Variable | Description | Requis |
|---|---|---|
DATABASE_URL | URL de connexion PostgreSQL | Oui |
JWT_PUBLIC_KEY | Cle publique RS256 pour valider les tokens | Oui |
PORT | Port d'ecoute (defaut: 3000) | Non |
NODE_ENV | Environnement (production) | Non |
LOG_LEVEL | Niveau de logs (info, debug, error) | Non |
Initialisation de la base de donnees#
Le proxy initialise automatiquement le schema au demarrage. Assurez-vous que l'utilisateur PostgreSQL a les droits de creation de tables.
Pour une initialisation manuelle :
# Depuis un pod avec acces a la base
kubectl exec -it -n siovos-archi deploy/siovos-proxy -- npx prisma migrate deployCertificat SSL#
Avec cert-manager#
# certificate.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: proxy-tls
namespace: siovos-archi
spec:
secretName: proxy-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- proxy.votre-domaine.comCertificat auto-signe (developpement)#
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout tls.key -out tls.crt \
-subj "/CN=proxy.votre-domaine.com"
kubectl create secret tls proxy-tls \
--key tls.key --cert tls.crt \
-n siovos-archiHaute disponibilite#
Pour une configuration haute disponibilite :
replicaCount: 3
podDisruptionBudget:
enabled: true
minAvailable: 2
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: siovos-proxy
topologyKey: kubernetes.io/hostnameMonitoring#
Le proxy expose des metriques Prometheus sur /metrics :
# ServiceMonitor pour Prometheus Operator
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: siovos-proxy
namespace: siovos-archi
spec:
selector:
matchLabels:
app: siovos-proxy
endpoints:
- port: http
path: /metrics
interval: 30sDepannage#
Le proxy ne demarre pas#
# Verifier les logs
kubectl logs -n siovos-archi -l app=siovos-proxy --tail=100
# Verifier la connexion a la base
kubectl exec -it -n siovos-archi deploy/siovos-proxy -- \
npx prisma db pullErreur de validation JWT#
Verifiez que la cle publique dans le secret correspond exactement a celle affichee dans Siovos Archi > Data Residency.
Timeout de connexion#
- Verifiez que le firewall autorise le trafic depuis Siovos (IPs :
34.149.x.x,35.190.x.x) - Verifiez que l'Ingress expose bien le service sur HTTPS
- Testez avec curl depuis l'exterieur :
curl https://proxy.votre-domaine.com/health
Mise a jour#
helm repo update
helm upgrade siovos-proxy siovos/siovos-archi-data-proxy \
--namespace siovos-archi \
--values values.yamlDesinstallation#
helm uninstall siovos-proxy -n siovos-archi
kubectl delete namespace siovos-archiLa desinstallation ne supprime pas les donnees PostgreSQL. Sauvegardez ou supprimez manuellement la base si necessaire.
Support#
Pour toute question technique :
- Email Enterprise : enterprise@siovos.com