How to: Kubernetes-Cluster-Zugriff

Kube-API-Zugriff

Dieser Dienst befindet sich derzeit im Early Access. Kontaktieren Sie uns, um Zugang zu beantragen.

Bei Xelon haben Sie vollen Zugriff auf die Kube API über die Admin Kube-Config, die Sie im HQ herunterladen können. Navigieren Sie zum Dashboard Ihres Clusters und klicken Sie auf "Download Config" im Segment "Kubernetes Configuration".

 

 

Kubectl

Kubectl ist das bekannteste Tool für den Zugriff auf die Kubernetes-API und ermöglicht die Erstellung und Manipulation von Kubernetes-Ressourcen.

Installation

Gerne verweisen wir auf die offizielle Dokumentation, die je nach Betriebssystem variiert. Nachfolgend finden Sie die direkten Links für die Installation auf den gängigsten Betriebssystemen:

Um zu überprüfen, ob das Tool korrekt installiert ist, können Sie ein Terminal öffnen und den folgenden Befehl ausführen, um die Version auszulesen:

kubectl version

Die Ausgabe dieses Befehls sollte wie folgt aussehen - mit dem Unterschied, dass Sie wahrscheinlich eine neuere Version haben und möglicherweise noch nicht auf ein Kubernetes-Cluster zugreifen können (Server-Version), aber wenn die Client-Version angezeigt wird, ist kubectl installiert.

Client Version: v1.30.0 
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.3

Als Faustregel gilt, dass Kubectl nicht mehr als +/- eine Minor-Version von der Serverversion abweichen sollte.

Konfiguration

Das Konfigurieren des kubectl binaries ist einfach, das Werkzeug muss wissen, welche Verbindungsdatei es nutzen soll. Hierzu gibt es drei Methoden, die nachfolgend erläutert sind. Die erste Methode wird generell empfohlen, wer jedoch oft mit verschiedenen Kubernetes Clustern arbeitet, bevorzugt höchstwahrscheinlich Methode 2 oder 3 in Kombination mit Option 1.

Methode 1 - Standardpfad:
Standardmässig wird die Verbindungsdatei ("config") im Ordner ".kube" verwendet, der sich im Benutzerordner befindet (~/.kube/config).  Wenn Sie Ihre kubeconfig in dieses Verzeichnis (mit dem korrekten Namen) verschieben, wird diese standardmässig verwendet.

kubectl get nodes

Methode 2 - Argument:
Bei der Ausführung des Befehls kubectl kann als Argument eine kubeconfig-Datei angegeben werden. Dieses Argument muss dann bei jedem kubectl-Befehl übergeben werden.

kubectl --kubeconfig=./Downloads/kubeconfig get nodes

Methode 3 - Umgebungsvariable:
Wenn die Umgebungsvariable "KUBECONFIG" auf einen Pfad gesetzt ist, wird diese kubeconfig-Datei verwendet.

KUBECONFIG=./Downloads/kubeconfig kubectl get nodes

Diese Methode sieht auf den ersten Blick aus wie die zweite Methode (mit Argument), hat aber den Vorteil, dass man mehrere Terminals geöffnet haben kann, in denen man die Umgebungsvariablen auf unterschiedliche Kubeconfig-Dateien setzt und dann für beide Terminals die gleichen Befehle verwenden kann.

Stage-Umgebung (Terminal 1):

export KUBECONFIG=./.kube/config-stage

kubectl get nodes

Produktive Umgebung (Terminal 2)

export KUBECONFIG=./.kube/config-prod

kubectl get nodes

 

Talos-API-Zugriff

Bei uns haben Sie auch vollen Zugriff auf die Kubernetes-Nodes über die Talos-Config. Dabei handelt es sich um eine Verbindungsdatei ähnlich der Kube-Config. Mit diesem Tool können Sie jedoch das Betriebssystem der Kubernetes-Nodes selbst ändern. Navigieren Sie zum Dashboard Ihres Clusters und klicken Sie auf "Download Config", im Segment "Cluster info". 

Dieser Zugriff wird in den meisten Fällen nicht benötigt, kann aber für eine erweiterte Kontrolle verwendet werden.

Talosctl

Das talosctl ist stark vom kubectl inspiriert, verwendet ähnliche Prinzipien und ist wie das kubectl "nur" ein Werkzeug, um auf die Talos API zuzugreifen. Die Talos API hat jedoch eine etwas andere Architektur als die Kube API. Die Kube API läuft auf allen Controlplane-Knoten, aber nicht auf den Worker-Knoten. Die Talos API hingegen läuft auf allen Nodes. Der Ansatz, den Talos Linux verwendet, ist die Steuerung des gesamten Betriebssystem über die API.

Installation

Siderolabs (Hersteller von Talos Linux) bietet Talosctl als Binary an, das automatisch mit den Talos Linux Binaries veröffentlicht wird. Die Binaries können auf der Github Releases Page unter "Assets" gefunden werden. Besuchen Sie dazu die folgende URL und passen Sie die Versionsnummer an Ihre Talos-Version an.

https://github.com/siderolabs/talos/releases/tag/v1.7.5

In den Assets gibt es verschiedene Variationen des talosctl-Binaries. Hier finden Sie die entsprechende Variation für Ihr Betriebssystem, von dem aus Sie talosctl ausführen möchten: "talosctl-<Betriebssystem>-<CPU-Architektur>".

Die folgenden Schritte sind betriebssystemspezifisch, aber in der Regel gleich.

1. Verschieben Sie die Binärdatei in einen Ordner, der von Ihrer Umgebung als Applikationsordner verwendet wird.

Linux/MacOS: Unter POSIX-Betriebssystemen kann der Pfad über die Systemvariable $PATH ermittelt werden.

In den meisten Fällen enthält diese Variable einen Pfad, der wie folgt aussieht:

/home/<username>/.local/bin

Dieser Pfad ist optimal für Binärdateien, die nur für den aktuellen Benutzer ausführbar sind. Wenn der Benutzer existiert, können Sie Ihre Binärdateien hier ablegen.

Windows: Unter Windows finden Sie diese Variabel in den Einstellungen. Klicken Sie dazu auf "Einstellungen" ->"System" -> "Info" -> "Erweiterte Systemeinstellungen" -> "Erweitert" -> "Umgebungsvariabeln..."

In diesem Menü können Sie der Variablen "Path" einen weiteren Pfad hinzufügen:

Wir empfehlen, hier den Ordner "%USERPROFILE%\AppData\Local\bin" anzulegen, in dem Sie dann Ihre Binaries ablegen können.

2. Falls erforderlich, die Rechte zum Ausführen der Binärdatei hinterlegen.

3. Überprüfen Sie Ihre vorherigen Schritte, indem Sie den folgenden Befehl ausführen:

talosctl version

Wenn Sie eine Client-Version sehen, ist die Binärversion für Sie nun korrekt verfügbar.

Beispiel Ausgabe:

Client: 
       Tag:         v1.7.2
       SHA:         f876025b
       Built:        
       Go version:  go1.22.3
       OS/Arch:     linux/amd64
Server:
nodes are not set for the command: please use `--nodes` flag or configuration file to set the nodes to run the command against

Usage:
 talosctl version [flags]

Flags:
     --client     Print client version only
 -h, --help       help for version
 -i, --insecure   use Talos maintenance mode API
     --short      Print the short version

Global Flags:
     --cluster string       Cluster to connect to if a proxy endpoint is used.
     --context string       Context to be used in command
 -e, --endpoints strings    override default endpoints in Talos configuration
 -n, --nodes strings        target the specified nodes
     --talosconfig string   The path to the Talos configuration file. Defaults to 'TALOSCONFIG' env variable if set, otherwise '$HOME/.talos/config' and '/var/run/secrets/talos.dev/config' in order.

Konfiguration

Die Konfiguration von talosctl ist fast identisch mit der von kubectl. Es stehen wieder alle drei Methoden zur Verfügung, es ändert sich nur, dass nicht mehr kubeconfig sondern talosconfig verwendet wird.

Der Standardpfad der Talosconfig ist ebenfalls im Benutzerordner, aber nicht im Ordner ".kube", sondern im Ordner ".talos": (~/.talos/config). Wenn die Talosconfig dorthin verschoben wird, kann der Befehl talosctl ausgeführt werden.

talosctl dashboard -n 100.110.255.11

Das Subkommando-Dashboard gibt einen Überblick über den aktuellen Node, der mit "-n <ip>" angegeben wird. Die IPs der einzelnen Knoten können mit dem Befehl kubectl ausgelesen werden:

kubectl get nodes -o wide

Beispiel Ausgabe:

NAME              STATUS   ROLES           AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION   CONTAINER-RUNTIME 
customer-cp-1-1   Ready    control-plane   6d19h   v1.30.3   100.110.255.11   <none>        Talos (v1.7.5)   6.6.33-talos     containerd://1.7.18 
customer-w-1-1    Ready    <none>          5d22h   v1.30.3   100.110.255.21   <none>        Talos (v1.7.5)   6.6.33-talos     containerd://1.7.18 
customer-w-1-2    Ready    <none>          5d22h   v1.30.3   100.110.255.22   <none>        Talos (v1.7.5)   6.6.33-talos     containerd://1.7.18 
customer-w-1-3    Ready    <none>          5d22h   v1.30.3   100.110.255.23   <none>        Talos (v1.7.5)   6.6.33-talos     containerd://1.7.18

In der Spalte "INTERNAL-IP" wird die IP-Adresse angezeigt.

Methode 2 - Argument:
Bei talosctl kann die Konfigurationsdatei auch mit einem Argument angegeben werden, in diesem Fall ist das Argument "--talosconfig".

talosctl --talosconfig=./Downloads/talosconfig dashboard -n 100.110.255.11

Methode 3 - Umgebungsvariable:
Wenn die Umgebungsvariable "TALOSCONFIG" auf einen Pfad gesetzt ist, wird diese Verbindungsdatei verwendet.

TALOSCONFIG=./Downloads/talosconfig talosctl dashboard -n 100.110.255.11