외부에서 k8s Api 를 통신할 때 아래와 같이 사용 가능
apiVersion: v1
kind: ServiceAccount
metadata:
name: api-token-account
namespace: default
---
apiVersion: v1
kind: Secret
type: kubernetes.10/service-account-token
metadata:
name: api-token-secret
namespace: default
annotations:
kubernetes.io/service-account.name: "api-token-account"
---
apiVersion: v1
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: api-token-cluster-role
rules:
- apiGroups:
- "" # core
- apps
resources:
- namespaces
- replicasets
verbs: ["list"]
---
apiVersion: v1
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: api-token-cluster-role-binding
subjects:
- kind: ServiceAccount
name: api-token-account
namespace: default
- kind: User
name: api-token-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: api-token-cluster-role
apiGroup: rbac.authorization.k8s.io
$ TOKEN=$(kubectl create token api-token-account)
$ curl -X GET https://localhost:6443/api/v1/namespaces --header "Authorization: Bearer $TOKEN" --insecure
Plant UML 코드