docker desktop context
AWS eks 에서 스타트업 지원 (300만원) 을 받아 네이버 클라우드 플랫폼으로 이전하게 되었다. CNI 룰에 따라서 도커를 많이 띄울수도 없는 불편함을 느끼고 있던 와중.
지원도 받았겠다. 과감히 ncp로 이전을 선택했다. 다행이도 하루만에 기존 ingress nginx나 서버 세팅 ( ci/cd는 기존 aws파이프라인 유지) 를 거의다 그대로 옮길 수 있었고 , CNI 룰 또한 제한이 없어 비용 절감도 20%정도 되었던것 같다. 각설하고,
AWS eks 같은 경우엔 eksctl 로 설치하게 된다면 kubectl의 context 에도 해당 서버의 접속 권한 등이 자동으로 추가가되어 추가로 설정할 필요가 없었지만...
$ kubectl --kubeconfig "설정파일" get nodes
네이버 클라우드의 문서에 따르면( 네이버 클라우드 문서 ) 위와같은 방법으로 context를 설정하라고 안내하고 있다. 매번 kubeconfig 파일을 -- 붙이면 이용하기에 불편함이 있어
docker desktop( kubectl ) context 에 추가를 하는 방법을 알아봤다.
할수있는 방법을 찾아봤었는데 딱히 눈에 보이는 정보들이 없었다. 이럴땐.. 역시 공식문서가 답이다. kubectl config 공식문서 링크
kubectl config view
크게보면 clusters, contexts , users 로 나누어져 있는것으로 볼 수 있다. kubectl context를 등록하기 위해선 아래의 세가지 단계를 (순서 상관없음) 따라야한다!
1. users 에서 유저정보, 유저 인증정보 등록하기
2. clusters에서 cluster 이름과 접속 주소
3. contexts 에서 클러스터와 유저정보를 매칭시키기
정보를 등록하기 위해서는 config set 명령어를 사용하면 되는데 간단하게 json object 접근하는 느낌이라고 생각하면 된다.
users 의 유저이름 의 client-key-data를 변경하고싶다면 아래와 같은 방식으로 작성해주면 된다.
kubectl config set users.<유저이름>.client-key-data <설정할값>
주의점은 ncp 에서 받은 config.yaml 파일이 이미 base64 encoding이 되어있는 형태 --set-raw-bytes=false (default false) 이기때문에 뒤에 값을 집어넣을 때 그대로 쓰면된다.
1,2,3 단계를 따라 kubectl context를 설정해 보자.
1. 유저정보, 유저 인증정보 등록하기 ( 이부분에서 클러스터의 접속 권한을 정할 수 있다. 전체권한이라던지...)
유저이름은 밑에 두명령어를 치다보면 자동으로 등록이 된다.
ncp 에서 받은 config.yaml 파일을 열어 긴 문자열을 복사해서 붙여넣는다.
kubectl config set users.<유저이름>.client-key-data <설정할값>
kubectl config set users.<유저이름>.client-certificate-data <설정할값>
2. clusters에서 cluster 이름과 접속 주소
그다음 clusters 의 항목에 대한 설정이 필요한데 config.yaml 파일 상단에 위치된 certificate-authority-data , server 값을 복사해서 넣으면 된다. 이때도 그냥집어넣자. base64로 인코딩 되어있다.
kubectl config set clusters.<클러스터 이름>.certificate-authority-data <설정할값>
kubectl config set clusters.<클러스터 이름>.server <설정할값>
3. contexts 에서 클러스터와 유저정보를 매칭시키기
이부분은 이제 docker desktop 에도 뜨는 화면이니 이름설정을 잘 할수있도록 하자
kubectl config set contexts.<context 이름>.cluster <매칭시킬 클러스터(위의 클러스터 이름)>
kubectl config set contexts.<context 이름>.user <매칭시킬 유저이름(위의 유저 이름)>
위단계를 완료한 이후 docker desktop 에서 추가한 context 이름을 선택하고 kubectl 명령어를 치면 해당 서버와 통신이 되는것을 확인할 수 있다.
주의! skaffold를 로컬에서 사용중인분들은 항상 작업할때 로컬 쿠버네티스인지 서버인지 context를 확인해야한다!
'프로젝트' 카테고리의 다른 글
[고스락 티켓 2.0] 두번째 프로젝트는 어떻게 달라졌을까요? (4) | 2022.08.13 |
---|---|
Github labels github action으로 설정하기 (0) | 2022.08.12 |
디프만 11기 지도 위 실시간 채팅 앱 티키타카 개발기 (1) | 2022.08.11 |
aws ec2 docker log cloudwatch 에서 받아보기 (2) | 2022.02.01 |
고스락 티켓예매 프로젝트 (0) | 2022.01.26 |