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.)