Необходимы для того чтобы каждая служба имела свой доступ к метаданным, некоторым не нужен доступ, некоторым только на чтение, некоторым запись определённых метаданных
Создание учётной записи
kubectl create serviceaccount foo
kubectl describe sa foo Name: foo Namespace: default Labels: <none> Annotations: <none> Image pull secrets: <none> Mountable secrets: foo-token-nxxfs Tokens: foo-token-nxxfs Events: <none>
kubectl describe secret foo-token-nxxfs Name: foo-token-nxxfs Namespace: default Labels: <none> Annotations: kubernetes.io/service-account.name: foo kubernetes.io/service-account.uid: a6d35ff4-5cfc-11e9-b073-080027284abe Type: kubernetes.io/service-account-token Data ==== ca.crt: 1066 bytes namespace: 7 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImZvby10b2tlbi1ueHhmcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJmb28iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhNmQzNWZmNC01Y2ZjLTExZTktYjA3My0wODAwMjcyODRhYmUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpmb28ifQ.alqXofaCt_bBaWA0sCLS0jP5VQ9OFxhC5fT6X9dNNkGvo-xm1JTvhG0XNWPcdny-aIY-yaMZBCA6gFueDbjZAhOJjOMlI6F66yTjtt_cHfkB0AzfmHq6o5owsxA7yJDyaOO_2WtOdDmQDtTQaUWH2vin7af_rmwZMosAqh9e1oJ0RQvmbOMk-O4E82zItUdzjHHX24xxbXzOAuF6PTzCUsEHA22WgSnbXtIvh1moUa8RGBKYxirvrFFeQE99Az7cNl_22ErNgUDlwSRZzTp90ZvqKUBELmK48sBvb4W7x3WMFjr6TRnhmt0DTpI-IKuVd_g2kd-dM6_87R04HoWZGw
Чтобы разрешить модулю монтировать только разрешённые модули, ServiceAccount должен содержать аннотацию kubernetes.io/enforce-mountable-
secrets=»true»
Учётная запись ServiceAccount может содержать данные для выгрузки образов
apiVersion: v1 kind: ServiceAccount metadata: name: my-service-account imagePullSecrets: - name: my-dockerhub-secret
Добавление секретов в ServiceAccount позволяет не добавлять их в каждый модель отдельно
Назначение модулю учётную запись службы
apiVersion: v1 kind: Pod metadata: name: curl-custom-sa spec: serviceAccountName: foo containers: - name: main image: tutum/curl command: ["sleep","999999999"] - name: ambassador image: luksa/kubectl-proxy:1.6.2
kubectl exec -it curl-custom-sa -c main cat /var/run/secrets/kubernetes.io/serviceaccount/token eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImZvby10b2tlbi1ueHhmcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJmb28iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhNmQzNWZmNC01Y2ZjLTExZTktYjA3My0wODAwMjcyODRhYmUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpmb28ifQ.alqXofaCt_bBaWA0sCLS0jP5VQ9OFxhC5fT6X9dNNkGvo-xm1JTvhG0XNWPcdny-aIY-yaMZBCA6gFueDbjZAhOJjOMlI6F66yTjtt_cHfkB0AzfmHq6o5owsxA7yJDyaOO_2WtOdDmQDtTQaUWH2vin7af_rmwZMosAqh9e1oJ0RQvmbOMk-O4E82zItUdzjHHX24xxbXzOAuF6PTzCUsEHA22WgSnbXtIvh1moUa8RGBKYxirvrFFeQE99Az7cNl_22ErNgUDlwSRZzTp90ZvqKUBELmK48sBvb4W7x3WMFjr6TRnhmt0DTpI-IKuVd_g2kd-dM6_87R04HoWZGw
0 Comment