TheKoguryo's 기술 블로그

 Version 2024.04.01

1.1.3.2 로컬 환경에서 클러스터 연결하기

OKE 클러스터 접속을 위해서는 #1. OCI CLI 설치 및 인증 설정, #2. kubectl 설치 및 kubeconfig 파일 생성의 작업이 필요합니다.

OCI CLI 설치 및 환경 구성

OCI CLI 설치

공식 문서 또는 아래 문서를 참고하여 OCI OCI를 설치합니다.

Oracle Linux 기준 예시

  1. 설치

    bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
    
  2. 설치 확인

    oci --version
    

OCI CLI Config File설정

아래 문서를 참고하여 Config File을 설정합니다.

연결 확인

  1. OCI CLI를 설정한 로컬환경에서 간단한 명령인 oci os ns get을 실행하여 연결 확인

    $ oci os ns get
    {
      "data": "cnxxxxxxxxgq"  
    }
    
kubectl CLI 설치 및 환경 구성

kubectl CLI 설치

공식 문서를 참고하여 kubectl OCI를 설치합니다.

Linux 기준 예시

  1. 설치

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    
    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    

kubeconfig 파일 생성하기

  1. 생성한 OKE 클러스터 상세 페이지에서 Access Cluster를 클릭합니다.

  2. Local Access 를 클릭합니다.

    image-20230516174631592

  3. PUBLIC_ENDPOINT

    Kubernetes API 접근을 Public IP로 접근할 때 사용합니다. OKE 클러스터 생성시 Kubernetes API에 Public IP를 부여한 경우에 사용 가능한 방법입니다.

    Cloud Shell에서 사용한 것과 동일합니다.

  4. PRIVATE_ENDPOINT

    Kubernetes API 접근을 Private IP로 접근할 때 사용합니다. PRIVATE_ENDPOINT, 즉 Private IP로 접근을 해야 하므로, 내부 IP로 접근이 가능한 위치에서 수행할 때 사용합니다.

    • bastion host는 외부에서 SSH로 접근 가능하게 22 포트 오픈이 필요하며, 내부적으로는 OKE 클러스터의 Kubernetes API 및 Worker Nodes 들에 접근이 가능해야 합니다.
    • kubeconfig 파일 생성 및 클러스터에 접속 확인
    [opc@bastion-host ~]$ oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.ap-chuncheon-1.aaaaaaaaq4ltd357todnpr2xqi5lu2orcp26jrdt4lz573ytdc4vz7x3dqla --file $HOME/.kube/config --region ap-chuncheon-1 --token-version 2.0.0  --kube-endpoint PRIVATE_ENDPOINT
    New config written to the Kubeconfig file /home/opc/.kube/config
    [opc@bastion-host ~]$ kubectl cluster-info
    Kubernetes control plane is running at https://10.0.0.4:6443
    CoreDNS is running at https://10.0.0.4:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    [opc@bastion-host ~]$
    
  5. kubectl로 접속이 되는 것을 확인했습니다. 이제 kubectl로 일반적인 쿠버네티스를 명령을 수행하여 사용하면 됩니다.

앱 배포해보기
  1. 가장 흔한 형태인 Public Container Registry인 Docker Hub에서 이미지를 가져와서 OKE 클러스터에 배포를 해봅니다.

    kubectl create deployment nginx-docker-hub --image=nginx:latest
    
  2. 배포 결과를 확인해보면 정상적으로 배포된 것을 알 수 있습니다.

    $ kubectl create deployment nginx-docker-hub --image=nginx:latest
    deployment.apps/nginx-docker-hub created
    $ kubectl get all
    NAME                                    READY   STATUS    RESTARTS   AGE
    pod/nginx-docker-hub-5bfd857f89-9rh8q   1/1     Running   0          31s
    
    NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)             AGE
    service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP,12250/TCP   80m
    
    NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/nginx-docker-hub   1/1     1            1           31s
    
    NAME                                          DESIRED   CURRENT   READY   AGE
    replicaset.apps/nginx-docker-hub-5bfd857f89   1         1         1       31s
    


이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 7 Jan 2024