Service account adalah akun yang digunakan oleh sistem Kubernetes untuk mengelola akses ke sumber daya dalam sebuah cluster. Ini memungkinkan aplikasi dalam cluster untuk mengakses sumber daya yang diperlukan untuk menjalankan tugasnya, seperti membaca atau menulis data ke database atau mengakses layanan eksternal lainnya. Service account biasanya dikonfigurasi oleh administrator sistem untuk mengatur hak akses dalam cluster.
Service account ini bisa juga kita gunakan untuk authentikasi dari mesin lain seperti ci/cd atau auto deployment.
Template Read Only
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ sa-name }}
namespace: {{ namespace }}
secrets:
- name: {{ token-name }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ namespace }}
name: read-only
rules:
- apiGroups: ["", "apps"]
resources: ["deployments", "services"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ sa-name }}
namespace: {{ namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: read-only
subjects:
- kind: ServiceAccount
name: {{ sa-name }}
namespace: {{ namespace }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ token-name }}
annotations:
kubernetes.io/service-account.name: {{ sa-name }}
type: kubernetes.io/service-account-token
Template Read-Write
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ sa-name }}
namespace: {{ namespace }}
secrets:
- name: {{ token-name }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ namespace }}
name: read-write
rules:
- apiGroups: ["", "extensions", "apps", "batch", "networking.k8s.io", "autoscaling"]
resources: ["deployments", "services", "horizontalpodautoscalers"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ sa-name }}
namespace: {{ namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: read-write
subjects:
- kind: ServiceAccount
name: {{ sa-name }}
namespace: {{ namespace }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ token-name }}
annotations:
kubernetes.io/service-account.name: {{ sa-name }}
type: kubernetes.io/service-account-token
end