공식 홈페이지에서 본인의 OS에 맞게 설치
https://www.docker.com/get-started/
Docker Desktop 설치 진행 중 WSL2 사용 옵션 활성화 (기본값으로 체크되어있음)
설치 완료 후 시스템 재시작
설치 완료
재시작 후 Our Service Agreement has Changed
동의하면 도커 데스크탑 화면 출력
(튜토리얼 스킵)
위 화면에서 잠시 기다리면 아래와 같이 실행 상태의 화면이 출력됨
Use the WSL 2 based engine
옵션 활성화되어있는지 확인 (윈도우 기준)
WSL Integration
메뉴 내 Enable integration with additional distros:
항목에 Ubuntu
체크 (윈도우 기준)
만약 위 화면에서 Ubuntu 체크박스가 표시되지 않는다면 아래 항목 체크
docker desktop 설정 내 Kubernetes 메뉴에 Enable Kubernetes
설정 활성화
(PC 사양에 따라 설치에 다소 시간이 소요됨)
helm 릴리즈 페이지에서 본인 OS에 맞는 릴리즈 다운로드 (https://github.com/helm/helm/releases)
원하는 디렉토리에 압축해제 및 환경변수 등록
윈도우 기준 가이드: https://lifeplan-b.tistory.com/37
공식 문서: https://helm.sh/ko/docs/intro/install/
환경변수 설정 전에 켜져있던 cmd 창에는 반영되지 않으니 cmd 재시작 필요
helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace --set controller.ingressClassResource.default=true --set controller.config.proxy-buffer-size=16k --set controller.config.client-max-body-size=100m
명령 실행 시 아래와 같은 출력이 나옴
C:\Users\bell0>helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace
Release "ingress-nginx" does not exist. Installing it now.
NAME: ingress-nginx
LAST DEPLOYED: Tue Aug 2 03:14:25 2022
NAMESPACE: ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller'
An example Ingress that makes use of the controller:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
namespace: foo
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- pathType: Prefix
backend:
service:
name: exampleService
port:
number: 80
path: /
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: example-tls
If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
apiVersion: v1
kind: Secret
metadata:
name: example-tls
namespace: foo
data:
tls.crt: <base64 encoded cert>
tls.key: <base64 encoded key>
type: kubernetes.io/tls
참고: https://kubernetes.github.io/ingress-nginx/deploy/#quick-start
kubectl get all -n ingress-nginx
위 명령어 수행 시 아래와 같이 pod running 상태 및 LoadBalancer의 EXTERNAL-IP 에 localhost 가 출력되면 정상
C:\Users\bell0>kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-controller-6bf7bc7f94-fq6fl 1/1 Running 0 48s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller LoadBalancer 10.99.39.193 localhost 80:30710/TCP,443:30156/TCP 48s
service/ingress-nginx-controller-admission ClusterIP 10.108.100.152 <none> 443/TCP 48s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 1/1 1 1 48s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-6bf7bc7f94 1 1 1 48s
kubectl describe ingressclass
위 명령어 수행 시 Annotations 항목에 ingressclass.kubernetes.io/is-default-class: true
설정이 되어있으면 정상
C:\Users\bell0>kubectl describe ingressclass
Name: nginx
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/instance=ingress-nginx
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=ingress-nginx
app.kubernetes.io/part-of=ingress-nginx
app.kubernetes.io/version=1.3.0
helm.sh/chart=ingress-nginx-4.2.0
Annotations: ingressclass.kubernetes.io/is-default-class: true
meta.helm.sh/release-name: ingress-nginx
meta.helm.sh/release-namespace: ingress-nginx
Controller: k8s.io/ingress-nginx
Events: <none>
리눅스: /etc/hosts
윈도우: C:\Windows\System32\drivers\etc\hosts
(관리자 권한으로 수정 필요)
hosts 파일 하단에 개발을 진행하는 프로젝트의 테스트 도메인 추가 (각 프로젝트별 개발 환경 설정 가이드 참고)
ex)
127.0.0.1 bellsafehouse.test