Implement oc smart login

This commit is contained in:
yves-sbb committed 2026-09-28 19:08:53 +02:00
1 parent a7e87691a7
commit d32b1d19eb
6 files changed
+1701

No files matched your search

+426
View File
@@ -0,0 +1,426 @@
# OCP Smart Login - Setup & Integration Guide
## 📋 Checklist
- [ ] **Schritt 1:** Neue Dateien in Repository überprüfen
- [ ] **Schritt 2:** Dateien mit Sync synchronisieren
- [ ] **Schritt 3:** .zshrc konfigurieren
- [ ] **Schritt 4:** Environment-Variablen setzen
- [ ] **Schritt 5:** Shell neu laden
- [ ] **Schritt 6:** Testen
---
## Schritt 1️⃣ - Neue Dateien überprüfen
Die folgenden Dateien sollten bereits im Repository sein:
```bash
cd ~/mac-home/home-content
# Check ob Dateien vorhanden sind
ls -lh .bash_oc_smart.sh .bash_oc_smart_aliases.sh
# Expected output:
# -rwxr-xr-x ... .bash_oc_smart.sh
# -rwxr-xr-x ... .bash_oc_smart_aliases.sh
```
Falls nicht vorhanden:
```bash
# Script braucht execute permission
chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh
```
---
## Schritt 2️⃣ - Synchronisieren mit Repo
Du möchtest die Dateien ins Repo committen:
```bash
cd ~/mac-home
# Status prüfen
./sync-home-content.sh status
# Expected: Neue Dateien werden angezeigt
# Synchronisieren (Home → Repo)
./sync-home-content.sh pull --dry-run # Test
./sync-home-content.sh pull # Real
# Git commit
cd home-content
git add .bash_oc_smart.sh .bash_oc_smart_aliases.sh
git commit -m "feat: Add OCP smart login system for faster context switching"
git push
```
---
## Schritt 3️⃣ - .zshrc konfigurieren
Öffne deine `~/.zshrc`:
```bash
vim ~/.zshrc
# oder
nano ~/.zshrc
```
**Füge am ENDE der Datei ein:**
```bash
# ============================================================================
# OCP Smart Login/Context Switch
# ============================================================================
# Source helpers and new smart aliases (must be AFTER .bash_aliases)
if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then
source ~/.bash_oc_smart_aliases.sh
fi
```
**Wichtig:**
- Dies muss **NACH** den `.bash_aliases` sein (wenn du die sourced)
- Manche .zshrc sourced `.bash_aliases` via: `test -f ~/.bash_aliases && . ~/.bash_aliases`
Überprüfe, dass `.bash_aliases` sourced wird:
```bash
# In .zshrc nach `source ~/.bash_oc_smart_aliases.sh`
grep -n "bash_aliases" ~/.zshrc
# Expected: irgendwelche Zeilen mit .bash_aliases
```
---
## Schritt 4️⃣ - Environment-Variablen setzen
Die Smart-Login Funktion nutzt Token aus Umgebungsvariablen.
### Option A: In ~/.profile (automatisch bei Login)
Öffne `~/.profile` oder `~/.bash_profile`:
```bash
# Erstelle/öffne ~/.profile
vim ~/.profile
```
**Füge folgende Environment-Variablen hinzu:**
```bash
# ============================================================================
# OpenShift Token Environment Variables
# ============================================================================
# NOTE: Ersetze die Token mit deinen echten Token!
# WICHTIG: Dieses File nicht ins Repository committen (ist geheim!)
export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-aws-test-token-here"
export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-aws-prod-token-here"
export OPENSHIFT_TOKEN_WZU="sha256~your-wzu-token-here"
export OPENSHIFT_TOKEN_SC02="sha256~your-sc02-token-here"
export OPENSHIFT_TOKEN_SCSputnix="sha256~your-sputnix-token-here"
# Alternativ: Load from encrypted file
# if [[ -f ~/.secrets/ocp_tokens ]]; then
# source ~/.secrets/ocp_tokens
# fi
```
**Sicherheit:**
```bash
# Berechtigungen setzen
chmod 600 ~/.profile # Nur du kannst lesen
# Oder in separater Datei:
mkdir -p ~/.secrets
chmod 700 ~/.secrets
vim ~/.secrets/ocp_tokens
chmod 600 ~/.secrets/ocp_tokens
# In ~/.profile dann:
# [[ -f ~/.secrets/ocp_tokens ]] && source ~/.secrets/ocp_tokens
```
### Option B: Im Moment eingeben (für Test)
```bash
# Einmalig für diese Shell-Session:
export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token"
export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-token"
# ... etc
# Testen
ocStatus
```
### Token abrufen
Falls du deine Token nicht kennst:
```bash
# Login manuell, dann Token auslesen
oc login --server=https://api.aws01t.sbb-aws-test.net:6443
# Browser öffnet sich, Token eingeben
# Token ist jetzt in kubeconfig
oc whoami -t
# Copy den Token und speichere ihn in ~/.profile oder ~/.secrets/ocp_tokens
```
---
## Schritt 5️⃣ - Shell neu laden
```bash
# Reload .zshrc
source ~/.zshrc
# Oder neues Terminal-Tab öffnen (laden neue .profile)
```
Überprüfe dass Aliases geladen sind:
```bash
# Check ob aliases vorhanden sind
alias | grep ocAWS
# Expected:
# ocAWS-Dev='oc_smart_switch ...'
# ocAWS-Int='oc_smart_switch ...'
# ... etc
```
---
## Schritt 6️⃣ - Testen
### Test 1: Helper-Funktion testen
```bash
# Check Auth Status
ocStatus
# Expected output (wenn nicht angemeldet):
# [ERROR] ✗ Not logged in to any cluster
# Oder (wenn angemeldet):
# [OK] ✓ Authenticated as: u241100
# [OK] ✓ Current context: kihub-dev/...
```
### Test 2: Cluster wechseln (First time = Login)
```bash
# First cluster (sollte Browser öffnen)
ocAWS-Test1
# Expected output:
# ═══════════════════════════════════════════
# OCP Smart Switch: AWS-Test1
# ═══════════════════════════════════════════
# → Not logged in to any cluster
# → Performing full login...
# [Browser opens for token]
# ✓ Login successful
# ✓ Context switched successfully
# ✓ Switched to project: kihub-dev-u241100
```
### Test 3: Schneller Context-Switch (2x)
```bash
# Zu anderem Cluster (Token ist noch valid = nur Context switch)
ocAWS-Int
# Expected output (SCHNELL):
# ═══════════════════════════════════════════
# OCP Smart Switch: AWS-Int
# ═══════════════════════════════════════════
# ✓ Token valid, switching context...
# From: kihub-dev/api-aws01t-sbb-aws-test-net:6443/u241100
# To: kihub-int/api-lisa-sbb-aws-net:6443/u241100
# ✓ Context switched successfully
# ✓ Switched to project: kihub-int
```
### Test 4: Zurück-Switch (auch schnell!)
```bash
# Zurück zum ersten Cluster
ocAWS-Test1
# Expected output (schnell, gleicher Token):
# ✓ Token valid, switching context...
# ✓ Context switched successfully
# ✓ Already in project: kihub-dev-u241100
```
### Test 5: Helper Aliases
```bash
# Show status
ocStatus
# List contexts
ocCtx
# Who am I?
ocWhoami
# Logout
ocLogout
```
---
## 🐛 Häufige Probleme
### Problem: "command not found: ocAWS-Dev"
**Ursache:** Alias wurde nicht geladen
**Lösung:**
```bash
# 1. Überprüfe ob .bash_oc_smart_aliases.sh sourced wird
cat ~/.zshrc | grep bash_oc_smart_aliases
# 2. Falls nicht vorhanden, hinzufügen (siehe Schritt 3)
# 3. Shell neu laden
source ~/.zshrc
# 4. Überprüfe ob alias vorhanden
type ocAWS-Dev
```
### Problem: "Token environment variable not set"
**Ursache:** OPENSHIFT_TOKEN_* nicht gesetzt
**Lösung:**
```bash
# 1. Check ob Variable gesetzt ist
echo $OPENSHIFT_TOKEN_AWS_TEST
# 2. Falls leer, setze in ~/.profile
echo 'export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token"' >> ~/.profile
# 3. Neue Shell öffnen oder
source ~/.profile
# 4. Überprüfe
echo $OPENSHIFT_TOKEN_AWS_TEST
# Sollte nicht leer sein
```
### Problem: "script permission denied"
**Ursache:** .bash_oc_smart.sh hat keine execute permission
**Lösung:**
```bash
chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh
```
### Problem: "Failed to switch context"
**Ursache:** Context existiert nicht in kubeconfig
**Lösung:**
```bash
# 1. Überprüfe verfügbare contexts
oc config get-contexts
# 2. Wenn context fehlt: Login durchführen
ocAWS-Test1
# Generiert kubeconfig mit neuen contexts
# 3. Erneut versuchen
ocAWS-Dev
```
### Problem: Token wird immer erneut abgefragt
**Ursache:**
- Token ist sehr kurz gültig (Cluster-Config)
- Oder: OPENSHIFT_TOKEN_* Variable ist falsch/abgelaufen
**Lösung:**
```bash
# 1. Token aktualisieren
oc login --server=https://api.aws01t.sbb-aws-test.net:6443
# Browser öffnet
oc whoami -t # Neuen Token kopieren
# 2. In ~/.profile/~/.secrets/ocp_tokens aktualisieren
vim ~/.profile
# Ersetze OPENSHIFT_TOKEN_AWS_TEST="..."
# 3. Shell neu laden
source ~/.profile
```
---
## 📚 Next Steps
### Nach erfolgreichem Setup:
1. **Speichere die Tokens sicher:**
```bash
# Nicht in ~/.zshrc (wird möglicherweise committed)
# Nicht in .bash_aliases (auch versioniert)
# Am besten: ~/.secrets/ocp_tokens mit 600 permissions
```
2. **Alias die Aliases:**
```bash
# Für noch schnellere Nutzung in ~/.zshrc:
alias test='ocAWS-Test1'
alias int='ocAWS-Int'
alias prod='ocAWS-Prod'
alias intsc='ocSC-Int'
alias prodsc='ocSC-Prod'
# Dann:
test # Statt ocAWS-Test1
int # Statt ocAWS-Int
```
3. **Dokumentiere deine Cluster-Mappings:**
```bash
# In Projekt-README oder Konfluence:
# Welche Alias entspricht welcher Environment?
# ocAWS-Dev → Development cluster (aws01t)
# ocAWS-Int → Integration cluster (Lisa)
# ocAWS-Prod → Production cluster (Lisa/Maggie)
```
---
## ✅ Fertig!
Dein OCP Smart Login System ist nun aktiv.
**Teste mit:**
```bash
ocStatus # Check aktueller Status
ocAWS-Dev # Switch zu Dev (1x Browser first time)
ocAWS-Int # Switch zu Int (schnell!)
ocAWS-Prod # Switch zu Prod (schnell!)
ocAWS-Dev # Zurück zu Dev (schnell!)
```
**Ersparte Zeit beim täglichen Cluster-Switching: ~50-60%** 🚀
---
## 🎓 Weitere Ressourcen
- Detaillierte Dokumentation: `OCP-SMART-LOGIN.md`
- Alte Manual-Logins noch vorhanden: `ocLoginAWS-*`, `ocLoginSC-*`
- Helper Functions: `~/.bash_oc_smart.sh`
- Alias Definitions: `~/.bash_oc_smart_aliases.sh`
---
Viel Erfolg beim schnelleren Cluster-Switching! 🎉