티스토리 뷰
kubernetes config (보통 ~/.kube/config파일)를 셋팅해주는 shell프로그램입니다.
아래 소스로 shell파일을 만들고, 실행권한을 준 후 , 실행하시면 됩니다.
$ vi setup-config
$ chmod +x setup-config
$ ./setup-config kubernetes hklee
kubernetes 클러스터에 아래와 같이 작업
- 네임스페이스 ns-hklee 생성
- Service account sa-hklee 생성
- rb-sa-hklee라는 rolebinding하면서 sa-hklee에게 ns-hklee의 'admin' 역할 부여. 다른 namespace는 접근 못하게 함
- kubeconfig에 service account 'sa-hklee'생성
- kubeconfig에 context 'hklee'생성
#!/bin/bash
echo "##### START of Setup kubeconfig! #####"
CLUSTER=`kubectl config view --minify -o jsonpath='{.clusters[0].name}'`
NS=""
# Get parameter
if ([ $# == 0 ]) || ([ $# -eq 1 ] && [ "$1" == "-h" -o "$1" == "--help" ]); then
echo "setup-config.sh [<CLUSTER>] <NAMESPACE POSTFIX>"
echo " CLUSTER: cluster명이며 기본값은 kubernetes이며 생략할 수 있음"
echo " NAMESPACE: namespace명으로 실제 namespace는 ns-<NAMESPACE>로 생성되며 필수값임"
exit 2
fi
if [ $# == 1 ]; then
NS=$1
elif [ $# == 2 ]; then
CLUSTER=$1
NS=$2
fi
# Switch to kubernetes-admin context
kubectl config use-context kubernetes-admin@kubernetes
# Create namespace if not exists
chk=`kubectl get ns | grep ns-${NS}`
if [ $? == 1 ]; then
echo "[ Create namespace ns-${NS} ]"
kubectl create ns ns-${NS}
else
echo "[ namespace ns-${NS} already exists ]"
fi
# Create service account if not exists
chk=`kubectl get sa -n ns-${NS} | grep sa-${NS}`
if [ $? == 1 ]; then
echo "[ Create serviceaccount sa-${NS} ]"
kubectl create sa sa-${NS} -n ns-${NS}
else
echo "[ serviceaccount sa-${NS} already exists in ns-${NS} ]"
fi
# Create rolebinding
chk=`kubectl get rolebinding -n ns-${NS} | grep rb-sa-${NS}`
if [ $? == 1 ]; then
echo "[ Create rolebinding rb-sa-${NS} ]"
kubectl create rolebinding rb-sa-${NS} --clusterrole=admin --serviceaccount=ns-${NS}:sa-${NS} -n ns-${NS}
else
echo "[ rolebinding rb-sa-${NS} already exists ]"
fi
# Get token of the serviceaccount
secret=`kubectl get secret -n ns-${NS} | grep sa-${NS} | cut -d " " -f1`
TOKEN=`kubectl describe secret ${secret} -n ns-${NS} | grep token: | cut -d ":" -f2 | tr -d " "`
# Create user
chk=`kubectl config view | grep "name: sa-{NS}"`
if [ $? == 1 ]; then
echo "[ Create user sa-${NS} in kubeconfig ]"
kubectl config set-credentials sa-${NS} --token=${TOKEN}
else
echo "[ User sa-${NS} already exists in kubeconfig ]"
fi
# Create context
chk=`kubectl config view | grep "name: ${NS}"`
if [ $? == 1 ]; then
echo "[ Create context ${NS} ]"
kubectl config set-context ${NS} --user=sa-${NS} --cluster=${CLUSTER} --namespace=ns-${NS}
else
echo "[ Context ${NS} already exists in kubeconfig ]"
fi
# Test
current=`kubectl config current-context`
kubectl config use-context ${NS}
kubectl get all
if [ $? == 0 ]; then
echo "SUCCESS to setup kubeconfig !!!"
else
echo "FAIL to setup kubeconfig !!!"
fi
kubectl config use-context ${current}
echo "##### END of Setup kubeconfig! #####"
'Cloud > Kubernetes' 카테고리의 다른 글
prometheus와 grafana를 이용한 통합모니터링 체계 구축 (2) | 2021.02.03 |
---|---|
EFK스택을 이용한 통합로깅체계 구축 (3) | 2021.02.02 |
NFS서버 설치와 NFS Dynamic Provisioning 설정 (0) | 2020.10.11 |
pv,pvc,namespace 강제 삭제 (0) | 2020.09.10 |
Troubleshooting: 갑자기 flannel pod가 crash나는 경우 (0) | 2020.09.08 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- spotify
- 마이크로서비스 패턴
- 스핀프로젝트
- 요즘남편 없던아빠
- SAGA
- micro service
- 애자일
- 디토소비
- 스포티파이
- 분초사회
- 도파밍
- 리퀴드폴리탄
- 마이크로서비스
- agile
- API Composition
- 육각형인간
- AXON
- 버라이어티가격
- 돌봄경제
- 호모프롬프트
- CQRS
- Event Sourcing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함