HomeAbout
[Kubernetes] VSCode (VisualStudio Code)로 Kubernetes 클러스터 관리 : 초보자를 위한 완벽 가이드
Docker & Kubernetes
[Kubernetes] VSCode (VisualStudio Code)로 Kubernetes 클러스터 관리 : 초보자를 위한 완벽 가이드
NASA1515
NASA1515
August 19, 2021
2 min

목차

01
✔ Preview : VSCODE로 k8s를 관리한다면?
02
✌ AKS 구성

✔ Preview : VSCODE로 k8s를 관리한다면?

nasagif

  • 위처럼 pod, service 등의 yaml 형식을 자동으로 정의해 편리하게 사용 가능
  • 굳이 명령어를 치지 않고도 배포 및 상태 확인이 가능
  • yaml manifest 모아서 관리 한 뒤 helm Chart를 만들기 간편하다.
  • 추가적으로 AKS은 대체로 Cloud Shell을 이용하는데 - Cloud Shell은 docker 명령을 지원하지 않는다.
  • 실제로 Master Node는 존재하지 않고 (PaaS 형태) NodePool에만 docker가 깔려있음 때문에 Imaging을 할 Docker Client를 따로 구성해야 하는 불편함이 있다.
    그래서 구성해야하면 VSCODE가 깔린 Window의 Local의 Docker로 Imaging 작업을 진행하고 바로 aks에서 인식하게 하려는 계획입니다.

그냥 겁나 편하다


✌ AKS 구성


아래 Azure의 공식 DOC로 CLI, Portal을 이용해서 AKS Cluster를 구축합니다.

  • Azure AKS DOC
  • Azure Portal 용 AKS DOC


Cluster 생성되면 아래와 같이 RG와 Resource들이 생성됩니다.

123

  • k8s : AKS Resource가 있는 RG
  • MC_k8s_nasa1515_koreacentral : AKS의 실제 VMSS나 PIP들의 Resource가 있는 RG


이제 Cloud shell에서 kubelet 명령어를 입력해보려는데 ERROR가 발생합니다.

캡처

  • Cloud shell에서 AKS에 연결하기 위해선 Credentials이 필요하기 때문입니다.


다음 명령어로 credentials을 가져 올 수 있습니다.

az aks get-credentials --resource-group [myResourceGroup] --name [myAKSCluster]

Credentials을 가져온 뒤 정상적으로 kebectl 명령이 실행됩니다.

캡처2


사실 이미 VSCODE의 Azure extentions을 이용해 Cloud shell로 사용 가능합니다.

캡처3333

  • 다만 저는 CloudShell의 불편함을 해결하고, 왼쪽의 File list에서 여러 yaml 을 관리하고 싶습니다.

VSCODE Kubernetes extentions 사용

그래서 VSCODE의 Kubernetes extentions을 사용해 AKS와 직접 연결하겠습니다.


위의 링크에서 설명하는 방법은 다음과 같습니다.

  • 1. AKS Cluster 생성
  • 2. Local에 Azure CLI 설치
  • 3. vscode에 kubernetes extentions 설치
  • 4. kubernetes extentions을 사용해 AKS와 직접 연결

1,2번 작업은 이미 완료했다고 가정하고 2번 작업 이후 local 에서 Azure cli에 연결해야 합니다.


az aks install-cli

캡처4


az login 명령으로 azure 로그인

az login

캡처5555


AKS의 Credentials 가져오기

E az aks get-credentials --resource-group k8s --name nasa1515 

캡처666


AKS의 dashboard 실행시키기

az aks browse --resource-group k8s --name nasa1515

캡처6666


Extentions 에 AKS 연결하기



위의 작업을 완료하면 vscode의 extentions에서 다음과 같이 구독이 표시됩니다.

캡처77777


정상적으로 Cluster를 추가했으나 옆에 Cluster 목록에 뜨지 않는 이슈가 발생.

vscode에서 kubectl.exe의 환경변수가 정상적으로 등록되지 않아서 발생.



기본적으로 kubernetes extentions을 설치하면 아래 위치에 tools이 설치됩니다.


해당 위치의 환경변수 설정이 자동으로 되지 않아 이슈가 발생.

MicrosoftTeams-image

위처럼 window cmd console 에서도 kubectl 명령이 먹지 않습니다.



[window 10] 고급 시스템 설정 -> 환경변수에서 path에 해당 경로를 추가해줍니다.

적용하고 나오기



이제 window cmd , vscode terminer에서 모두 kubectl이 사용 가능합니다.

44444


이미 설치된 kubectl 말고도 바이너리를 설치 할 수도 있습니다.

가이드


설치 방법은 다음과 같습니다.


  • 1. curl로 kubectl 바이너리 설치

    curl -LO https://dl.k8s.io/release/v1.20.0/bin/windows/amd64/kubectl.exe
    

  • 2. 바이너리 검증

    ### checksum file download 
    
    curl -LO https://dl.k8s.io/v1.20.0/bin/windows/amd64/kubectl.exe.sha256
    

  • 3. checksum file로 검증

    CertUtil -hashfile kubectl.exe SHA256
    type kubectl.exe.sha256
    
    점검 결과 동일
    C:\Users\USER>CertUtil -hashfile kubectl.exe SHA256                                                                                                                                                                                   SHA256의 kubectl.exe 해시:                                                                                                                                                                                                            ee7be8e93349fb0fd1db7f5cdb5985f5698cef69b7b7be012fc0e6bed06b254d                                                                                                                                                                      CertUtil: -hashfile 명령이 성공적으로 완료되었습니다.                                                                                                                                                                                                                                                                                                                                                                                                                       C:\Users\USER>type kubectl.exe.sha256                                                                                                                                                                                                 ee7be8e93349fb0fd1db7f5cdb5985f5698cef69b7b7be012fc0e6bed06b254d                                                                                                                                                                      C:\Users\USER>
    

  • 4. kubectl version 확인

    C:\Users\USER>kubectl version --client
    Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"windows/amd64"}
    


환경변수 설정 후 동일하게 진행했지만 이번엔 다른 에러가 발생합니다.

KakaoTalk_20210324_164952086

해당 경로에는 한글이나 깨질만한 언어로 생성된 것이 없었습니다.


그래서 vscode kubenetes extentions의 config 설정을 확인하니

다음과 같이 settings.json이라는 file로 관리되고 있었습니다.


해당 settings.json file은 실제 extentions 설정의 값을 그대로 반영합니다.

그러나 다음과 같이 main path로 등록이 될 부분들은 빈칸이 되어야 했습니다.

저의 경우에는 해당 칸들이 자동으로 undefined로 채워져 있었습니다.

또한 이미 undefined로 채워져 있었을 경우 이후 빈칸으로 만든 뒤 저장을해도 setting.json 파일에서는 인식이 안되는 이슈가 있습니다.


그래서 저는 settings.json file을 직접 수정했습니다.

해당 부분이 helm이나 kubectl들의 main 바이너리 위치를 읽는 부분입니다.

"vs-kubernetes": {
    
"vscode-kubernetes.helm-path.windows": "C:\\Users\\USER\\.vs-kubernetes\\tools\\helm\\windows-amd64\\helm.exe",
"vscode-kubernetes.minikube-path.windows": "C:\\Users\\USER\\.vs-kubernetes\\tools\\minikube\\windows-amd64\\minikube.exe",
"vs-kubernetes.kubeconfig": "undefined",    <<--- 지정하지 않고 undefined 로 둬야함
"vscode-kubernetes.kubectl-path.windows": "C:\\Users\\USER\\.vs-kubernetes\\tools\\kubectl\\kubectl.exe"  <<--- 해당 환경 변수 문을 추가
},

위 까지 모든 설정을 완료했으면 가이드 대로 AKS 연결 시 정상 연결됩니다.

그럼 위처럼 vscode <-> aks cluster가 직접 연결되어 환경관리나 배포가 가능합니다.



추가 이슈 발생 : Cluster는 연결이되나 명령어 실행이 되지 않음

사실 ERROR만 봐도 알 수 있는 error 입니다. 위의 Settings.json File에서 Config File의 위치를 지정해야함


저의 최종 Settings.json File은 다음과 같습니다.

캡처2


간단한 테스트 Yaml을 하나 생성해서 배포해보겠습니다.

캡처3


vscode에서 yaml 작성 후 Shift + Ctrl + P 입력 후 Create로 배포


실제 연결된 Cluster의 pod 목록에서도 확인히 가능합니다.

캡처5


또한 명령어로 입력하지 않고 클릭으로만 확인이 가능합니다.

캡처6


Tags

#CLOUD#Azure#Kubernetes
NASA1515

NASA1515

Data Engineer

Hello I'M Wonseok aka NASA1515

Expertise

Public Cloud
k8s/Docker
Python

Social Media

instagramwebsitelinkedingithub

Related Posts

[Kubernetes] Kubernetes 관리자를 위한 자주 쓰는 핵심 kubectl 명령어 (command) 치트시트
[Kubernetes] Kubernetes 관리자를 위한 자주 쓰는 핵심 kubectl 명령어 (command) 치트시트
2021-07-29
1 min

Topics

CloudDevelop

Social Media