운영체제 (LNX,WIN)

macOS 기반 Kubernetes 구성 및 Dashboard 설치 개발환경 설정

날으는물고기 2024. 8. 30. 00:42

Mac에 Minikube를 설치하려면 다음 단계를 따르면 됩니다. Homebrew를 사용하여 Minikube를 설치하는 방법입니다.

사전 요구 사항

  1. Homebrew 설치: Homebrew가 설치되어 있어야 합니다. Homebrew가 없다면 다음 명령어를 사용하여 설치할 수 있습니다.
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Hypervisor 설치: Minikube는 가상화를 사용하므로, 가상화 소프트웨어가 설치되어 있어야 합니다. 기본적으로 Mac에서는 HyperKit을 사용할 수 있습니다. HyperKit을 설치하려면 다음 명령어를 사용합니다.
    brew install hyperkit

Minikube 설치

  1. Minikube 설치: Homebrew를 사용하여 Minikube를 설치합니다.
    brew install minikube
  2. Minikube 시작: Minikube를 시작하여 Kubernetes 클러스터를 생성합니다.
    minikube start --driver=hyperkit
  3. kubectl 설치: Minikube와 함께 사용할 Kubernetes 커맨드라인 도구인 kubectl을 설치합니다.
    brew install kubectl

Minikube 사용

  1. 클러스터 상태 확인: Minikube 클러스터의 상태를 확인합니다.
    minikube status
  2. Kubernetes 구성 확인: kubectl을 사용하여 Kubernetes 클러스터 정보를 확인합니다.
    kubectl cluster-info
  3. Dashboard 열기: Minikube Dashboard를 열어 웹 인터페이스를 통해 클러스터를 관리할 수 있습니다.
    minikube dashboard

기본적인 Kubernetes 명령어 예시

  1. Pods 목록 조회
    kubectl get pods -A
  2. Namespace 생성
    kubectl create namespace my-namespace
  3. Deployment 생성
    kubectl create deployment nginx --image=nginx --namespace=my-namespace
  4. 서비스 노출
    kubectl expose deployment nginx --type=NodePort --port=80 --namespace=my-namespace

이 과정을 따라하면 Mac에 Minikube를 성공적으로 설치하고 사용할 수 있습니다. 또는, Mac 환경에서 Docker Desktop을 사용하여 Kubernetes를 활성화 할 수 있습니다. Docker Desktop에서 Kubernetes 기능을 활성화하면 기본적인 Kubernetes 클러스터가 실행되지만, 기본적으로 Ingress Controller는 포함되어 있지 않습니다. 따라서 Ingress 기능을 사용하려면 별도로 Ingress Controller를 설치해야 합니다. 일반적으로 많이 사용되는 Ingress Controller로는 NGINX Ingress Controller가 있습니다. NGINX Ingress Controller를 설치하는 방법을 아래에 설명하겠습니다.

1. Docker Desktop에서 Kubernetes 활성화

  1. Docker Desktop을 실행합니다.
  2. Docker Desktop의 설정(Settings)으로 이동합니다.
  3. "Kubernetes" 탭을 선택합니다.
  4. "Enable Kubernetes" 옵션을 체크하여 활성화합니다.
  5. "Apply & Restart"를 클릭하여 Docker Desktop을 재시작합니다.

2. Helm 설치

Mac에서 Helm을 설치하려면 Homebrew를 사용할 수 있습니다.

brew install helm

3. NGINX Ingress Controller 설치

Helm을 사용하여 NGINX Ingress Controller를 설치합니다.

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install my-ingress ingress-nginx/ingress-nginx

이 명령어를 실행하면 my-ingress라는 이름의 NGINX Ingress Controller가 설치됩니다.

4. Ingress Resource 생성

다음은 Ingress Resource를 정의하는 예시입니다. 이 파일을 example-ingress.yaml로 저장합니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: example.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              number: 80

이 파일을 적용하려면 다음 명령어를 실행합니다.

kubectl apply -f example-ingress.yaml

5. /etc/hosts 파일 수정

로컬 환경에서 example.local 도메인을 사용하기 위해 /etc/hosts 파일을 수정합니다. 터미널에서 다음 명령어를 사용하여 파일을 엽니다.

sudo nano /etc/hosts

파일에 다음 줄을 추가합니다.

127.0.0.1 example.local

6. Kubernetes 설정 확인

설치된 NGINX Ingress Controller와 Ingress Resource가 제대로 동작하는지 확인합니다.

kubectl get pods -n ingress-nginx
kubectl get svc -n ingress-nginx
kubectl get ingress

위 명령어들을 통해 Ingress Controller가 정상적으로 설치되었는지, Ingress Resource가 제대로 설정되었는지 확인할 수 있습니다.

 

필요에 따라 NGINX Ingress Controller의 설정을 커스터마이징할 수 있습니다. 자세한 내용은 NGINX Ingress Controller 공식 문서를 참고하시기 바랍니다. 이 과정을 통해 Mac 환경에서 Docker Desktop을 사용하여 Kubernetes 클러스터를 설정하고 Ingress 기능을 활성화할 수 있습니다.

아래는 MacOS에서 로컬 개발 환경을 위한 Minikube 클러스터를 Docker 기반으로 구성하는 방법입니다. 로컬에서 Kubernetes 클러스터를 설정하고, DNS 및 TLS 인증서를 구성하여 애플리케이션을 테스트할 수 있도록 도와줍니다.

1. 준비 사항

Minikube 설치를 위해서는 Docker와 같은 컨테이너 환경이나 가상 머신 환경이 필요합니다. 설치에 필요한 모든 애플리케이션은 Homebrew를 사용하여 설치합니다.

2. Minikube 설치

brew install minikube

3. DNSMasq 설정

DNSMasq는 소규모 네트워크에 DNS 서비스를 제공하는 경량의 DNS 포워더입니다. 이를 사용하여 .test 도메인을 로컬 IP 주소(127.0.0.1)로 해석하게 할 수 있습니다.

3.1 DNSMasq 설치

brew install dnsmasq

3.2 DNSMasq 구성

.test 도메인을 127.0.0.1로 해석하도록 DNSMasq를 구성합니다.

 

M1 사용자

echo "address=/test/127.0.0.1" >> /opt/homebrew/etc/dnsmasq.conf

Intel 사용자:

echo "address=/test/127.0.0.1" >> /usr/local/etc/dnsmasq.conf

DNSMasq를 재시작합니다.

sudo brew services restart dnsmasq

3.3 MacOS DNS 해석기 설정

MacOS에서 추가적인 DNS 해석기를 설정하기 위해 /etc/resolver/ 디렉토리에 구성 파일을 생성합니다.

sudo mkdir -p /etc/resolver

도메인 파일을 생성합니다.

sudo tee /etc/resolver/test >/dev/null <<EOF
nameserver 127.0.0.1
EOF

이제 .test 도메인을 해석할 수 있는지 확인합니다.

ping -c 1 tonys.test

.test 도메인이 127.0.0.1로 해석되어야 합니다.

4. MKCERT 설치 및 설정

MKCERT는 로컬에서 신뢰할 수 있는 개발용 인증서를 생성하는 도구입니다.

4.1 MKCERT 설치

brew install mkcert

4.2 인증서 생성

다음 명령어로 로컬에서 신뢰할 수 있는 인증서를 생성합니다.

mkcert -install \
-cert-file certs/mkcert.pem \
-key-file certs/mkcert-key.pem \
hello-john.test hello-jane.test \
k8s.dashboard.test "*.dashboard.test" \
"*.test" \
localhost 127.0.0.1 ::1

5. Minikube 클러스터 생성

다음 명령어로 Minikube 클러스터를 생성합니다.

minikube start \
    --addons=ingress,ingress-dns,dashboard,metrics-server \
    --cni=flannel \
    --install-addons=true \
    --kubernetes-version=stable \
    --vm-driver=docker --wait=false \
    --cpus=4 --memory=6g --nodes=1 \
    --extra-config=apiserver.service-node-port-range=1-65535 \
    --embed-certs

6. Minikube Ingress 설정

6.1 인증서를 클러스터에 추가

생성된 인증서를 클러스터에 추가합니다.

kubectl -n kube-system create secret tls mkcert --key certs/mkcert-key.pem --cert certs/mkcert.pem

6.2 Ingress 애드온을 사용자 인증서로 설정

다음 명령어로 Ingress 애드온을 설정합니다.

minikube addons configure ingress

프롬프트에서 kube-system/mkcert를 입력합니다.

-- Enter custom cert (format is "namespace/secret"): kube-system/mkcert

애드온을 재시작합니다.

minikube addons disable ingress
minikube addons enable ingress

7. Minikube 터널 시작

터널을 시작하여 클러스터 내 워크로드에 접근할 수 있도록 합니다.

minikube tunnel

8. Ingress 테스트

터널이 실행 중인 상태에서 다음 명령어로 Hello World 애플리케이션을 배포합니다.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/minikube/master/deploy/addons/ingress-dns/example/example.yaml

이제 다음과 같이 배포된 애플리케이션에 접근할 수 있습니다.

curl hello-john.test

HTTPS로 접근하여 인증서가 mkcert에서 발급되었는지 확인합니다.

curl -v https://hello-john.test

MacOS에서 Minikube를 사용하여 로컬 Kubernetes 클러스터를 설정하고, 로컬에서 테스트하기 위한 환경을 구성할 수 있습니다.

728x90