Skip to content

Czym są ServiceAccounts w Kubernetes?

Jest to podobny mechanizm do definiowania użytkownika zarządzającego klastrem (np. wyświetlanie listy Podów, określamy poprzez RBAC), lecz definiowany jest dla usług, aplikacji, a nie użytkowników (np. dla Prometheusa, Jenkinsa).

Uwierzytelnianie odbywa się z użyciem Tokena.

Komendy do zarządzania ServiceAccount na klastrze

Wyświetlanie ServiceAccount

kubectl get serviceaccount

Wyświetlanie szczegółów o danym ServiceAccount

kubectl describe serviceaccount <nazwa_serviceaccount>

Tworzenie ServiceAccount

kubectl create serviceaccount <nazwa_sa>
Zostanie utworzony ServiceAccount w namespace default w tym przypadku.

lub w manifeście yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
    name: <nazwa_sa>
    namespace: <nazwa_namespace>
automountServiceAccountToken: false # gdy nie chcemy auto-tokena we wszystkich tworzonych zasobach w danym sa, np. Pody

Definicja Poda w danym ServiceAccount

Definicja Poda w manifeście:

apiVersion: v1
kind: Pod
metadata:
    name: <nazwa_poda>
spec:
    containers:
        - name: <nazwa_kontenera>
          image: <nazwa_image>
    serviceAccountName: <nazwa_sa>
    automountServiceAccountToken: false # gdy nie chcemy tokena serviceaccount wewnątrz Poda

Tworzenie Tokena

Ważne jest to, że musimy podać nazwę naszego ServiceAccount

kubectl create token <nazwa_serviceaccount>

Domyślnie tworzony jest na 1H, Kubernetes go odnawia.