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.