【 Cloud 】將 React 透過 Docker Hub 部署到 Azure Kubernetes Service ( AKS )
內容
- 學習目標
- 前置準備作業
- 專案目錄結構
- 建立 React 專案的 Docker Image 並部署到 Docker Hub
- 建立與設定 Azure Kubernetes Service
- 部署 React 到 AKS
- 測試與驗證
- 刪除所建立的資源與服務
學習目標
- 如何將
React
透過Docker Hub
部署到Azure Kubernetes Service ( AKS )
前置準備作業
- 已建立 Azure 帳號並能正常登入
- 已於電腦端存在可正常執行的 Vue 專案
- 已於電腦端安裝 IDE,本範例使用 Visual Studio Code
- 已於電腦端安裝 Docker Engine
- 已於電腦端安裝 AZ Cli
- 已建立 Docker Hub 帳號
- 已於電腦端安裝 kubectl
專案目錄結構
- 本範例目錄結構如下
└── aks-deploy-react
├── docker-manifests
│ └── Dockerfile
├── kube-manifests
│ ├── 01-Deployment.yml
│ └── 02-LoadBalancer.yml
└── react-web
├── README.md
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
├── logo.svg
├── reportWebVitals.js
└── setupTests.js
建立 React 專案的 Docker Image 並部署到 Docker Hub
Step 1. 建立 Dockerfile
- 建立
docker-manifests
資料夾並在此資料夾中建立Dockerfile
的檔案,再輸入以下內容
Step 2. 建立 Docker Image
- 請在終端機切換路徑到專案目錄再輸入下方內容
docker build -t DockerHubAccount/ImageName:Tag -f docker-manifests/Dockerfile .
-
請修改指令中的
DockerHubAccount
為在Docker Hub
上所建立的帳號。 -
請修改指令中的
ImageName
為可識別的名稱。 -
請修改指令中的
Tag
為版號。 -
本範例使用如下
docker build -t mmosconii/docker-react:0.1 -f docker-manifests/Dockerfile .
-
Step 3. 查看本地端 Image
-
請在終端機輸入下方內容
docker images
Step 4. 登入到 Docker Hub
-
請在終端機輸入下方內容
docker login
Step 5. 上傳到 Docker Hub
- 請在終端機輸入下方內容
docker push DockerHubAccount/ImageName:Tag
- 請修改指令中的
DockerHubAccount
為在Docker Hub
上所建立的帳號。 - 請修改指令中的
ImageName
為Step 2
的名稱。 - 請修改指令中的
Tag
為Step 2
的版號。 - 本範例使用如下
docker push mmosconii/docker-react:0.1
- 請修改指令中的
Step 6. 查看 Docker Hub
- 透過瀏覽器開啟 https://hub.docker.com/ 並登入成功之後會看到所上傳的 Image
建立與設定 Azure Kubernetes Service
Step 1. 登入到 Azure
- 請在終端機輸入下方內容
az login
Step 2. 建立 Azure 資源群組
- 請在終端機輸入下方內容
az group create --name ResourceGroupName --location Region
-
修改指令中的
ResourceGroupName
為唯一可識別的名稱。 -
修改指令中的
Region
請輸入資源部署於何處- 可輸入
az account list-locations -o table
查看可用區域
- 可輸入
-
本範例使用如下
az group create --name aks-test-rg --location westus2
-
Step 3. 建立 AKS
- 請在終端機輸入下方內容
az aks create -g ResourceGroupName -n AksName
-
修改指令中的
ResourceGroupName
請輸入Step 2
所建立的名稱。 -
修改指令中的
AksName
成唯一可識別的名稱。 -
本範例使用如下
az aks create -g aks-test-rg -n aks-react-test
-
部署 React 到 AKS
Step 1. 取得 AKS Credential
- 請在終端機輸入下方內容
az aks get-credentials --resource-group ResourceGroupName --name AksName
-
修改指令中的
ResourceGroupName
請輸入段落建立與設定 Azure Kubernetes Service
中Step 2
所建立的名稱。 -
修改指令中的
AksName
請輸入段落建立與設定 Azure Kubernetes Service
中Step 3
所建立的名稱。 -
本範例使用如下
az aks get-credentials --resource-group aks-test-rg --name aks-react-test
-
Step 2. 建立 Deployment 的 YAML
- 請在專案目錄中建立
kube-manifests
資料夾並在此資料夾中建立01-Deployment.yml
檔案,其內容如下- 請修改
第 18 行
中的DockerHubAccount
為建立 React 專案的 Docker Image 並部署到 Docker Hub
段落中Step 2
的帳號。 - 請修改
第 18 行
中的ImageName
為建立 React 專案的 Docker Image 並部署到 Docker Hub
段落中Step 2
的名稱。 - 請修改
第 18 行
中的Tag
為建立 React 專案的 Docker Image 並部署到 Docker Hub
段落中Step 2
的版號。 - 本範例使用如下
- 請修改
Step 3. 建立 LoadBalancer 的 YAML
- 請在專案目錄中的
kube-manifests
資料夾並在此資料夾中建立02-LoadBalancer.yml
檔案,其內容如下
Step 4. 部署 Application
- 請在終端機輸入下方內容
kubectl apply -f kube-manifests/
測試與驗證
Step 1. 查看 Pods
- 請在終端機輸入下方內容
kubectl get pods
Step 2. 查看 Deployment
- 請在終端機輸入下方內容
kubectl get deployment
Step 3. 查看 Service 並取得 IP
- 請在終端機輸入下方內容以取得
EXTERNAL-IP
kubectl get service
Step 4. 存取 React
- 請在瀏覽器輸入下方內容
http://EXTERNAL-IP
- 請把
EXTERNAL-IP
改成Step 3
所取得的EXTERNAL-IP
- 請把
刪除所建立的資源與服務
Step 1. 刪除 Application
- 請在終端機輸入下方內容
kubectl delete -f kube-manifests/
Step 2. 查看 Pods
- 請在終端機輸入下方內容
kubectl get pods
Step 3. 查看 Deployment
- 請在終端機輸入下方內容
kubectl get deployment
Step 4. 查看 Service
- 請在終端機輸入下方內容
kubectl get service
Step 5. 刪除所建立的相關資源
- 請在終端機輸入下方指令
az group delete -n ResourceGroupName
-
修改指令中的
ResourceGroupName
將其改為建立與設定 Azure Kubernetes Service
段落中Step 3
所建立的名稱。 -
本範例使用如下
az group delete -n aks-test-rg
-