Orchestration

OKD

Distribution Kubernetes communautaire de Red Hat, upstream d'OpenShift. Console web intégrée, builds S2I, Routes, OperatorHub, CLI oc. Basée sur Fedora CoreOS.

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

ComposantValeur
RuntimeCRI-O (inclus dans FCOS)
CNIOVN-Kubernetes
IngressHAProxy Router (Routes OKD) + Ingress Nginx
DNSCoreDNS
StockageOptionnel (CSI drivers)
OS nœudsFedora CoreOS (FCOS)
CLIoc (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 restricted est appliquée par défaut et interdit de tourner en root. Les images Docker qui nécessitent root nécessitent la SCC anyuid.

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œudCPURAMDisque
Bootstrap (temporaire)4 vCPU16 GB100 GB
Master4 vCPU16 GB100 GB
Worker2 vCPU8 GB100 GB

Prérequis réseau

  • DNS : entrées wildcard *.apps.<cluster>.<domain> et api.<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

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic