#Ausführlicher Lernpfad: Windows 10 + WSL2 + VS Code + IntelliJ + Codex + OKD

Stand: 02.07.2026
Ziel: Du baust eine stabile Entwicklungsumgebung auf Windows 10, arbeitest mit Projekten in WSL2/Linux, nutzt VS Code und IntelliJ als IDEs, verwendest Codex sowohl in WSL als auch nativ unter Windows und installierst OKD lokal als Lerncluster über CRC. Diese Version enthält mehr Erklärungen, mentale Modelle, Fehlerdiagnosen und Übungsaufgaben.

Kernaussage: Installiere die IDE-Oberflächen in der Regel unter Windows. Die Projektdateien, Git, Compiler, Node/JDK/Python und Codex-CLI laufen je nach Workflow in WSL2. VS Code verbindet sich über die WSL-Extension; IntelliJ öffnet WSL-Projekte direkt oder über JetBrains Gateway.


#0. Wie du diesen Lernpfad liest

Dieser Lernpfad ist wie eine Landkarte aufgebaut. Du sollst nicht nur Befehle kopieren, sondern verstehen, welcher Teil deines Systems welche Aufgabe übernimmt. Das ist besonders wichtig, weil du hier mehrere Welten kombinierst:

Windows 10 = Desktop, Fenster, IDE-Oberflächen, Hypervisor, CRC-VM
WSL2       = Linux-Werkstatt für Code, Git, Shell, Toolchains, Codex CLI
VS Code    = Windows-App mit Remote-Verbindung in WSL
IntelliJ   = Windows-App, die WSL-Projekte und WSL-Runtimes nutzen kann
Codex      = KI-Agent, der entweder im Windows-Kontext oder im WSL-Kontext arbeitet
OKD        = Kubernetes/OpenShift-Lerncluster, lokal als VM über CRC

#Das wichtigste Prinzip

Trenne immer diese drei Fragen:

Frage Bedeutung Beispiel
Wo läuft die Oberfläche? Wo öffnet sich das Fenster? VS Code und IntelliJ laufen meist unter Windows.
Wo liegen die Projektdateien? Wo arbeitet Git und wo liegen Repos? Linux-Projekte liegen unter ~/code in WSL.
Wo laufen Befehle? Welche Shell führt Tests, Builds, codex, oc aus? Für Linux-Projekte: WSL-Terminal. Für CRC-Steuerung: PowerShell.

Wenn etwas nicht funktioniert, löst du das Problem meistens, indem du diese drei Fragen erneut beantwortest.

#Lernmethode: erst Bild, dann Befehl

Nutze bei jedem Abschnitt diese Reihenfolge:

  1. Bild verstehen: Was spricht mit wem?
  2. Befehl ausführen: Einen kleinen Schritt machen.
  3. Ergebnis prüfen: Mit status, version, whoami, pwd, git status kontrollieren.
  4. Notizen machen: Was hat funktioniert, was nicht?
  5. Erst dann automatisieren: Codex erst einsetzen, wenn du den Ablauf grob verstehst.

#Mini-Legende

🧠 Erklärung       = Warum dieser Schritt wichtig ist
🧪 Prüfung         = So erkennst du, ob es funktioniert
🧯 Fehlerbild      = Typischer Fehler und Reparatur-Idee
🤖 Codex-Hinweis   = Wie du Codex sinnvoll einsetzt

#1. Zielbild

#1.1 Was du am Ende wirklich können sollst

Das Ziel ist nicht, „alles irgendwie installiert“ zu haben. Das Ziel ist, dass du bewusst zwischen mehreren Arbeitsplätzen wechseln kannst:

Arbeitsplatz A: Linux-Projekt
  Windows öffnet IDE  →  WSL enthält Repo  →  Codex läuft in WSL  →  Tests laufen in Linux

Arbeitsplatz B: Windows-Projekt
  Windows enthält Repo  →  PowerShell führt Befehle aus  →  Codex läuft nativ auf Windows

Arbeitsplatz C: OKD-Lerncluster
  PowerShell startet CRC  →  OKD läuft als VM  →  WSL nutzt oc und YAML-Dateien

Der häufigste Anfängerfehler ist, diese Arbeitsplätze zu vermischen. Beispiel: Das Repo liegt unter C:\Users\..., aber die Tests laufen in WSL. Das kann funktionieren, ist aber oft langsam und erzeugt Rechte-, Pfad- oder Zeilenende-Probleme. Für Linux-Projekte ist daher die Grundregel:

Repo in WSL speichern. IDE von Windows aus verbinden. Befehle im WSL-Terminal ausführen.

#1.2 Was „installieren“ hier bedeutet

„Installieren“ heißt in diesem Setup nicht überall dasselbe:

Wort In diesem Lernpfad bedeutet es
VS Code installieren Windows-App installieren, danach WSL-Remote-Funktion nutzen.
VS Code Server installieren Passiert automatisch in WSL beim ersten code ..
IntelliJ installieren Windows-App installieren, danach WSL-Projektpfade und WSL-Runtimes nutzen.
Codex in WSL installieren Linux-Version der CLI in Ubuntu installieren.
Codex auf Windows installieren Windows-Version der CLI in PowerShell installieren.
OKD installieren Nicht direkt in WSL installieren, sondern CRC auf Windows startet eine lokale OKD-VM.

#1.3 Lernkontrolle

Du hast diesen Abschnitt verstanden, wenn du erklären kannst:

Nach diesem Lernpfad kannst du:


#2. Architekturkarte

#2.1 Die Architektur in einfachen Worten

Stell dir dein System wie ein Haus mit Werkstatt vor:

Windows ist das Haus:
  Bildschirm, Fenster, Tastatur, Installer, Hyper-V/Virtualisierung.

WSL2 ist die Linux-Werkstatt im Haus:
  Dort liegen Werkzeuge wie git, node, java, python, bash und codex.

CRC/OKD ist eine zusätzliche Maschine in der Garage:
  Sie läuft als eigene VM und stellt Kubernetes/OpenShift-Funktionen bereit.

Die IDE ist dabei nicht der Ort, an dem alles installiert sein muss. Sie ist eher das Cockpit. Das Cockpit kann Befehle an WSL senden, Dateien in WSL anzeigen und Terminals in WSL öffnen.

#2.2 Kommunikationswege merken

VS Code → WSL Extension → VS Code Server in WSL → Projektdateien
IntelliJ → \\wsl.localhost\... → Projektdateien und WSL-Tools
PowerShell → crc.exe → OKD-VM
WSL → oc login → OKD API
Codex in WSL → liest/ändert Dateien im WSL-Repo
Codex in Windows → liest/ändert Dateien im Windows-Repo

Wenn eine Fehlermeldung kommt, frage zuerst: Auf welchem Kommunikationsweg bin ich gerade?
Ein DNS-Problem zu api.crc.testing ist ein anderes Problem als ein fehlender code-Befehl in WSL.

flowchart LR subgraph WIN[Windows 10 Host] PS[PowerShell / Windows Terminal] VSC[VS Code UI] IJ[IntelliJ IDEA UI] CW[Codex CLI Windows] CE[Codex IDE Extension] end subgraph WSL[WSL2 Ubuntu] HOME[~/code/repo] GIT[git] NODE[Node/JDK/Python] CL[Codex CLI Linux] VSS[VS Code Server] end PS -->|wsl| WSL VSC -->|WSL Extension| VSS VSS --> HOME IJ -->|öffnet \\wsl.localhost\\Ubuntu\\home\\user| HOME IJ -->|WSL Git/Runtime| GIT CL --> HOME CW -->|Windows-Projekte| PS CE --> VSC CE --> IJ

#Bildliche Merkhilfe

┌──────────────────────────── WINDOWS 10 ────────────────────────────┐
│  VS Code UI       IntelliJ UI       PowerShell       Codex Windows  │
│      │              │                │                  │           │
│      │ WSL Remote   │ WSL Pfad       │ wsl              │ native    │
└──────┼──────────────┼────────────────┼──────────────────┼───────────┘
       ▼              ▼                ▼                  ▼
┌──────────────────────────── WSL2 / Ubuntu ─────────────────────────┐
│  ~/code/projekt     git     node/jdk/python     codex     tests     │
└─────────────────────────────────────────────────────────────────────┘

#3. Was kommt wohin?

#3.1 Warum diese Trennung so wichtig ist

Windows und Linux benutzen unterschiedliche Annahmen:

Thema Windows-Denken Linux-Denken
Pfade C:\Users\Aydin\code /home/aydin/code
Rechte ACLs, Benutzerprofile chmod, chown, Unix-Rechte
Zeilenenden oft CRLF meist LF
Ausführbare Dateien .exe, PATH ausführbares Bit, Shebang, PATH
Symlinks möglich, aber anders alltäglich bei Node, Python, Buildtools

WSL kann zwar auf Windows-Dateien zugreifen, aber das ist eine Übersetzungszone. Für einfache Dateien ist das okay. Für große Repos, viele node_modules, Symlinks, Tests oder Container-nahe Arbeit ist das oft langsam oder fehleranfällig.

#3.2 Gute Ordnerstruktur

Empfehlung:

Windows:
C:\Users\<du>\code\windows-projekte
C:\Tools\crc

WSL:
/home/<du>/code/linux-projekte
/home/<du>/code/okd-yaml
/home/<du>/bin

Nicht ideal für Linux-Projekte:

/mnt/c/Users/<du>/Desktop/mein-projekt
/mnt/c/Users/<du>/Downloads/test

Warum? Desktop und Downloads sind praktische Ablageorte, aber keine gute Entwicklungsbasis. Repos sollen reproduzierbar, versioniert und möglichst nah an der ausführenden Toolchain liegen.

#3.3 Entscheidungsregel

Baue ich ein Linux-/Cloud-/OKD-/Node-/Python-/Java-Projekt?
  → Repo nach WSL: ~/code/...

Baue ich ein reines Windows-/PowerShell-/.NET-Windows-Projekt?
  → Repo nach Windows: C:\Users\...\code\...

Steuere ich CRC selbst?
  → PowerShell auf Windows.

Deploye ich YAML/App-Code nach OKD?
  → WSL mit oc oder IDE-Terminal im WSL-Kontext.
Baustein Empfohlener Ort Warum
VS Code App Windows Offizielle VS-Code-WSL-Dokumentation empfiehlt VS Code auf der Windows-Seite.
VS Code Server WSL, automatisch Wird beim ersten code . in WSL installiert.
IntelliJ IDEA Windows Lokal starten, WSL-Projekte öffnen oder WSL-Runtimes nutzen.
JetBrains Gateway Windows, optional Fortgeschrittener Weg: IDE-Backend direkt in WSL2 starten.
Projekt-Repos WSL: ~/code/... Schneller und weniger Rechte-/Symlink-Probleme als /mnt/c/....
Git WSL und optional Windows Für WSL-Projekte am besten WSL-Git.
Node/JDK/Python WSL Deine Linux-native Toolchain lebt neben dem Code.
Codex CLI für WSL WSL Für Linux-Projekte und Linux-Sandbox.
Codex CLI für Windows Windows Für native Windows-Projekte und Windows-Sandbox.
Codex IDE Extension VS Code / IntelliJ Side-by-side im Editor, Anmeldung mit ChatGPT oder API-Key.
CRC / OKD Windows-Host OKD als lokale VM starten; WSL nutzt nur oc, Git, Projekte und Codex.

#4. Woche 1: WSL2 stabil machen

#4.0 Was WSL2 eigentlich ist

WSL2 ist keine normale App und auch keine komplette Desktop-VM wie VirtualBox. WSL2 ist eine leichtgewichtige Linux-Umgebung, die mit einem echten Linux-Kernel läuft und eng in Windows integriert ist.

Windows Terminal
   │
   ▼
WSL2 Ubuntu
   │
   ├─ Linux-Dateisystem: /home/<user>/...
   ├─ Linux-Prozesse: bash, git, node, java, python
   └─ Zugriff auf Windows-Dateien: /mnt/c/...

Für Entwicklung ist wichtig: WSL2 fühlt sich wie Linux an, aber du bist weiterhin auf einem Windows-Host. Deshalb gibt es zwei Ebenen für Updates, Netzwerk, Speicher und Virtualisierung.

#4.0.1 WSL1 vs. WSL2

Punkt WSL1 WSL2
Kernel Übersetzungsschicht echter Linux-Kernel
Dateisystemleistung in Linux gut für einfache Dinge sehr gut im Linux-Dateisystem
Container-/Cloud-Nähe begrenzt deutlich besser
Für Codex/OKD-Lernumgebung nicht empfohlen empfohlen

Prüfbefehl:

wsl -l -v

Wenn dort bei Ubuntu VERSION 2 steht, bist du auf dem richtigen Weg.

#4.0.2 Mentales Modell für WSL-Befehle

PowerShell-Befehl: wsl --status
  → fragt Windows: Welche WSL-Umgebungen kenne ich?

WSL-Befehl: uname -a
  → fragt Linux: Welcher Kernel läuft hier?

WSL-Befehl: pwd
  → fragt Linux: In welchem Linux-Ordner bin ich?

Verwechsle diese Ebenen nicht. wsl --shutdown gehört nach PowerShell. sudo apt update gehört nach Ubuntu/WSL.

#4.1 Prüfen, ob Windows 10 bereit ist

🧠 Erklärung:
winver zeigt dir deine Windows-Version. wsl --status zeigt den globalen Zustand von WSL. wsl -l -v zeigt installierte Distributionen und ob sie mit WSL1 oder WSL2 laufen.

🧪 Gutes Ergebnis:

NAME      STATE           VERSION
Ubuntu    Running         2

🧯 Wenn VERSION 1 erscheint:

wsl --set-version Ubuntu 2

Falls die Konvertierung scheitert, fehlen oft Windows-Features oder Virtualisierung ist im BIOS/UEFI deaktiviert.

Öffne PowerShell als Administrator:

winver
wsl --status
wsl -l -v

Für WSL2 braucht Windows 10 je nach Architektur mindestens geeignete Builds. Wenn wsl --install nicht verfügbar ist, nutze die manuellen Windows-Features.

#4.2 WSL installieren oder aktualisieren

🧠 Was passiert bei wsl --install -d Ubuntu?

Windows aktiviert die WSL-Komponenten, installiert die gewählte Distribution und richtet einen Linux-Benutzer ein. Dieser Linux-Benutzer ist nicht automatisch derselbe wie dein Windows-Benutzer, auch wenn du denselben Namen wählen kannst.

Windows-Benutzer: C:\Users\Aydin
WSL-Benutzer:     /home/aydin

🧠 Was macht wsl --shutdown?
Es beendet alle laufenden WSL-Distributionen. Das ist hilfreich nach Updates, Netzwerkproblemen oder wenn Prozesse hängen.

🧪 Nach dem Update prüfen:

wsl --version
wsl -l -v

Wenn wsl --version auf deinem Windows 10 nicht verfügbar ist, ist das nicht automatisch schlimm. Dann ist deine WSL-Verwaltung älter und du nutzt die manuellen Installations-/Updatewege.

wsl --install -d Ubuntu
wsl --set-default-version 2
wsl --update
wsl --shutdown
wsl -l -v

Wenn du eine alte Windows-10-Version hast und wsl --install nicht funktioniert:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Danach neu starten, Linux-Kernel-Update installieren und Ubuntu aus dem Microsoft Store oder per wsl --install -d Ubuntu einrichten.

#4.3 WSL-Grundpakete

🧠 Warum diese Pakete?

Paket Zweck
curl Dateien/Installer aus dem Web laden.
ca-certificates TLS/HTTPS-Zertifikate prüfen.
git Versionskontrolle.
build-essential Compiler und Basis-Buildtools.
unzip Archive entpacken.
jq JSON im Terminal lesen und filtern.
ripgrep sehr schnelle Textsuche im Repo.
fd-find schnelle Dateisuche.

Diese Werkzeuge sind dein Linux-Werkzeugkasten. Auch Codex profitiert davon, weil es Tests, Suchen und Analysebefehle zuverlässiger ausführen kann.

🧪 Prüfen:

git --version
curl --version
rg --version || ripgrep --version

In Ubuntu/WSL:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ca-certificates git build-essential unzip jq ripgrep fd-find
mkdir -p ~/code
cd ~/code

#4.4 Git-Grundkonfiguration

🧠 Warum core.autocrlf input?

Windows nutzt häufig CRLF-Zeilenenden, Linux meist LF. Wenn du Linux-Projekte in WSL bearbeitest, soll Git beim Commit eher Linux-freundliche LF-Zeilenenden behalten. input bedeutet vereinfacht: Beim Commit normalisieren, aber beim Checkout nicht automatisch Windows-Zeilenenden erzwingen.

🧪 Prüfen:

git config --global --list

🤖 Codex-Hinweis:
Bevor Codex größere Änderungen macht, sollte git status sauber sein. Dann kannst du nach Codex-Arbeit mit git diff genau sehen, was passiert ist.

git config --global user.name "Dein Name"
git config --global user.email "deine-email@example.com"
git config --global core.autocrlf input
git config --global init.defaultBranch main

#4.5 Tagesübung

#4.6 Zusatzübung: Windows- und Linux-Pfad vergleichen

Führe in WSL aus:

pwd
explorer.exe .

pwd zeigt den Linux-Pfad. explorer.exe . öffnet denselben Ort im Windows Explorer. Dadurch lernst du: Windows kann WSL-Dateien anzeigen, aber die Quelle bleibt das Linux-Dateisystem.

#4.7 Mini-Checkliste WSL


#5. Woche 2: VS Code auf WSL einrichten

#5.0 Was bei VS Code + WSL wirklich passiert

VS Code besteht in diesem Setup aus zwei Teilen:

Windows-Seite:
  VS Code Fenster, Menüs, Themes, Tastaturkürzel

WSL-Seite:
  VS Code Server, Terminal, Sprachserver, Linter, Debugger, Projektzugriff

Wenn du in WSL code . ausführst, öffnet sich zwar ein Windows-Fenster, aber der Arbeitskontext ist Linux. Das erkennst du unten links an WSL: Ubuntu.

#5.0.1 Warum nicht VS Code als Linux-GUI in WSL installieren?

Das wäre unnötig kompliziert. Der offizielle und stabile Weg ist:

VS Code App unter Windows
+ WSL Extension
+ Projekt in WSL öffnen

So bekommst du Windows-Performance für die Oberfläche und Linux-Nähe für Toolchains.

#5.1 Installationsbild

sequenceDiagram participant U as Du participant W as Windows VS Code participant X as WSL Extension participant L as WSL Ubuntu participant S as VS Code Server U->>W: VS Code unter Windows installieren U->>W: WSL Extension installieren U->>L: cd ~/code/projekt U->>L: code . W->>L: verbindet sich per WSL L->>S: installiert VS Code Server einmalig S->>U: Editor arbeitet im Linux-Kontext

#5.2 VS Code richtig installieren

🧠 Warum „Add to PATH“ wichtig ist:
Der Befehl code . funktioniert in WSL nur zuverlässig, wenn Windows den VS-Code-Launcher kennt und VS Code die WSL-Integration korrekt bereitstellt.

🧪 Prüfen in PowerShell:

where code

🧪 Prüfen in WSL:

code --version

Wenn code in WSL nicht gefunden wird, öffne VS Code einmal unter Windows, installiere die WSL-Extension und starte Terminal/WSL neu.

  1. VS Code unter Windows installieren, nicht als Linux-GUI in WSL.
  2. Beim Installer Add to PATH aktivieren.
  3. VS Code öffnen und Extension installieren:
    • WSL von Microsoft
    • Optional: Remote Development Pack
    • Codex IDE Extension von OpenAI

#5.3 Projekt aus WSL öffnen

🧠 Was code . bedeutet:

code = öffne VS Code
.    = aktueller Ordner

Wenn du also in /home/aydin/code/hello-wsl-codex stehst und code . ausführst, sagst du: „Öffne genau diesen Linux-Ordner in VS Code.“

🧪 Drei Kontrollpunkte in VS Code:

  1. Unten links steht WSL: Ubuntu.
  2. Das Terminal in VS Code zeigt einen Linux-Prompt.
  3. pwd zeigt /home/..., nicht /mnt/c/....
pwd
uname -a
git status
cd ~/code
mkdir hello-wsl-codex && cd hello-wsl-codex
git init
printf '# Hello WSL Codex\n' > _intern/sources/_intern\sources\README.md
code .

Du bist richtig verbunden, wenn:

echo $WSL_DISTRO_NAME
pwd

eine Linux-Distribution und ein Pfad wie /home/<user>/code/... erscheinen.

#5.4 Extensions verstehen

🧠 Warum Extensions manchmal doppelt wirken:

Einige Extensions betreffen nur das Aussehen. Diese laufen lokal auf Windows. Andere Extensions müssen Code analysieren oder Tools ausführen. Diese sollten in WSL installiert sein.

Theme Extension       → Windows reicht
Python Extension      → in WSL installieren, wenn Python-Projekt in WSL liegt
ESLint/Prettier       → in WSL installieren, wenn node_modules in WSL liegt
Kubernetes/OpenShift  → oft lokal okay, Terminal/oc-Kontext aber prüfen
Codex Extension       → im IDE-Kontext verwenden, Repo-Kontext beachten

🧯 Fehlerbild: Extension sieht Projektdateien, aber findet Runtime nicht.
Meist läuft die Extension lokal, während Runtime in WSL liegt. Lösung: „Install in WSL“ wählen oder Projekt als WSL-Remote öffnen.

VS Code Extensions
├─ Lokal / Windows: Theme, Icons, UI, Keymap
└─ Remote / WSL: Sprache, Linter, Debugger, Tooling, Codex-Kontext

Wenn VS Code bei einer Extension Install in WSL anbietet, nutze das für Sprache/Runtime-nahe Erweiterungen.

#5.5 Tagesübung

#5.6 Zusatzübung: Extension-Ort erkennen

Öffne in VS Code die Extensions-Ansicht. Achte auf Hinweise wie:

Local - Installed
WSL: Ubuntu - Installed
Install in WSL: Ubuntu

Schreibe dir für deine wichtigsten Extensions auf, wo sie laufen. Das verhindert später Debugging-Frust.

#5.7 VS-Code-Fehlerdiagnose als Baum

code . öffnet kein richtiges WSL-Fenster?
├─ Unten links steht nicht WSL?
│  └─ Command Palette → WSL: Reopen Folder in WSL
├─ code-Befehl fehlt?
│  └─ VS Code unter Windows öffnen, PATH/WSL-Extension prüfen, Terminal neu starten
└─ Projekt ist langsam?
   └─ Prüfen: liegt es unter /mnt/c? Dann nach ~/code verschieben

#6. Woche 3: IntelliJ mit WSL nutzen

#6.0 IntelliJ und WSL: zwei sinnvolle Betriebsarten

Bei IntelliJ gibt es zwei Hauptwege:

Einfacher Weg:
  IntelliJ läuft unter Windows und öffnet Dateien aus WSL.

Remote-/Gateway-Weg:
  Ein IDE-Backend läuft in WSL, die Oberfläche verbindet sich damit.

Für den Start ist der einfache Weg besser. Er ist leichter zu verstehen und reicht für viele Projekte. Gateway ist interessant, wenn du wirklich eine remote-artige Architektur willst oder große Projekte stärker im Linux-Kontext halten möchtest.

#6.0.1 Wichtiger Unterschied zu VS Code

VS Code hat eine sehr stark integrierte Remote-WSL-Erfahrung. IntelliJ kann WSL sehr gut nutzen, aber du musst häufiger bewusst auswählen:

Das ist kein Fehler. IntelliJ ist sehr mächtig, aber du musst die Toolchain-Zuordnung sauber einstellen.

#6.1 Empfohlene Wege

flowchart TB A[IntelliJ + WSL] --> B[Einfacher Weg] A --> C[Fortgeschrittener Weg] B --> B1[IntelliJ unter Windows installieren] B1 --> B2[Projekt unter \\wsl.localhost\\Ubuntu öffnen] B2 --> B3[Git/Node/JDK aus WSL nutzen] C --> C1[JetBrains Gateway] C1 --> C2[Provider: WSL] C2 --> C3[Backend IDE läuft in WSL2]

#6.2 Weg A: IntelliJ lokal auf Windows, Projekt in WSL

🧠 Was ist \\wsl.localhost\Ubuntu\...?

Das ist ein Windows-Netzwerkpfad, über den Windows auf das WSL-Dateisystem zugreift. Der eigentliche Speicherort bleibt aber Linux.

Linux-Sicht:   /home/aydin/code/projekt
Windows-Sicht: \\wsl.localhost\Ubuntu\home\aydin\code\projekt

🧪 Gutes Zeichen:
Im IntelliJ-Terminal sollte pwd einen Linux-Pfad zeigen, wenn du ein WSL-Terminal verwendest.

🧯 Nicht ideal:
Ein Projekt über /mnt/c/... öffnen und dann Linux-Tools darauf loslassen. Das kann gehen, ist aber für viele Workflows schlechter.

  1. IntelliJ IDEA unter Windows installieren.
  2. Projekt in WSL unter ~/code/projekt ablegen.
  3. In IntelliJ öffnen:
\\wsl.localhost\Ubuntu\home\<dein-user>\code\projekt

Alternativ im Explorer:

\\wsl$\Ubuntu\home\<dein-user>\code\projekt

#6.3 WSL-Git in IntelliJ

🧠 Warum WSL-Git?

Wenn dein Repo in WSL liegt, sollte Git möglichst auch aus WSL kommen. Dann stimmen Pfade, Dateirechte, Hooks und Zeilenenden besser zusammen.

Repo: /home/aydin/code/app
Git:  /usr/bin/git

🧪 Prüfen im IntelliJ-Terminal:

which git
git status

Wenn which git nichts findet, fehlt Git in WSL oder dein IntelliJ-Terminal ist nicht im WSL-Kontext.

Wenn IntelliJ das Projekt über einen WSL-Pfad öffnet, kann es Git aus WSL verwenden. Manuell findest du es hier:

Settings → Version Control → Git → Path to Git executable
\\wsl$\Ubuntu\usr\bin\git

#6.4 Node/JDK/Python aus WSL

🧠 Warum Runtime-Zuordnung wichtig ist:

Die IDE kann Code anzeigen, aber Build und Tests brauchen echte Laufzeitumgebungen. Wenn dein Projekt in WSL liegt, sollen diese Laufzeitumgebungen ebenfalls in WSL liegen.

Java-Projekt in WSL  → JDK aus WSL verwenden
Node-Projekt in WSL  → Node aus WSL verwenden
Python-Projekt WSL   → Python Interpreter aus WSL verwenden

🧪 Prüfbefehle in WSL:

which java && java -version
which node && node --version
which python3 && python3 --version

🤖 Codex-Hinweis:
Wenn Codex Tests vorschlägt, achte darauf, dass sie im richtigen Terminal laufen. Ein npm test in Windows ist nicht dasselbe wie npm test in WSL, wenn node_modules in WSL installiert wurden.

Für Node.js:

Settings → Languages & Frameworks → JavaScript Runtime
Node runtime → Add → Add WSL → Ubuntu → /usr/bin/node

Für Java/Kotlin:

sudo apt install -y openjdk-21-jdk
which java
java -version

Dann in IntelliJ den JDK/Run Target aus WSL wählen.

#6.5 Weg B: JetBrains Gateway mit WSL2

🧠 Wann Gateway sinnvoll ist:

Gateway ist sinnvoll, wenn die IDE-Backend-Prozesse vollständig im Linux-Kontext laufen sollen. Das ähnelt einem Remote-Server-Setup. Für Lernzwecke solltest du Gateway erst verwenden, wenn du den einfachen WSL-Pfad verstanden hast.

Einfacher Weg zuerst:
  Windows IntelliJ → WSL-Dateien/Runtimes

Gateway später:
  Windows Client → IDE Backend in WSL → Projekt

🧯 Typischer Fehler:
Gateway, WSL-Pfade, Windows-JDK und WSL-JDK gleichzeitig mischen. Lösung: erst einen Weg stabil einrichten, dann erweitern.

Dieser Weg ist schwerer, aber sauber für größere Remote-/WSL-Setups:

JetBrains Gateway → All Providers → WSL → New Connection → Ubuntu → IDE Version → Projekt → Start IDE and Connect

Nutze diesen Weg erst, wenn der einfache Weg läuft.

#6.6 Tagesübung

#6.7 IntelliJ-Checkliste


#7. Woche 4: Codex CLI, IDE-Extension und Alltag

#7.0 Codex als Mitarbeiter verstehen, nicht als Magie

Codex ist am nützlichsten, wenn du es wie einen sehr schnellen Junior-/Pair-Programmer behandelst:

Du gibst Ziel + Grenzen + Kontext.
Codex schlägt Plan + Änderungen vor.
Du prüfst Diff + Tests.
Du entscheidest, ob es in Git übernommen wird.

Schlechte Nutzung:

Mach alles fertig.

Bessere Nutzung:

Analysiere zuerst das Projekt. Zeige mir einen Plan. Ändere nur Dateien im Ordner src/ und tests/. Führe Tests aus. Erkläre mir danach den Diff.

#7.0.1 Codex-Kontext ist immer lokal

Codex sieht nicht automatisch „deinen Computer“. Es arbeitet in einem bestimmten Projektordner und mit bestimmten Berechtigungen.

codex gestartet in ~/code/app
  → guter Kontext: dieses Repo
  → schlechter Kontext: cd ~ und dann codex starten

Starte Codex deshalb immer aus dem Projektordner.

#7.1 Codex-Arbeitsmodell

🧠 Warum Plan → Änderung → Test so wichtig ist:

Ohne Plan weißt du nicht, was Codex vorhat. Ohne Tests weißt du nicht, ob die Änderung funktioniert. Ohne Diff weißt du nicht, was wirklich geändert wurde.

Plan lesen      = Absicht prüfen
Diff lesen      = tatsächliche Änderung prüfen
Tests ausführen = Verhalten prüfen
Commit machen   = sauberen Stand speichern

🧪 Standardablauf vor jeder größeren Codex-Aufgabe:

git status
codex
# Nach Arbeit:
git diff
git status
Prompt → Kontext prüfen → Plan → Änderung → Tests → Diff prüfen → Commit
flowchart LR P[Du beschreibst Aufgabe] --> K[Codex liest Repo-Kontext] K --> A[Codex schlägt Plan vor] A --> E[Dateien ändern] E --> T[Tests/Commands] T --> D[Diff prüfen] D --> C[Commit oder Nachbesserung]

#7.2 Codex-Modi im Kopf behalten

#7.3 Gute Prompts nach Situation

Erklären lassen, ohne Änderungen:

Erkläre mir die Projektstruktur. Ändere keine Dateien. Zeige mir, welche Ordner wichtig sind und welche Befehle vermutlich Tests starten.

Kleine Änderung:

Füge eine kleine Funktion hinzu. Arbeite nur in src/ und tests/. Zeige zuerst den Plan. Führe danach die Tests aus und erkläre den Diff.

OKD-YAML generieren:

Erstelle Kubernetes/OKD-YAML für diese App. Keine Secrets im Klartext. Lege alles unter k8s/ ab. Erkläre Deployment, Service und Route.

Fehlerdebugging:

Analysiere diese Fehlermeldung. Nenne drei mögliche Ursachen, sortiert nach Wahrscheinlichkeit. Ändere noch nichts.

#7.4 Sicherheitsgrenzen für Codex

Gib Codex klare Grenzen:

Nicht erlaubt:
- .env lesen
- SSH Keys lesen
- globale Pakete installieren
- oc delete project ausführen
- Dateien außerhalb dieses Repos ändern

Erlaubt:
- Dateien im Repo lesen
- Tests ausführen
- neue Dateien in src/, tests/, docs/, k8s/ anlegen

Das verhindert nicht jeden Fehler, aber es macht die Arbeit kontrollierbarer.

Modus Nutzung Merksatz
Chat Fragen, Erklären, Planen „Denk mit, ändere noch nichts.“
Agent Dateien bearbeiten und Befehle mit Zustimmung ausführen „Arbeite, aber frag bei riskanten Aktionen.“
Full Access / Danger Nur in Sandbox-Testprojekten „Maximale Freiheit, maximale Verantwortung.“

#8. Codex nativ auf Windows

#8.0 Wann Windows-Codex sinnvoll ist

Nutze Codex nativ auf Windows für Projekte, die auch wirklich Windows-nah sind:

PowerShell-Skripte
Windows-Automatisierung
.NET-/Desktop-Projekte
Dateien unter C:\Users\...\code

Nicht ideal ist Windows-Codex für ein Repo, dessen eigentliche Toolchain in WSL liegt. Dann kann Codex zwar Dateien sehen, aber Befehle, Pfade und Tests passen möglicherweise nicht.

#8.0.1 Windows-Codex und WSL-Codex nicht verwechseln

PowerShell:
  where codex
  codex --version

WSL:
  which codex
  codex --version

Beide können installiert sein. Das ist okay. Entscheidend ist, aus welchem Terminal du Codex startest.

Öffne PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
codex

Prüfen:

where codex
codex --version

Empfohlene Windows-Nutzung:

C:\Users\<du>\code\windows-projekt
PowerShell → codex
VS Code/IntelliJ Windows-Projekt → Codex Extension

Merke: Windows-Codex und WSL-Codex sind getrennte Installationen mit getrennten Home-Verzeichnissen und Konfigurationen.


#9. Codex in WSL

#9.0 Wann WSL-Codex sinnvoll ist

Nutze Codex in WSL für alles, was Linux-/Cloud-/Server-nah ist:

Node.js Backend
Python CLI/API
Java/Spring/Quarkus
Docker-nahe Projekte
Kubernetes/OKD YAML
Shell-Skripte

WSL-Codex hat denselben Blick auf das Projekt wie deine Linux-Tools. Das reduziert Pfadprobleme.

#9.0.1 Startordner ist entscheidend

Guter Start:

cd ~/code/mein-projekt
codex

Schlechter Start:

cd ~
codex

Warum? Im Home-Verzeichnis liegen viele private oder irrelevante Dateien. Codex soll nur den Projektkontext bekommen, den es wirklich braucht.

In Ubuntu/WSL:

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex

Prüfen:

which codex
codex --version

Empfohlene WSL-Nutzung:

mkdir -p ~/code
cd ~/code/dein-projekt
codex

Wichtig: Aktuelle Codex-Versionen sollten in WSL2 laufen. WSL1 ist für aktuelle Codex-Versionen nicht mehr die Zielumgebung.


#10. Plugins und Extensions

#10.0 CLI vs. IDE-Extension

Variante Stärke Schwäche
CLI sehr gut für Terminal, Tests, Repo-weite Aufgaben weniger visuelle Editor-Integration
VS-Code-Extension gut für Arbeit direkt im Editor Kontext hängt am geöffneten Workspace
IntelliJ-Plugin gut für JetBrains-Projekte Toolchain-Kontext bewusst prüfen

Für den Anfang reicht oft:

VS Code/IntelliJ zum Lesen und Editieren
Codex CLI im Projektordner für Agent-Aufgaben
Codex Extension für kleine Fragen direkt im Editor

#10.1 VS Code

Installiere in VS Code:

Codex erscheint nach Installation in der Sidebar. Wenn nicht, VS Code neu starten.

#10.2 IntelliJ

Installiere in IntelliJ:

Settings → Plugins → Marketplace → Codex / OpenAI Codex → Install

Dann anmelden mit:

#10.3 CLI und IDE teilen Konfiguration pro Umgebung

🧠 Warum getrennte Konfigurationen gut sind:

Windows und WSL dürfen unterschiedliche Sandbox- und Approval-Regeln haben. Zum Beispiel kann Windows-Codex für Windows-Projekte anders arbeiten als WSL-Codex für Linux-Projekte.

Windows config: C:\Users\<du>\.codex\config.toml
WSL config:     /home/<du>/.codex/config.toml

Ändere Konfigurationen langsam. Wenn du nicht sicher bist, bleibe bei Approval/Workspace-Write statt Full Access.

Auf WSL:

nano ~/.codex/config.toml

Auf Windows:

notepad $env:USERPROFILE\.codex\config.toml

Beispiel:

model = "gpt-5.5"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
model_reasoning_effort = "high"

[windows]
sandbox = "elevated"

#11. Erster Testlauf

#11.0 Warum ein Mini-Projekt wichtig ist

Installationen wirken oft erfolgreich, bis man den ersten echten Ablauf testet. Ein Mini-Projekt prüft mehrere Dinge gleichzeitig:

Git funktioniert
Codex startet im richtigen Ordner
Codex kann Dateien anlegen
Tests können laufen
Du kannst den Diff lesen

Mache den ersten Test bewusst in einem Wegwerf-Repo. So kannst du ohne Angst üben.

#11.1 Mini-Projekt bauen

mkdir -p ~/code/codex-test
cd ~/code/codex-test
git init
cat > _intern/sources/_intern\sources\README.md <<'TXT'
# Codex Test

Ziel: kleine CLI-App mit Tests.
TXT
codex

Prompt an Codex:

Erstelle eine kleine Python-CLI, die zwei Zahlen addiert. Lege Tests an, führe sie aus und erkläre mir danach den Diff.

#11.2 Nach Codex-Arbeit prüfen

🧠 Was du beim Diff lesen solltest:

Achte auf:

git diff --stat
git diff

git diff --stat gibt dir erst die Übersicht. git diff zeigt Details.

git status
git diff
pytest -q  # falls Python/pytest verwendet wurde

#11.3 Guter Prompt-Starter

Kontext: Dieses Repo liegt in WSL2 unter ~/code/projekt.
Ziel: Richte eine minimale Entwicklungsumgebung ein.
Arbeitsweise: Bitte zuerst Plan zeigen, dann kleine Änderungen, dann Tests ausführen.
Grenzen: Keine Secrets lesen, keine globalen Systemänderungen ohne Nachfrage.

#12. Fehlerbilder und Lösungen

#12.0 Fehler systematisch eingrenzen

Nutze diese Reihenfolge:

1. Wo bin ich?        pwd / echo $WSL_DISTRO_NAME / PowerShell erkennen
2. Was fehlt?         command not found / version prüfen
3. Welcher Pfad?      /home/... oder /mnt/c/... oder C:\...
4. Welche Rechte?     ls -la / Administrator / sudo
5. Welches Netzwerk?  DNS, Proxy, VPN, api.crc.testing
6. Welche Umgebung?   Windows-Codex oder WSL-Codex

#12.1 Diagnosebefehle

# PowerShell
wsl -l -v
where code
where codex
crc status
# WSL
pwd
uname -a
echo $WSL_DISTRO_NAME
which git
which codex
which oc
git status

#12.2 Merksatz

Erst Umgebung klären, dann Tool reparieren.

Viele Fehler entstehen nicht, weil ein Tool kaputt ist, sondern weil du es aus der falschen Umgebung startest.

Symptom Ursache Lösung
code . geht nicht in WSL VS Code nicht im PATH oder Terminal nicht neu gestartet VS Code Installer mit „Add to PATH“, Terminal neu öffnen
VS Code zeigt kein WSL: Ubuntu Lokales Fenster statt Remote-Fenster Ctrl+Shift+PWSL: Reopen Folder in WSL
Projekt langsam Repo liegt unter /mnt/c/... Nach ~/code/... verschieben
Codex in WSL startet nicht WSL1 oder kaputte Installation wsl -l -v, auf Version 2 setzen, Codex neu installieren
IntelliJ findet Git nicht Git nur in WSL installiert Git-Pfad auf \\wsl$\Ubuntu\usr\bin\git setzen
Codex Windows ≠ Codex WSL Zwei verschiedene Umgebungen where codex vs. which codex prüfen
Codex fragt zu oft Approval-Policy streng In config.toml bewusst konfigurieren, nicht blind auf Full Access stellen
Rechte-/Symlink-Probleme Windows-Dateisystem und Linux-Tools gemischt Repo in WSL-Home halten

#13. Sicherheits- und Arbeitsregeln

#13.0 Warum Sicherheit hier praktisch ist

Sicherheit bedeutet hier nicht nur „keine Hacker“. Es bedeutet auch:

Git ist dein Sicherheitsnetz.
Approval ist deine Bremse.
Tests sind deine Kontrolle.
Diff ist deine Wahrheit.

#13.1 Die goldenen Regeln

  1. Arbeite in Git-Repos.
  2. Vor großen Codex-Aufgaben: git status muss sauber sein.
  3. Lass Codex zuerst planen.
  4. Lies den Diff.
  5. Führe Tests lokal aus.
  6. Gib keine .env, Tokens oder Passwörter in Prompts.
  7. Nutze Full Access nur in Wegwerf- oder stark kontrollierten Projekten.

#13.2 Visuelle Sicherheitsampel

🟢 Chat / Erklären       → sicher für Lernen und Verständnis
🟡 Agent + Approval      → gut für normale Entwicklung
🔴 Full Access / YOLO    → nur temporär und bewusst

#14. OKD lokal installieren: CRC auf Windows + WSL anbinden

#14.0 Was OKD ist, bevor du es installierst

OKD ist die Community-Variante der OpenShift-Plattform. OpenShift/OKD baut auf Kubernetes auf und ergänzt unter anderem Entwickler-Workflows, Web-Konsole, Routes, Builds, Projekte/Namespaces, Operatoren und Sicherheitskonzepte.

Sehr vereinfacht:

Kubernetes:
  Startet Container, verwaltet Pods, Services, Deployments.

OKD/OpenShift:
  Kubernetes + Entwicklerplattform + Web-Konsole + Routes + zusätzliche Policies/Tools.

Für deinen Lernpfad ist OKD wertvoll, weil du damit Cloud-native Entwicklung lokal üben kannst:

App schreiben → Image/Deployment definieren → Service bereitstellen → Route öffnen → Logs prüfen

#14.0.1 Wichtige OKD-Begriffe

Begriff Einfache Erklärung Beispiel
Cluster Gesamtes OKD-System Deine lokale CRC-VM.
Node Maschine, die Workloads ausführt Bei CRC meist ein Single Node.
Pod kleinste laufende Einheit Ein Container oder mehrere zusammen.
Deployment beschreibt gewünschte Pod-Anzahl und Updates „Starte 1 Pod dieser App.“
Service stabile interne Adresse für Pods „Leite Traffic zu diesen Pods.“
Route externe URL für einen Service hello.apps-crc.testing.
Project/Namespace logischer Arbeitsbereich codex-demo.
oc OpenShift CLI oc get pods, oc logs.

#14.0.2 Warum CRC und nicht direkt OKD in WSL?

CRC startet eine eigene virtuelle Maschine. WSL2 ist selbst bereits eine virtualisierte Linux-Umgebung. Eine VM in einer VM ist verschachtelte Virtualisierung und in diesem Fall nicht der stabile Lernweg.

Darum:

Richtig für dich:
  Windows Host → CRC → OKD-VM
  WSL2 → oc CLI → OKD API

Nicht empfohlen:
  WSL2 → CRC → OKD-VM

WSL bleibt deine Werkstatt. CRC/OKD ist der Cluster, den du von dort bedienst.

Empfohlener Weg für deinen Rechner: OKD läuft lokal als Single-Node-Cluster über CRC / CodeReady Containers auf dem Windows-Host. WSL2 bleibt deine Linux-Werkstatt für oc, Git, Skripte, Codex und Projekte. Installiere CRC nicht „in WSL“, weil CRC selbst eine VM startet und verschachtelte Virtualisierung dafür nicht unterstützt wird.

#14.1 Zielbild OKD

🧠 So liest du das OKD-Bild:

Du schreibst YAML:
  „Ich will ein Deployment, einen Service und eine Route.“

oc sendet YAML an OKD:
  „Bitte bringe den Cluster in diesen Zustand.“

OKD arbeitet:
  erstellt Pods, Services, Routes und überwacht den Zustand.
flowchart LR subgraph WIN[Windows 10 Host] CRC[CRC.exe] VM[OKD Single Node VM] POW[PowerShell] IJ[IntelliJ / VS Code] end subgraph WSL[WSL2 Ubuntu] OC[oc CLI] CODE[~/code/apps] CX[Codex CLI] end POW --> CRC CRC --> VM IJ --> CODE CX --> CODE OC -->|oc login https://api.crc.testing:6443| VM CODE -->|build/deploy YAML| OC
┌──────────────────────── WINDOWS 10 ────────────────────────┐
│  crc.exe  ── startet ──►  OKD Single Node VM                │
│     ▲                         ▲                             │
│     │                         │ Web Console / API           │
│ PowerShell                    │ https://api.crc.testing:6443 │
└─────┼─────────────────────────┼─────────────────────────────┘
      │                         │
┌─────▼─────────────────────────▼─────────────────────────────┐
│ WSL2 Ubuntu: oc CLI + Codex + Git + Projektdateien           │
│ ~/code/app  ──► oc apply / oc new-app / oc logs              │
└──────────────────────────────────────────────────────────────┘

#14.2 Entscheidung: CRC, SNO oder vollständiger OKD-Cluster?

🧠 Warum CRC zuerst?

CRC nimmt dir viele Infrastrukturthemen ab. Du musst am Anfang nicht DNS, Load Balancer, Bootstrap Node, Control Plane und Worker planen. Dadurch kannst du dich zuerst auf Entwicklerwissen konzentrieren:

oc login
oc new-project
oc apply
oc get pods
oc logs
oc expose

Später kannst du SNO oder einen echten Cluster lernen. Dann verstehst du aber schon, was im Cluster passiert.

#14.2.1 Lernreihenfolge für OKD

Stufe 1: CRC lokal starten und Web-Konsole öffnen
Stufe 2: oc-Befehle verstehen
Stufe 3: Deployment, Service, Route manuell erzeugen
Stufe 4: YAML-Dateien versionieren
Stufe 5: App aus eigenem Repo deployen
Stufe 6: Logs, Events, Rollouts debuggen
Stufe 7: SNO/vollständige Installation verstehen
Option Für dich geeignet? Wann nehmen? Warnung
CRC mit OKD-Preset ✅ Ja, zuerst Lokales Lernen, App-Deployment, Web-Konsole, oc, Routes, BuildConfig, Operators ausprobieren Läuft als lokale VM; braucht genug CPU/RAM/Disk und Windows darf nicht Home sein.
Single Node OKD / SNO 🟡 später Du hast eine starke VM, einen Mini-PC oder Bare-Metal-Server und willst echtes Installationswissen lernen Erfordert DNS, ISO, Installer, Storage-Planung; nicht einfach „apt install okd“.
Vollständiger OKD-Cluster 🔴 nicht als erster Schritt Homelab, mehrere Nodes, HA, echte Plattform-Administration Deutlich komplexer: Bootstrap, Control Plane, Worker, Load Balancer, DNS, Zertifikate.

#14.3 Voraussetzungen prüfen

🧠 Warum OKD viel RAM braucht:

Ein OKD-Cluster besteht nicht nur aus deiner App. Schon im Leerlauf laufen viele Plattform-Komponenten:

API Server
Controller
Scheduler
etcd
Ingress/Router
Console
Monitoring-Komponenten
Operatoren
Registry/Build-Komponenten je nach Setup

Darum fühlt sich OKD schwerer an als ein einzelner Docker-Container.

#14.3.1 Ressourcen mental planen

Windows selbst braucht RAM
WSL2 braucht RAM
IDE braucht RAM
Browser/Web-Konsole braucht RAM
CRC/OKD braucht viel RAM

Wenn dein Rechner 16 GB RAM insgesamt hat, kann es knapp werden. Dann schließe Browser-Tabs, Docker Desktop, andere VMs und nicht benötigte IDEs.

#14.3.2 BIOS/UEFI-Virtualisierung

Wenn crc start früh scheitert, prüfe, ob Virtualisierung im BIOS/UEFI aktiv ist. Je nach Hersteller heißt die Option zum Beispiel:

Intel VT-x
Intel Virtualization Technology
AMD-V
SVM Mode

Unter Windows kannst du im Task-Manager unter „Leistung → CPU“ oft sehen, ob Virtualisierung aktiviert ist.

Windows-Seite:

winver
wsl -l -v
systeminfo | findstr /i "Virtualization Hyper-V"

Du brauchst:

Nicht ideal: Windows 10 Home, sehr wenig RAM, Firmennetz mit strengem Proxy/VPN, oder der Versuch, CRC innerhalb von WSL2 zu starten.

#14.4 CRC installieren und OKD-Preset setzen

🧠 Was ist ein Preset?

CRC kann unterschiedliche Zielplattformen starten. Das Preset sagt CRC, welche Art lokaler Cluster erzeugt werden soll. Wenn du OKD lernen willst, setzt du vor dem Erzeugen der Instanz das OKD-Preset.

crc config set preset okd

Wichtig: Wenn bereits ein CRC-Cluster existiert, wirkt die Änderung nicht rückwirkend auf diese alte Instanz. Deshalb löscht man in solchen Fällen die Instanz und erstellt sie neu.

Alte Instanz       → preset war vielleicht anders
crc delete         → alte Instanz entfernen
preset okd setzen  → neue Zielplattform wählen
crc setup/start    → neue OKD-Instanz bauen/starten

🧯 Merke:
crc stop hält an. crc delete löscht die lokale Cluster-Instanz. Nutze delete bewusst.

  1. Lade CRC / OpenShift Local für Windows herunter.
  2. Installiere es auf C:\.
  3. Öffne PowerShell als Administrator.
  4. Prüfe die Installation:
crc version
crc config view

Setze danach OKD als Preset:

crc config set preset okd
crc config view

Falls du vorher schon einen OpenShift-CRC-Cluster gestartet hattest, musst du ihn löschen und neu erstellen, weil das Preset nur beim Erzeugen der Instanz wirkt:

crc stop
crc delete
crc config set preset okd
crc setup
crc start

Bei einer frischen Installation reicht meistens:

crc config set preset okd
crc setup
crc start

#14.5 Login, Web-Konsole und oc

🧠 Web-Konsole vs. CLI

Werkzeug Gut für
Web-Konsole Überblick, Lernen, Ressourcen visuell ansehen.
oc CLI Wiederholbare Befehle, Automatisierung, GitOps-nahe Arbeit.
YAML Versionierbare Beschreibung deines gewünschten Zustands.

Für echtes Lernen solltest du beides nutzen: erst in der Konsole anschauen, dann mit oc und YAML wiederholen.

#14.5.1 Was oc login macht

oc login speichert Zugangsdaten und Cluster-Kontext in deiner kubeconfig. Danach weiß oc, mit welchem Cluster und welchem Benutzer es sprechen soll.

oc login → schreibt/aktualisiert ~/.kube/config
oc whoami → zeigt aktuellen Benutzer
oc project → zeigt aktuelles Projekt/Namespace

In Windows und WSL gibt es getrennte Home-Verzeichnisse. Darum kann PowerShell bereits eingeloggt sein, während WSL noch nicht eingeloggt ist.

Nach dem Start:

crc status
crc console --credentials

Öffne die Konsole:

crc console

oc für PowerShell aktivieren:

crc oc-env | Invoke-Expression
oc version
oc whoami

Wenn du manuell einloggen willst, kopiere den Login-Befehl aus:

crc console --credentials

Typisches Muster:

oc login -u developer -p developer https://api.crc.testing:6443

#14.6 WSL2 an OKD anbinden

🧠 Warum PowerShell-Login nicht automatisch WSL-Login ist

PowerShell speichert Konfiguration unter deinem Windows-Benutzerprofil. WSL speichert sie unter /home/<user>. Deshalb brauchst du den Login in beiden Umgebungen, wenn du beide nutzen willst.

Windows kubeconfig:
C:\Users\<du>\.kube\config

WSL kubeconfig:
/home/<du>/.kube/config

#14.6.1 DNS-Problem einfach erklärt

CRC richtet lokale Namen wie api.crc.testing und *.apps-crc.testing ein. Windows kann diese Namen oft auflösen, WSL aber manchmal nicht.

WSL fragt: Wo ist api.crc.testing?
DNS antwortet nicht richtig.
oc login scheitert.

Temporäre Lösung: Die IP von crc ip in /etc/hosts eintragen. Das ist nicht schön, aber als Lernlösung praktisch.

🧪 Prüfen in WSL:

getent hosts api.crc.testing
curl -k https://api.crc.testing:6443/version

Wenn getent hosts nichts liefert, ist es ein Namensauflösungsproblem.

Der OKD-Cluster läuft auf Windows/CRC. In WSL arbeitest du mit Projekten und nutzt oc gegen denselben API-Endpunkt.

In WSL:

mkdir -p ~/bin ~/.kube ~/code/okd
cd ~/code/okd

Installiere oc entweder über den CRC-Output oder lade den passenden OpenShift/OKD-Client. Der einfachste Lernweg ist:

  1. In PowerShell crc console --credentials ausführen.
  2. Den oc login ... Befehl kopieren.
  3. In WSL einfügen.
  4. Prüfen:
oc whoami
oc get projects
oc get nodes

Wenn WSL api.crc.testing nicht auflösen kann, prüfe in PowerShell:

crc ip

und ergänze testweise in WSL /etc/hosts:

sudo nano /etc/hosts

Beispielzeilen, IP vorher mit crc ip ersetzen:

192.168.x.y api.crc.testing
192.168.x.y console-openshift-console.apps-crc.testing

#14.7 Erstes OKD-Projekt deployen

🧠 Was die Befehle erzeugen

oc new-project codex-demo

Erzeugt einen isolierten Arbeitsbereich.

oc create deployment hello-okd --image=...

Sagt OKD: Starte Pods aus diesem Container-Image.

oc expose deployment hello-okd --port=8080

Erzeugt einen Service, damit Pods intern stabil erreichbar sind.

oc expose service hello-okd

Erzeugt eine Route, damit du die App von außen über HTTP erreichst.

#14.7.1 Bild: Von Deployment zur URL

Deployment
   │ erzeugt/verwaltet
   ▼
Pod(s)
   │ werden intern erreicht über
   ▼
Service
   │ wird extern veröffentlicht über
   ▼
Route
   │ liefert URL
   ▼
Browser / curl

#14.7.2 Prüf-Befehle nach jedem Schritt

oc get projects
oc project
oc get deployments
oc get pods
oc get svc
oc get routes
oc describe pod <pod-name>
oc logs deployment/hello-okd

Du lernst schneller, wenn du nach jedem Befehl schaust, welche Ressource neu entstanden ist.

In WSL oder PowerShell, nachdem oc login funktioniert:

oc new-project codex-demo
oc create deployment hello-okd --image=quay.io/openshift/origin-hello-openshift:latest
oc expose deployment hello-okd --port=8080
oc expose service hello-okd
oc get pods
oc get routes

Route testen:

ROUTE=$(oc get route hello-okd -o jsonpath='{.spec.host}')
curl "http://$ROUTE"

Aufräumen:

oc delete project codex-demo

#14.8 VS Code, IntelliJ und Codex mit OKD verbinden

🧠 Rollenverteilung für OKD-Entwicklung

VS Code / IntelliJ:
  YAML und Code schreiben, Projektstruktur sehen, Terminal öffnen.

Codex:
  YAML vorschlagen, README schreiben, Fehler erklären, Tests ergänzen.

oc:
  Tatsächlich mit dem Cluster sprechen.

OKD:
  Gewünschten Zustand ausführen und überwachen.

🤖 Codex sinnvoll begrenzen:

Bitte erzeuge nur YAML-Dateien unter k8s/.
Keine Befehle ausführen.
Keine Secrets erstellen.
Erkläre mir nach jeder Datei, wofür sie da ist.

Wenn du später sicherer bist:

Führe oc apply -f k8s/ aus, aber frage vor jedem destruktiven Befehl nach.

VS Code:

IntelliJ:

Codex:

cd ~/code/okd/meine-app
codex

Gute Prompts:

Analysiere dieses Projekt und erstelle eine OKD-Deployment-Variante mit Deployment, Service und Route.
Ändere nichts automatisch, sondern zeige mir zuerst den Plan.
Erzeuge ein k8s/ Verzeichnis mit YAML für OKD. Verwende keine Secrets im Klartext.
Füge README-Anweisungen für oc apply und oc rollout status hinzu.

#14.9 OKD-Lernwoche

#14.9.1 Was du jeden Tag notieren solltest

Lege eine Datei an:

mkdir -p ~/code/okd-notizen
nano ~/code/okd-notizen/tagebuch.md

Pro Tag notierst du:

Ziel:
Befehle:
Was hat funktioniert:
Fehler:
Was ich verstanden habe:
Nächster Schritt:

Das klingt simpel, ist aber extrem wirksam. OKD hat viele Begriffe. Ohne Notizen fühlt sich alles schnell gleich an.

Tag Thema Übung Ergebnis
1 CRC + OKD starten crc setup, crc start, crc status Cluster läuft lokal.
2 oc Grundlagen oc login, oc get pods, oc get routes CLI verstanden.
3 Projekt & Deployment oc new-project, Deployment, Service, Route Erste App erreichbar.
4 YAML statt Klicks Deployment/Service/Route als Dateien GitOps-Grundlage.
5 Codex + OKD Codex generiert YAML und README Agent hilft, du prüfst Diffs.
6 Logs & Debugging oc logs, oc describe, Events Fehlerbilder lesen.
7 Aufräumen & Wiederholen Projekt löschen und neu deployen Ablauf sitzt.

#14.10 Fehlerbilder OKD

#14.10.1 OKD-Fehlerdiagnose als Entscheidungsbaum

oc-Befehl funktioniert nicht?
├─ oc nicht gefunden?
│  └─ oc in WSL installieren oder PATH prüfen
├─ nicht eingeloggt?
│  └─ oc login erneut ausführen
├─ api.crc.testing nicht erreichbar?
│  ├─ crc status in PowerShell prüfen
│  ├─ crc ip prüfen
│  └─ DNS/hosts in WSL prüfen
├─ Pod startet nicht?
│  ├─ oc describe pod <name>
│  ├─ oc logs <pod>
│  └─ Image/Port/Env prüfen
└─ Route geht nicht?
   ├─ oc get route
   ├─ Service-Port prüfen
   └─ Hostname/DNS prüfen

#14.10.2 Die drei wichtigsten Debug-Kommandos

oc describe <ressource> <name>
oc logs <pod-oder-deployment>
oc get events --sort-by=.lastTimestamp

describe zeigt den Zustand und Events zur Ressource. logs zeigt App-Ausgabe. events zeigt, was im Cluster zuletzt passiert ist.

Symptom Ursache Lösung
crc start scheitert Virtualisierung aus, Hypervisor-Problem, zu wenig Ressourcen BIOS/UEFI prüfen, Windows-Features prüfen, RAM/Disk freimachen.
Windows 10 Home CRC unterstützt Windows Home nicht Windows Pro/Enterprise/Education nutzen oder remote Linux/Cloud-VM verwenden.
api.crc.testing geht in WSL nicht DNS aus WSL sieht CRC-DNS nicht crc ip prüfen, temporär /etc/hosts ergänzen.
oc login klappt in PowerShell, aber nicht in WSL Getrennte Shells, kein oc oder DNS fehlt oc in WSL installieren und Login-Befehl dort erneut ausführen.
Sehr langsamer Cluster Zu wenig RAM/CPU oder Hintergrundlast Docker Desktop/andere VMs stoppen, CRC-Ressourcen erhöhen, Laptop am Strom betreiben.
Codex schlägt destruktive oc delete Befehle vor Zu breiter Prompt Codex immer Plan + Diff zeigen lassen; destruktive Befehle manuell bestätigen.

#14.11 Spickzettel OKD

#14.12 OKD-Miniprojekt für Codex

Lege ein kleines Repo an:

mkdir -p ~/code/okd-miniapp
cd ~/code/okd-miniapp
git init
mkdir -p app k8s docs
cat > _intern/sources/_intern\sources\README.md <<'TXT'
# OKD Miniapp

Ziel: Eine kleine App nach OKD deployen und den Ablauf verstehen.
TXT

Dann Codex-Prompt:

Ich lerne OKD mit CRC. Erstelle für dieses Repo eine sehr kleine Beispiel-App und ein k8s/ Verzeichnis mit Deployment, Service und Route. Keine Secrets. Erkläre jede Ressource in docs/erklaerung.md. Zeige zuerst einen Plan.

Nach der Arbeit:

git diff --stat
git diff

Erst wenn du den Diff verstehst, wendest du YAML auf OKD an.

# PowerShell / Windows
crc version
crc config set preset okd
crc setup
crc start
crc status
crc console --credentials
crc console
crc oc-env | Invoke-Expression
oc get nodes
crc stop
# WSL / Ubuntu
oc login -u developer -p developer https://api.crc.testing:6443
oc new-project codex-demo
oc get all
oc get routes
oc logs deployment/hello-okd
oc rollout status deployment/hello-okd
oc delete project codex-demo

#15. Befehls-Spickzettel

#15.0 Spickzettel richtig verwenden

Ein Spickzettel ist kein Ersatz für Verständnis. Nutze ihn so:

1. Befehl ausführen
2. Ausgabe lesen
3. Notieren, was der Befehl beantwortet

Beispiele:

Befehl Frage, die er beantwortet
wsl -l -v Welche Linux-Distributionen laufen und mit welcher WSL-Version?
pwd In welchem Dateisystem-Kontext bin ich?
which codex Nutze ich Codex aus WSL?
where codex Nutze ich Codex aus Windows?
oc whoami Bin ich am OKD-Cluster angemeldet?
oc project In welchem OKD-Projekt arbeite ich?
git status Ist mein Repo sauber?

#Windows / PowerShell

wsl --status
wsl -l -v
wsl --install -d Ubuntu
wsl --set-default-version 2
wsl --update
wsl --shutdown
where codex
codex --version

#WSL / Ubuntu

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ca-certificates git build-essential unzip jq ripgrep fd-find
mkdir -p ~/code
cd ~/code
code .
which codex
codex --version

#Codex

codex
codex --version

#Git

git status
git diff
git add .
git commit -m "setup development environment"

#16. Gesamt-Checkliste

#16.1 WSL

#16.2 VS Code

#16.3 IntelliJ

#16.4 Codex

#16.5 OKD

#17. Nächste Lernstufen

Wenn alles läuft, gehe nicht sofort zu komplexen Projekten. Baue in dieser Reihenfolge weiter:

1. Ein statisches Hello-World-Deployment
2. Eine kleine API mit Health-Endpoint
3. Eine App mit ConfigMap
4. Eine App mit Secret, aber Secret nie in Git committen
5. Build und Deployment aus README reproduzierbar machen
6. Codex nur für Review, YAML-Erklärung und Testergänzung nutzen
7. Später: SNO oder echter OKD-Cluster

#17.1 Gute Abschlussaufgabe

Erstelle ein Repo ~/code/fullstack-okd-lab mit:

_intern/sources/_intern\sources\README.md
app/
k8s/
docs/
scripts/

Ziel:

#18. Quellen