No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

5D
17H
12M
49S
Curso de Kubernetes

Curso de Kubernetes

Marcos Lilljedahl

Marcos Lilljedahl

Service account tokens

30/33
Recursos

Service Account Tokens es un mecanismo de autenticación de kubernetes y vive dentro de la plataforma, nos permite dar permisos a diferentes tipos de usuarios.

  • Existen en la API de kubernetes. kubectl get serviceaccount
  • Pueden crearse, eliminarse y actualizarse
  • Un service account está asociado a secretos kubectl get secrets
  • Son utilizados para otorgar permisos a aplicaciones y servicios

Aportes 6

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Otro comando util para obtener el token del usuario admin es
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

# Ver service accounts
kubectl get serviceaccounts
kubectl get sa
# Ver service account por defecto (ver secreto asociado)
kubectl get sa default -o yaml
# Obtener token de secreto asociado
kubectl get sa default -o json | jq -r '.secrets[0].name'
# Guardar token de secreto asociado en una variable
K8S_SECRET_NAME=$(kubectl get sa default -o json | jq -r '.secrets[0].name')
# Ver secreto
kubectl get secret $K8S_SECRET_NAME -o yaml
# Decodificar token
kubectl get secret $K8S_SECRET_NAME -o json | jq -r .data.token | base64 -d
# Guardar token
K8S_TOKEN=$(kubectl get secret $K8S_SECRET_NAME -o json | jq -r .data.token | base64 -d)
# Ver servicios del namespace "default" y copiar la IP del servicio "kubernetes"
kubectl get svc -n default
# Acceder al cluster (SOLO MINIKUBE)
minikube ssh -p multinode-platzi-demo
# Acceder al servicio de kubernetes con token de autenticación
# NOTA: Si se utiliza minikube la variable $K8S_TOKEN está en otro entorno, por lo que será necesario ingresarla manualmente
curl -k https://$IP_SERVICIO_K8S -H "Authorization: Bearer $K8S_TOKEN"

En el caso de que no puedan ver el secret del default sa, pueden crear uno para hacer el ejercicio:

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: build-robot-secret
  annotations:
    kubernetes.io/service-account.name: build-robot
type: kubernetes.io/service-account-token
EOF

Y después obtener el token:

$ kubectl describe secrets/build-robot-secret
ó
$ kubectl get secret build-robot-secret -o yaml

Decode

$ kubectl get secret build-robot-secret -o json | jq -r .data.token | base64 -d

Entrar al cluster y hacer curl:

$ minikube ssh -p multinode-demo
$curl -k https://10.96.0.1 -H "Authorization: Bearer XxXxXxX"

Entendido y aplicado

kg serviceaccounts
kg sa
kg sa default -o yam
kg sa default -o json | jq -r '.secrets[0].name'
kg secret default-token-27rtl7 -o yaml

kg secret default-token-27rtl7 -o json | jq -r '.data.token' | base64 -d
curl -k https://10.96.0.1 -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InVMUmNIUnpuNEFWNXdyaERLSFQzVi0yMnIwVmdkYXprR1JRby1FSkVEYTAifQ.eyJpc3MiOiJrdWJlcm....."

super gracias 😃

Excelente mecanismo “Service Account Tokens”