Au-delà des bases Kubernetes, les Data Engineers déployant Airflow, Spark ou des APIs ML en production ont besoin de Helm, des StatefulSets et de GitOps. Voici ce qu on évalue au niveau Senior.
Qu est-ce que Helm ? Comment l utilisez-vous pour déployer Airflow sur Kubernetes ?
# Helm : gestionnaire de packages Kubernetes
# Chart = package K8s réutilisable
# Ajouter le repo Airflow
helm repo add apache-airflow https://airflow.apache.org
helm repo update
# Installer Airflow avec des valeurs personnalisées
helm install airflow apache-airflow/airflow \
--namespace airflow \
--create-namespace \
--values airflow-values.yaml
# airflow-values.yaml
executor: KubernetesExecutor
env:
- name: AIRFLOW__CORE__LOAD_EXAMPLES
value: 'false'
persistence:
enabled: true
dags:
persistence:
enabled: true
storageClassName: standard
gitSync:
enabled: true
repo: https://github.com/org/dags-repo
branch: mainQuand utilisez-vous un StatefulSet plutôt qu un Deployment dans un contexte data ?
# StatefulSet : pour les workloads qui ont besoin
# d identité stable et de stockage persistant
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kafka
spec:
serviceName: kafka-headless
replicas: 3
template:
spec:
containers:
- name: kafka
image: confluentinc/cp-kafka:7.5
volumeMounts:
- name: data
mountPath: /var/kafka-data
volumeClaimTemplates: # PVC créé automatiquement par pod
- metadata:
name: data
spec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 50GiComment gérez-vous les credentials (clés API, mots de passe) dans un cluster Kubernetes ?
Qu est-ce que GitOps ? Comment ArgoCD synchronise-t-il un cluster Kubernetes ?
# Application ArgoCD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: airflow-prod
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/k8s-infra
targetRevision: main
path: apps/airflow/prod
destination:
server: https://kubernetes.default.svc
namespace: airflow
syncPolicy:
automated:
prune: true # supprimer les ressources retirées du repo
selfHeal: true # resynchroniser si quelqu un modifie K8s manuellementQuelle est la différence entre CeleryExecutor et KubernetesExecutor pour Airflow ?
| CeleryExecutor | KubernetesExecutor | |
|---|---|---|
| Workers | Pool de workers permanents | Un Pod par tâche (créé/détruit) |
| Isolation | Faible (workers partagés) | Maximale (pod dédié) |
| Scalabilité | Fixe ou autoscaling Celery | Automatique K8s |
| Coût | Workers toujours allumés | Paye seulement pendant l exécution |
| Complexité | Nécessite Redis/RabbitMQ | K8s natif, plus simple |
Comment monitorez-vous vos pipelines data déployés sur Kubernetes ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Helm basique, déploiements K8s, secrets management | A déployé Airflow avec Helm, utilise External Secrets ou Workload Identity | Stocke des credentials dans les manifests K8s |
| Senior | StatefulSets, GitOps ArgoCD, KubernetesExecutor, monitoring | A mis en place GitOps avec ArgoCD, a déployé Airflow avec KubernetesExecutor | Ne sait pas ce qu est GitOps, ne connaît pas ArgoCD |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.