Windows 10의 로컬 Kubernetes 클러스터에서 반응 앱 실행
10610 단어 windowsreactkubernetesdevops
전제 조건
이 블로그에서는 Docker Desktop의 설치 프로세스와 WSL2 backend을 활성화하는 방법을 다루지 않습니다. 독자가 주어진 리소스에서 자체적으로 프로세스를 파악할 수 있다고 가정합니다. 향후 블로그에 충분한 수요가 있는 경우 이러한 주제를 자세히 다룰 수 있습니다.
설치 후 Docker Desktop에서
Linux Containers Backend을 실행 중인지 확인하십시오.미니큐브 시작
minikube은 로컬 호스트(이 경우 Windows)에서 개발하기 위해 로컬 kubernetes 클러스터를 설정합니다.
로컬 도커 이미지를 사용하고 도커 레지스트리로 푸시할 필요성을 우회한 다음 kubernetes에 배포하는 동안 동일하게 지정하므로
--insecure-registry=10.0.0.0/24이 사용됩니다.왜
10.0.0.0/24입니까? 점검다음 명령을 실행하여 powershell(가급적 admin powershell)에서 로컬 kubernetes 클러스터를 시작합니다.
minikube start --insecure-registry="10.0.0.0/24"
샘플 출력
❯ minikube start --insecure-registry="10.0.0.0/24"
* minikube v1.18.1 on Microsoft Windows 10 Pro 10.0.21332 Build 21332
* Using the docker driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Restarting existing docker container for "minikube" ...
* Preparing Kubernetes v1.20.2 on Docker 20.10.3 ...
* Verifying Kubernetes components...
- Using image kubernetesui/dashboard:v2.1.0
- Using image kubernetesui/metrics-scraper:v1.0.4
- Using image gcr.io/k8s-minikube/storage-provisioner:v4
* Enabled addons: storage-provisioner, dashboard, default-storageclass
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
반응 앱 만들기
Windows 환경에
node 및 npm이 설치되어 있는지 확인❯ node -v
v15.11.0
❯ npm -v
7.6.3
그런 다음
npx create-react-app test-react-app을 사용하여 테스트 반응 애플리케이션을 만듭니다.❯ npx create-react-app test-react-app
Need to install the following packages:
create-react-app
Ok to proceed? (y) y
Creating a new React app in D:\work\test-react-app.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...
yarn add v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
마지막으로 앱이 예상대로 실행되는지 확인합니다.

Minikube 도커 로컬 환경 구성
다음 명령을 실행하여 로컬 도커 이미지를 사용하여 더 쉽게 개발을 반복할 수 있도록 로컬 구성을 설정합니다.
노트
이것은 다음 명령을 실행하는 powershell 터미널에 로컬로 유지됩니다.
& minikube -p minikube docker-env | Invoke-Expression
궁금한 사람은
minikube docker-env을 실행하여 실행되는 실제 명령을 확인하십시오.❯ minikube docker-env
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://127.0.0.1:52175"
$Env:DOCKER_CERT_PATH = "C:\Users\Naren\.minikube\certs"
$Env:MINIKUBE_ACTIVE_DOCKERD = "minikube"
# To point your shell to minikube's docker-daemon, run:
# & minikube -p minikube docker-env | Invoke-Expression
반응 애플리케이션을 도커화합니다.
반응 앱의 도커 이미지를 만드는 가장 간단한 방법은 애플리케이션 폴더의 루트(git의 경우 저장소)에 다음 파일을 추가하는 것입니다.

도커파일
FROM node:10-alpine as build-step
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
RUN npm run build
FROM nginx:1.17.1-alpine
COPY --from=build-step /app/build /usr/share/nginx/html
.dockerignore
/node_modules
/build
.git
*.md
.gitignore
도커 이미지 빌드
docker build -t test-react-app .
빌드된 이미지 확인
❯ docker images test-react-app
REPOSITORY TAG IMAGE ID CREATED SIZE
test-react-app latest e81a494ead2b About a minute ago 21.1MB
쿠버네티스 배포
쿠버네티스 클러스터에 리액트 앱을 배포하려면
deployment 및 service 리소스가 필요합니다. 두 사양을 yaml으로 분리하여 단일 --- 파일에 결합할 수 있습니다.imagePullPolicy 속성을 관찰하십시오. 이는 image이라는 test-react-app을 가져오기 위해 docker 레지스트리를 보지 않음을 나타냅니다.service이라는 가장 간단한 NodePort을 사용하여 kubernetes 클러스터의 노드 포트를 애플리케이션 포트 
배포.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: test-react-app
spec:
replicas: 1
selector:
matchLabels:
app: test-react-app
template:
metadata:
labels:
app: test-react-app
spec:
containers:
- name: test-react-app
image: test-react-app
imagePullPolicy: Never
ports:
- containerPort: 80
restartPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: test-react-app
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
nodePort: 32000
selector:
app: test-react-app
배포
kubectl apply -f <yaml>을 사용하여 배포와 서비스를 모두 배포합니다.kubectl apply -f .\deployment.yaml
샘플 출력
❯ kubectl apply -f .\deployment.yaml
deployment.apps/test-react-app created
service/test-react-app created
실행 중인 포드 확인
kubectl get pods을 사용하여 실행 중인 포드가 있는지 확인합니다.❯ kubectl get pods
NAME READY STATUS RESTARTS AGE
test-react-app-9bf9cbcdb-h9zvj 1/1 Running 0 12s
반응 앱에 액세스
서비스 URL 찾기
minikube을 사용하여 배포된 반응 애플리케이션의 서비스 URL을 찾습니다.minikube service test-react-app --url
샘플 출력
❯ minikube service test-react-app --url
🏃 Starting tunnel for service test-react-app.
|-----------|----------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|------------------------|
| default | test-react-app | | http://127.0.0.1:62352 |
|-----------|----------------|-------------|------------------------|
http://127.0.0.1:62352
❗ Because you are using a Docker driver on windows, the terminal needs to be open to run it.
브라우저에서 앱 열기

로컬 Kubernetes 대시보드
그동안 우리는 kubernetes 로컬 대시보드에서
kubectl 명령 실행의 효과를 볼 수 있습니다.minikube dashboard
샘플 출력
❯ minikube dashboard
🔌 Enabling dashboard ...
▪ Using image kubernetesui/dashboard:v2.1.0
▪ Using image kubernetesui/metrics-scraper:v1.0.4
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:56135/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
새 탭에서 대시보드를 엽니다.

대청소
다음 명령을 사용하여
deployment 및 service을 정리합니다.kubectl delete -f .\deployment.yaml
minikube(로컬 k8s 클러스터)을 닫고 삭제합니다.minikube stop
minikube delete
Reference
이 문제에 관하여(Windows 10의 로컬 Kubernetes 클러스터에서 반응 앱 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/narenandu/running-a-react-app-on-local-kubernetes-cluster-on-windows-10-3mi6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)