OKD (OpenShift Kubernetes Distribution) est la version communautaire open source de Red Hat OpenShift. Elle étend Kubernetes vanilla avec une console web complète, des builds intégrés (Source-to-Image), une gestion des opérateurs via OperatorHub, et des abstractions spécifiques comme les Routes et les Projects. OKD tourne sur Fedora CoreOS (FCOS) pour les nœuds, ce qui lui confère une mise à jour atomique du système.
Idéal pour : équipes cherchant une plateforme Kubernetes clés en main avec CI/CD intégré, interface web riche, et chemin de migration vers OpenShift Enterprise.
Informations essentielles
Origine : Red Hat / IBM (États-Unis) · Licence : Apache 2.0 · Architectures : x86_64, ARM64
Liens : Site officiel · Documentation · GitHub · Releases
Support : OKD est maintenu par la communauté et suit OpenShift upstream. Pas de LTS - chaque release est liée à une version mineure de Kubernetes et de Fedora CoreOS.
Stack par défaut
| Composant | Valeur |
|---|---|
| Runtime | CRI-O (inclus dans FCOS) |
| CNI | OVN-Kubernetes |
| Ingress | HAProxy Router (Routes OKD) + Ingress Nginx |
| DNS | CoreDNS |
| Stockage | Optionnel (CSI drivers) |
| OS nœuds | Fedora CoreOS (FCOS) |
| CLI | oc (superset de kubectl) |
Concepts spécifiques OKD
Projects (namespaces enrichis)
Les Projects sont des namespaces avec RBAC automatique et quotas intégrés.
# Créer un project
oc new-project mon-projet --description="Mon application" --display-name="Mon App"
# Switcher entre projects
oc project mon-projet
oc projects # lister tous les projects
Routes (alternative aux Ingress)
Les Routes exposent un Service HTTP/HTTPS via un hostname, gérées par le HAProxy Router intégré.
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: mon-app
namespace: mon-projet
spec:
host: app.mondomaine.com
to:
kind: Service
name: mon-service
port:
targetPort: 8080
tls:
termination: edge
oc apply -f route.yaml
oc get routes
Les Routes et les Ingress coexistent dans OKD. Les Ingress sont automatiquement convertis en Routes par un controller.
SecurityContextConstraints (SCC)
OKD remplace les PodSecurity Standards de Kubernetes par les SCC, plus granulaires.
# Voir les SCC disponibles
oc get scc
# Assigner un SCC à un ServiceAccount (exemple : anyuid pour images non-root)
oc adm policy add-scc-to-user anyuid -z mon-serviceaccount -n mon-projet
La SCC
restrictedest appliquée par défaut et interdit de tourner en root. Les images Docker qui nécessitent root nécessitent la SCCanyuid.
Builds intégrés (Source-to-Image)
OKD peut builder des images directement depuis le source code via BuildConfig.
# Créer une app depuis un repo Git (Node.js détecté automatiquement)
oc new-app https://github.com/user/mon-app-nodejs.git
# Suivre le build
oc logs -f buildconfig/mon-app-nodejs
# Exposer l'application
oc expose service/mon-app-nodejs
Prérequis
OKD nécessite une infrastructure conséquente (DNS, load balancer, bare-metal ou cloud).
Ressources minimales (cluster 3 masters + 2 workers)
| Nœud | CPU | RAM | Disque |
|---|---|---|---|
| Bootstrap (temporaire) | 4 vCPU | 16 GB | 100 GB |
| Master | 4 vCPU | 16 GB | 100 GB |
| Worker | 2 vCPU | 8 GB | 100 GB |
Prérequis réseau
- DNS : entrées wildcard
*.apps.<cluster>.<domain>etapi.<cluster>.<domain> - Load balancer TCP sur les ports 6443 (API) et 443/80 (apps)
- Accès internet pour télécharger FCOS et les images OKD
Installation (IPI - Installer-Provisioned Infrastructure)
# Télécharger l'installer et oc
curl -LO https://github.com/okd-project/okd/releases/latest/download/openshift-install-linux.tar.gz
tar xzf openshift-install-linux.tar.gz
sudo mv openshift-install /usr/local/bin/
curl -LO https://github.com/okd-project/okd/releases/latest/download/openshift-client-linux.tar.gz
tar xzf openshift-client-linux.tar.gz
sudo mv oc kubectl /usr/local/bin/
# Générer la configuration d'installation
openshift-install create install-config --dir=./cluster
# Déployer
openshift-install create cluster --dir=./cluster --log-level=info
L'installation complète prend 30 à 45 minutes. Le kubeconfig est généré dans
./cluster/auth/kubeconfig.
export KUBECONFIG=./cluster/auth/kubeconfig
oc get nodes
oc get clusterversion
Mise à jour
OKD se met à jour via l'Operator du cluster (Cluster Version Operator).
# Version actuelle
oc get clusterversion
# Canaux de mise à jour disponibles
oc get clusterversion -o jsonpath='{.items[0].spec.channel}'
# Lancer une mise à jour
oc adm upgrade --to-latest=true
# Suivre la progression
oc adm upgrade
watch oc get clusteroperators
Troubleshooting
État des opérateurs du cluster
# Tous les opérateurs doivent être Available=True, Progressing=False, Degraded=False
oc get clusteroperators
# Détail d'un opérateur dégradé
oc describe clusteroperator <nom>
Logs des composants control plane
# API server
oc logs -n openshift-kube-apiserver -l app=openshift-kube-apiserver --tail=100
# etcd
oc logs -n openshift-etcd -l app=etcd --tail=100
# Tous les opérateurs du namespace
oc get pods -n openshift-kube-apiserver
Pod bloqué par une SCC
# Voir le message d'erreur SCC
oc describe pod <nom> | grep -i "scc\|security"
# Identifier la SCC minimale requise
oc adm policy scc-subject-review -f <manifeste.yaml>
Accès console web
# URL de la console
oc whoami --show-console
# Mot de passe admin (installation IPI)
cat ./cluster/auth/kubeadmin-password
Commandes utiles
# oc est un superset de kubectl - toutes les commandes kubectl fonctionnent
oc get nodes -o wide
oc get pods -A
# Gestion des projects
oc new-project <nom>
oc project <nom>
oc projects
# Droits
oc adm policy add-cluster-role-to-user cluster-admin <user>
oc adm policy add-scc-to-user anyuid -z <serviceaccount> -n <project>
# Routes
oc get routes -A
oc expose svc/<nom>
# Builds
oc new-app <git-url>
oc start-build <buildconfig>
oc logs -f bc/<buildconfig>
# État du cluster
oc get clusterversion
oc get clusteroperators
Ressources
- Site officiel : https://www.okd.io
- Documentation : https://docs.okd.io
- GitHub : https://github.com/okd-project/okd
- Releases : https://github.com/okd-project/okd/releases
- Fedora CoreOS : https://fedoraproject.org/coreos/