kubernetes 의 Authentication 과 Authorization 활용
[ Authentication ]
- client-ca-file 로 접속
- static password file 사용
- static token file 사용
- OpenStack Keystone 사용
static password 도 잘됨, 그러나 Authorization 을 연동해 보지는 않았음.
OpenStack Keystone 연계는 아직 알파버전이고 수정이 자주 일어나서 아직 소스까지 볼 단계는 아니라 생략.
static token 방식은 Authorization 과도 잘 연동되므로 이걸 활용
## uuid generate
$ cat /proc/sys/kernel/random/uuid
## {{uuid}} 는 위에서 제너레이션 된 값으로 대치
$ sudo vi /etc/default/kube-token
{{uuid}},admin,1
{{uuid}},ahnsk,2,"tfabric,group1"
{{uuid}},stack,3,tfabric
## api 서버에 token file 옵션 추가
$ sudo chown stack.root /etc/default/kube-token
--token-auth-file=/etc/default/kube-token \
$ sudo systemctl restart kube-apiserver.service
$ kubectl -s https://kube-master01:6443 --token={{uuid}} get node
[ Authorization ]
- ABAC Mode
- RBAC Mode
kube-system 이 kube-apiserver 에 접근하기 위해서는 1라인이 반드시 있어야 함
$ sudo vi /etc/default/kube-apiserver
--authorization-mode=ABAC \
--authorization-policy-file=/etc/default/kube-rbac.json \
$ sudo systemctl restart kube-apiserver.service
$ cd ~/kube
$ vi busybox-tfabric.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: tfabric
spec:
containers:
- image: gcr.io/google_containers/busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
$ kubectl -s https://kube-master01:6443 --token={{uuid}} --v=8 version
token 지정을 매번 하기 귀찮으니 config context 를 활용하는 것이 좋음.
이건 다음에....