Implement oc smart login
This commit is contained in:
6 files changed
+1701
No files matched your search
@@ -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! 🎉
|
||||
|
||||
Reference in new issue
Block a user