Di Kubernetes, Service Account adalah cara untuk menyediakan identitas kepada proses yang berjalan di dalam Pod. Ini berguna untuk memberikan izin akses yang diperlukan ke API Kubernetes. Artikel ini akan membahas cara membuat Service Account dan Token di Kubernetes, serta cara menggunakan dan mengelolanya.

Check daftar service account

admin@master01:~$ kubectl get serviceaccount -n mylabs
NAME                 SECRETS   AGE
api-tok              0         4h2m
api-token            1         3d17h
default              1         66d
deployment-manager   0         7h18m
deployment-updater   0         7h20m
listrik-token        0         4h12m
test                 0         3h42m
token-dep-mgr        0         4h15m
admin@master01:~$

Membuat service account

kubectl create serviceaccount test-account -n mylabs
admin@master01:~$ kubectl describe serviceaccount test-account -n mylabs
Name:                test-account
Namespace:           mylabs
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              <none>
Events:              <none>
admin@master01:~$

Membuat service account token

nano token-test-account.yml
apiVersion: v1
kind: Secret
metadata:
  name: my-long-lived-secret
  namespace: mylabs
  annotations:
    kubernetes.io/service-account.name: test-account
type: kubernetes.io/service-account-token

Mengapply konfigurasi

admin@master01:~$ kubectl apply -f token-test-account.yml
secret/test-account-token created
admin@master01:~$

Mengecek service account kembali

admin@master01:~$ kubectl describe serviceaccount test-account -n mylabs
Name:                test-account
Namespace:           mylabs
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              my-long-lived-secret
Events:              <none>
admin@master01:~$

Membuat role, misal deployment manager

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: deployment-manager
  namespace: mylabs
rules:
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "list", "watch", "update", "patch"]

Binding service account ke role

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-user-token-binding
  namespace: mylabs
subjects:
  - kind: ServiceAccount
    name: test-account
    namespace: mylabs
roleRef:
  kind: Role
  name: deployment-manager
  apiGroup: rbac.authorization.k8s.io

Testing service account

admin@master01:~/ns-mylabs$ kubectl auth can-i get deployments --as=system:serviceaccount:mylabs:deployment-manager -n mylabs
yes
admin@master01:~/ns-mylabs$ kubectl auth can-i list deployments --as=system:serviceaccount:mylabs:deployment-manager -n mylabs
yes
admin@master01:~/ns-mylabs$
admin@master01:~/ns-mylabs$ kubectl auth can-i watch deployments --as=system:serviceaccount:mylabs:deployment-manager -n mylabs
yes
admin@master01:~/ns-mylabs$ kubectl auth can-i update deployments --as=system:serviceaccount:mylabs:deployment-manager -n mylabs
yes
admin@master01:~/ns-mylabs$

Membuat Service Account dan Token di Kubernetes adalah proses yang penting untuk memberikan izin akses yang diperlukan kepada aplikasi di dalam cluster Anda. Kubernetes biasanya menangani pembuatan Token secara otomatis, tetapi Anda juga dapat membuat Secret secara manual jika diperlukan. Dengan mengikuti langkah-langkah ini, Anda dapat memastikan bahwa Service Account dan Token Anda dikelola dengan baik.

Leave a Reply

Your email address will not be published. Required fields are marked *