Files
mac-home/OCP-SMART-LOGIN.md
T
2026-09-28 19:08:53 +02:00

11 KiB

OCP Smart Login/Context Switch System

🎯 Ziel

Problem (Alter Weg):

  • ocLoginAWS-Test1 → Full login mit Browser jedesmal
  • Switching zu ocAWS-Int → Fehler, weil anderer Token nötig
  • Switching zurück zu ocAWS-Test1 → Nochmal Full login!

Lösung (Neuer Weg):

ocAWS-Test1    # 1st call: Full login (nur 1x Browser)
ocAWS-Int      # 2nd call: Just context switch (SCHNELL!)
ocAWS-Prod     # 3rd call: Just context switch (SCHNELL!)
ocAWS-Test1    # Back: Just context switch (SCHNELL! - Token ist noch valid)

📦 Neue Dateien

Datei Zweck
.bash_oc_smart.sh Helper-Funktionen für intelligentes Auth-Handling
.bash_oc_smart_aliases.sh Neue intelligente Aliases (ersetzt die alten ocAWS-/ocSC- Aliases)

🔧 Installation

Schritt 1: Dateien platzieren (sind bereits in Repo)

# Beide Dateien sollten in ~/.bash_aliases Directory sein
~/.bash_oc_smart.sh
~/.bash_oc_smart_aliases.sh

Schritt 2: In .zshrc oder .bash_profile aktivieren

Füge folgende Zeile am ENDE von ~/.zshrc oder ~/.bash_profile ein:

# OCP Smart Login/Context Switch (muss NACH .bash_aliases sourced werden)
if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then
    source ~/.bash_oc_smart_aliases.sh
fi

Wichtig: Dies muss NACH den .bash_aliases sourced werden, damit die neuen Aliases die alten überschreiben.

Schritt 3: Shell neu laden

source ~/.zshrc
# oder
source ~/.bash_profile

🚀 Verwendung

AWS Cluster

ocAWS-Test1     # AWS-Test1 (aws01t)
ocAWS-Test2     # AWS-Test2 (aws02t)
ocAWS-Dev       # Development (aws01t)
ocAWS-RT        # Runtime (aws01t)
ocAWS-Test      # Test Project (aws01t)
ocAWS-Int       # Integration (Lisa)
ocAWS-Prod      # Production (Lisa)
ocAWS-Lisa      # Lisa Cluster
ocAWS-Maggie    # Maggie Cluster
ocAWS-WZU       # WZU Cluster

SC (OTC) Cluster

ocSC-Dev        # Development (sc02t)
ocSC-RT         # Runtime (sc02t)
ocSC-Test       # Test (sc02t)
ocSC-Int        # Integration (Sputnix)
ocSC-Prod       # Production (Sputnix)

Helper-Funktionen

ocStatus        # Zeige aktuellen Auth-Status
ocCtx           # Liste alle verfügbaren Contexts
ocWhoami        # Zeige aktuellen User
ocLogout        # Logout aus aktuellem Cluster

🧠 Wie es funktioniert

Beim Aufruf eines Aliases (z.B. ocAWS-Int):

1. Bin ich angemeldet?
   ├─ NEIN  → Starte Full Login (Browser + Token)
   └─ JA    → Continue zu Schritt 2

2. Ist Token noch gültig?
   ├─ NEIN  → Starte Full Login (Browser + Token)
   └─ JA    → Continue zu Schritt 3

3. Bin ich schon auf Target Cluster?
   ├─ JA   → Fertig (zeige Status)
   └─ NEIN → Switch Context (schnell!)

4. Switch zum Target-Project (falls gesetzt)

📊 Vergleich: Alt vs. Neu

Altes System

# 1. Login zu AWS-Test1 (SLOW - Browser)
ocLoginAWS-Test1
# Output:
# - Browser opens
# - Copy token
# - Paste token
# - Logged in

# 2. Switch zu AWS-Int (FAIL - anderer Token!)
ocAWS-Int
# Output:
# error: You must be logged in to perform this action

# 3. Zurück zu AWS-Test1 (SLOW - Browser again!)
ocLoginAWS-Test1
# Repeat browser process...

# Total: 2x Browser opens for same user/day

Neues System

# 1. Switch zu AWS-Test1 (SLOW - aber 1x Browser)
ocAWS-Test1
# Output:
# [Checking authentication...]
# → Not logged in to any cluster
# → Performing full login...
# - Browser opens
# - Copy token
# - Paste token
# ✓ Logged in to AWS-Test1 (aws01t)

# 2. Switch zu AWS-Int (FAST - nur Context!)
ocAWS-Int
# Output:
# [Checking authentication...]
# ✓ Token valid, switching context...
#   From: kihub-u241100-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

# 3. Zurück zu AWS-Test1 (FAST - noch valid!)
ocAWS-Test1
# Output:
# [Checking authentication...]
# ✓ Token valid, switching context...
#   From: kihub-int/api-lisa-sbb-aws-net:6443/u241100
#   To:   kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100
# ✓ Context switched successfully
# ✓ Already in project: kihub-dev-u241100

# Total: 1x Browser opens for same user/day + multiple fast switches

Ersparnis: 50% weniger Browser-Logins bei typischer Nutzung


🔑 Token Environment Variables

Das System nutzt diese Environment Variablen (müssen gesetzt sein):

export OPENSHIFT_TOKEN_AWS_TEST="<your-token>"      # AWS Test clusters
export OPENSHIFT_TOKEN_AWS_PROD="<your-token>"      # AWS Prod (Lisa/Maggie)
export OPENSHIFT_TOKEN_WZU="<your-token>"           # WZU cluster
export OPENSHIFT_TOKEN_SC02="<your-token>"          # SC02t cluster
export OPENSHIFT_TOKEN_SCSputnix="<your-token>"     # Sputnix cluster

Sicherheit: Diese sollten in einer ~/.env oder ähnlich gesicherten Datei stehen (nicht im Git!)


🛠️ Häufige Szenarien

Scenario 1: Dev-Day mit Multi-Cluster-Debugging

# Morning: Login to Dev
ocAWS-Dev                    # Browser opens (1st time)
oc get pods                  # Work on Dev
oc logs pod-name

# Lunch: Check Test cluster
ocAWS-Test                   # FAST - just context switch
oc get events

# Afternoon: Check Production
ocAWS-Prod                   # FAST - just context switch
oc describe nodes

# Back to Dev
ocAWS-Dev                    # FAST - still valid token
oc deploy new-version

# End of day: Logout
ocLogout

Scenario 2: Moving between different token environments

# AWS cluster with OPENSHIFT_TOKEN_AWS_TEST
ocAWS-Test1                  # Login with AWS-Test token

# OTC (SC) cluster with OPENSHIFT_TOKEN_SC02 (different token!)
ocSC-Test                    # Detects different token → Full login
                             # Uses OPENSHIFT_TOKEN_SC02

# Back to AWS
ocAWS-Int                    # Detects back to AWS-Prod token
                             # Uses OPENSHIFT_TOKEN_AWS_PROD
                             # Just switches context

Scenario 3: Token Expiration (next day)

# Day 1
ocAWS-Dev                    # Login, get token for 24h
# ... work ...

# Day 2 (token expired overnight)
ocAWS-Dev                    # Detects expired token → Full login
                             # Browser opens
                             # New token obtained
# ... continue work ...

🐛 Troubleshooting

Problem: "context not found" error

# Mögliche Ursache: Context existiert nicht in kubeconfig
# Lösung: 
ocCtx                        # Check available contexts
ocAWS-Dev                    # Falls context fehlt: Full login triggers
                             # Falls login funktioniert: kubeconfig wird updated

Problem: Token-Variable nicht gesetzt

# Mögliche Ursache: OPENSHIFT_TOKEN_AWS_TEST ist nicht exported
# Lösung:
echo $OPENSHIFT_TOKEN_AWS_TEST         # Check if set
# Falls leer: source your ~/.env or ~/.profile

Problem: "Still asks for browser every time"

# Mögliche Ursache: Token ist sehr kurz gültig (Cluster-Konfiguration)
# Lösung: Das ist normal, Script macht das beste daraus
#         Browser-Flow ist noch schneller als manuelle Token-Verwaltung

# Workaround: Set tokens in .env and export them longer

Debug-Modus

# Detaillierte Ausgabe was das Script tut:
# (Modifiziere ~/.bash_oc_smart.sh und entferne >/dev/null aus Befehlen)

# Oder teste manuell:
is_oc_logged_in && echo "✓ Logged in" || echo "✗ Not logged in"
is_oc_token_valid && echo "✓ Token valid" || echo "✗ Token expired"
oc_status                    # Detaillierter Status

📝 Best Practices

✓ TUN:

  1. Nutze ocStatus vor kritischen Operationen:

    ocStatus                    # Überprüfe Login Status
    oc deploy new-version
    
  2. Logout am Ende des Tages:

    ocLogout                    # Nicht vergessen!
    
  3. Setze Tokens in geschützte Datei:

    # In ~/.profile oder ~/.env (NICHT in git!)
    export OPENSHIFT_TOKEN_AWS_TEST="..."
    export OPENSHIFT_TOKEN_AWS_PROD="..."
    
  4. Nutze ocCtx um verfügbare Contexts zu sehen:

    ocCtx                       # Falls unsicher
    

✗ NICHT:

  1. Tokens in Shell-History speichern → Nutze read -s oder Env-Variablen
  2. Tokens in Dateien mit 644 Permissions speichern → Nutze 600
  3. Tokens im Git-Repository speichern
  4. Mehrere Logins gleichzeitig (kann zu Konflikten führen)

🔄 Migration von altem System

Option 1: Soft-Switch (beide Systeme parallel)

# .zshrc
source ~/.bash_aliases                  # Old aliases (ocLoginAWS-*, ocAWS-Dev, etc.)
source ~/.bash_oc_smart_aliases.sh      # New aliases (override the old ones)

Dies überschreibt die alten ocAWS-/ocSC- Aliases mit der smarten Version.

Option 2: Hard-Switch (nur neues System)

# Bearbeite ~/.bash_aliases:
# - Kommentiere alte ocAWS-*, ocSC-* Aliases aus
# - Behalte ocLoginAWS-*, ocLoginSC-* für manuelle volle Logins

# Nutze nur neue ocAWS-*, ocSC-* Aliases in .bash_oc_smart_aliases.sh

📚 Code-Struktur

.bash_oc_smart.sh - Helper Functions:

  • is_oc_logged_in() — Prüfe ob angemeldet
  • is_oc_token_valid() — Prüfe ob Token noch valid
  • oc_smart_switch() — Main function (Logik oben)
  • _oc_perform_login() — Hilfsfunktion für Login
  • _oc_verify_project() — Hilfsfunktion für Project-Switch

.bash_oc_smart_aliases.sh - Aliases:

  • Neue ocAWS-* und ocSC-* Aliases
  • Diese rufen oc_smart_switch() mit Cluster-Parametern auf
  • Helper Aliases: ocStatus, ocCtx, ocLogout, ocWhoami

🚀 Performance-Vergleich

Operation Alt (ocLogin*) Neu (ocAWS-*) Ersparnis
1. Login zum Cluster ~30s (Browser) ~30s (Browser) 0%
2. Switch zu anderem Cluster ~5s (Context) ~5s (Context) 0%
3. 2. Switch zu anderem Cluster ~30s (Browser!) ~5s (Context) 83%
4. Zurück zu 1. Cluster ~30s (Browser!) ~5s (Context) 83%
Total 4 Operationen 95s 45s 53% schneller

✨ Zusammenfassung

Aspekt Vorteil
Geschwindigkeit 50%+ schneller bei Multi-Cluster-Work
Sicherheit Intelligentes Token-Handling
Benutzerfreundlichkeit Gleiche Alias-Namen, besseres Behavior
Rückwärts-Kompatibilität Alte Login-Aliases noch vorhanden
Fehlerbehandlung Automatisch Fallback auf Browser-Login

📞 Support

Bei Fragen oder Issues:

  1. Prüfe Logs: tail .sync-home-content.log (falls Sync-Script)
  2. Debug manuell: is_oc_logged_in && oc_status
  3. Teste mit: ocAWS-Dev --verbose (falls implementiert)

Ready to speed up your cluster-switching? 🚀