반응형
Authentication
K8S로 접근하는 방법
X509 Client Certs
- Cluster에는 접근할 때 필요한 정보(CA crt, Client crt, Client key)가 들어있는 kubeconfig라는 파일이 존재
- 외부에서 Client Key와 Client crt를 가지고 https로 API Server에 접근이 가능
- kubectl은 kubeconfig를 복사하기 때문에 accept-hosts 로 proxy를 개방하면 외부에서 proxy port로 http 접근이 가능
kubectl
- 외부의 kubectl에서 각 cluster의 kubeconfig 파일을 갖고 있다면 원하는 cluster에 접근이 가능
$ kubectl config user-context context-A
kubeconfig 구성 요소
/etc/kubernetes/admin.conf
- clusters: cluster를 등록하는 항목
- name
- url
- CA
- users: 사용자를 등록하는 항목
- name
- crt
- key
- contexts: 유저와 cluster를 매핑하는 항목
- name
- cluster
- user
Service Account
- Namespace를 생성하면 기본적으로 default라는 이름의 ServiceAccount가 생성됨
- ServiceAccount에는 CA crt와 토큰을 가진 Secret이 연결됨
- Pod를 생성하면 ServiceAccount와 연결되고 이 Pod로 API Server에 접근 가능
- 사용자는 Secret의 토큰값만 알면 API Server에 접근 가능
Authorization
RBAC
- Role과 RoleBinding을 만들어 Service Account와 연결해 권한을 부여함
- Cluster 단위의 오브젝트에 대한 권한인 ClusterRole, ClusterRoleBinding
- Namespace 단위의 오브젝트에 대한 권한인 Role, RoleBinding
- ClusterRole, ClusterRoleBinding은 모든 Namespace에 같은 권한을 부여할 때 사용하면 유용
- Pod와 같이 core object일 경우 Role.apiGroups: [""] 로 생략해도 됨
- 모든 cluster 자원에 접근 가능하게 하려면 apiGroups: [*], resources: [*], verbs: [*]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: r-01
namespace: nm-01
rules:
- apiGroups: [""]
verbs: ["get", "list"]
resources: ["pods"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: rb-01
namespace: nm-01
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: r-01
subjects:
- kind: ServiceAccount
name: default
namespace: nm-01
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cr-02
rules:
- apiGroups: ["*"]
verbs: ["*"]
resources: ["*"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: rb-02
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cr-02
subjects:
- kind: ServiceAccount
name: sa-02
namespace: nm-02
반응형
'Kubernetes' 카테고리의 다른 글
Autoscaler(HPA, VPA, CA) 개념 (0) | 2024.01.07 |
---|---|
Sidecar Containers (v1.28~) (0) | 2023.12.27 |
Controller (0) | 2023.02.08 |
AutoScaler (0) | 2023.02.08 |
Ingress (0) | 2023.02.08 |