본문 바로가기

Study/Server

[Kubernetes] Mac M1 - kubectl 설치하기 (ft. 카카오 클라우드)

kubectl은 클러스터를 제어하기 위한 k8s 커맨드 라인 도구이다. GUI로도 사용할 수 있지만 다양한 CLI 명령어로 k8s를 제어할 수 있다.

 

kubectl 제어를 설정하기 위해 먼저 kubectl 클라이언트를 설치한 뒤 kubectl 제어를 설정하는 순서로 진행해본다. 

 

 


 

kubectl 클라이언트 설치하기

 

1. 최신 릴리즈를 다운로드 한다. (Apple Silicon 버전)

터미널을 열어 curl을 이용해 kubectl 바이너리를 설치한다. 

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

설치 완료 화면

 

 

 

2. 바이너리를 검증한다 (선택 사항)

1) 아래 커맨드를 입력해 kubectl 체크섬 파일을 다운로드 한다.

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"

 

 

2) kubectl 바이너리를 체크섬 파일을 통해 검증한다.

$ echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check

 

검증에 성공하면 "kubectl: OK" 값이 출력된다. (아래 캡쳐화면 참고)

 

바이너리 검증 화면

 

 

 

3. kubectl 바이너리에 실행 권한을 부여하고 위치를 옮긴다. 

1) 터미널에 아래 커맨드를 입력해 실행 권한을 준다. 

chmod +x ./kubectl

 

 

2) kubectl 바이너리를 시스템 PATH의 파일 위치로 옮긴다. 

$ sudo mv ./kubectl /usr/local/bin/kubectl
$ sudo chown root: /usr/local/bin/kubectl

실행 권한 부여 화면

 

 

 

4. 설치한 버전을 확인한다.

아래 커맨드를 입력해 최신 버전으로 설치가 완료되었는지 확인한다.

$ kubectl version --client

설치된 버전 확인 화면

 

 

 


 

 

kubectl 제어 설정하기 

위에서 kubectl 클라이언트 설치가 완료되었으면, 이번 단계에서는 클러스터에 대한 kubectl 제어 설정을 진행한다. 

 

 

- kubeconfig 설정하기

클러스터 접근 설정을 위해 kubeconfig 파일을 다운로드 한 후, 환경 변수를 설정한다. 

 

1. 카카오클라우드 콘솔 > Container Pack > Kubernetes Engine 메뉴로 이동하기

 

 

2. kubeconfig 파일 다운로드

Cluster 메뉴에서 클러스터 목록 중 kubectl 제어를 설정할 클러스터 줄에 "kubectl" 버튼을 클릭한 뒤,

"kubeconfig 파일 다운로드" 를 한다. 

 

 

3. kubeconfig 환경변수 설정하기

다운받은 .yaml 확장자 파일을 적절한 위치로 옮겨준 뒤, 아래 커맨드를 입력해 환경 변수를 설정하고 적용한다.

$ export KUBE_CONFIG="{DownloadPath}/{kubeconfigFile}"
$ source ~/.zshrc

 

 

 

 

- 클라우드 인증 클라이언트 설정하기

1. 카카오 클라우드 인증 클라이언트 다운로드

카카오 클라우드 인증 클라이언트 다운로드 주소에 접속해 Mac ARM_64 64Bit 버전의 "kic-iam-auth" 파일을 다운로드 받는다.

(맥북 M1 실리콘칩 기준)

 

 

2. 다운받은 클라이언트를 실행하기 위한 환경 변수 설정하기

아래 커맨드를 입력해 다운받은 파일에 실행 권한을 준다. 

$ chmod +x kic-iam-auth

 

 

3. PATH에 환경변수 등록하기

아래 커맨드를 입력해 kic-iam-auth 파일을 환경변수로 등록한다. 

$ export PATH="{DownloadPath}/kic-iam-auth:$PATH"
$ source ~/.zshrc

 

 

혹은, 기존 PATH에 존재하는 디렉터리 파일을 복사해 설정할 수도 있다.

$ cp {DownloadPath}/kic-iam-auth /usr/local/bin

 

 

 


- 액세스 키 생성하기

1. 카카오클라우드 콘솔 우측 상단 프로필 > 액세스 키 클릭

 

 

2. 액세스 키 생성하기

아래 생성 폼을 입력하면, ID/PW가 발급된다. 

액세스 키 생성 팝업 화면

 

 

 


- 사용자 인증 설정하기

앞서 다운받은 kubeconfig-{cluster이름}.yaml 파일을 열어  users > user > exec > env 부분을 확인한다. 

 

환경 변수 입력 전 화면

 

 

그리고 env: null 부분을 아래 내용(환경 변수 설정하는 내용)으로 수정한다.

users:
    - name: {클러스터 이름}-admin
      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args: null
          command: kic-iam-auth
          env:
          - name: "OS_AUTH_URL"
            value: "https://iam.kakaocloud.com/identity/v3"
          - name: "OS_AUTH_TYPE"
            value: "v3applicationcredential"
          - name: "OS_APPLICATION_CREDENTIAL_ID"
            value: "{액세스 키 ID 입력}"
          - name: "OS_APPLICATION_CREDENTIAL_SECRET"
            value: "{사용자 API 보안 액세스 키 입력}"
          - name: "OS_REGION_NAME"
            value: "{해당 클러스터의 리전 입력}"

 

 

아래 표는 위에서 env 부분에 입력한 환경 변수 목록이다. 

OS_AUTH_URL 사용자 인증을 위한 서버 URL https://iam.kakaocloud.com/identity/v3
OS_AUTH_TYPE 사용자 인증 타입 v3applicationcredential
OS_APPLICATION_CREDENTIAL_ID 액세스 키 ID 사용자가 발급한 액세스 키 ID
OS_APPLICATION_CREDENTIAL_SECRET 사용자 API 보안 액세스 키 사용자가 발급한 API 보안 액세스 키
OS_REGION_NAME 제어하고자 하는 클러스터가 존재하는 리전 kr-central-1 또는 kr-central-2

 

 

 


 

 

kubectl 동작 확인하기

마지막으로 kubectl 명령어를 터미널에 입력해 정상적으로 동작하는지 확인하는 단계이다. 

 

 

$ kubectl --kubeconfig=$KUBE_CONFIG get nodes

 

위의 명령어를 입력했더니, 아래 사진과 같이 "kic-iam-auth not found" 에러가 발생했다. 이부분에 대한 환경변수 설정이 잘 되지 않은 것 같다. 

kubectl 실행시 에러 발생한 화면

 

 

kic-iam-auth 파일을 직접 /usr/local/bin 위치로 복사해준 뒤($ sudo cp kic-iam-auth /usr/local/bin) 다시 실행하니 정상 동작했다. 

kubectl 노드 목록 확인 완료

 

 

끝!

반응형