【 Cloud 】將 React 透過 Docker Hub 部署到 Azure Kubernetes Service ( AKS )

【 Cloud 】將 React 透過 Docker Hub 部署到 Azure Kubernetes Service ( AKS )
Photo by Hisham Zayadnh / Unsplash

內容

  • 學習目標
  • 前置準備作業
  • 專案目錄結構
  • 建立 React 專案的 Docker Image 並部署到 Docker Hub
  • 建立與設定 Azure Kubernetes Service
  • 部署 React 到 AKS
  • 測試與驗證
  • 刪除所建立的資源與服務

學習目標

  • 如何將 React 透過 Docker Hub 部署到 Azure Kubernetes Service ( AKS )

前置準備作業

專案目錄結構

  • 本範例目錄結構如下
└── 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 .
      

      ---2022-02-21---8.58.40


Step 3. 查看本地端 Image

  • 請在終端機輸入下方內容

    docker images
    

    ---2022-02-21---8.59.17


Step 4. 登入到 Docker Hub

  • 請在終端機輸入下方內容

    docker login
    

    ---2022-02-21---9.01.06


Step 5. 上傳到 Docker Hub

  • 請在終端機輸入下方內容
    docker push DockerHubAccount/ImageName:Tag
    
    • 請修改指令中的 DockerHubAccount 為在 Docker Hub 上所建立的帳號。
    • 請修改指令中的 ImageNameStep 2 的名稱。
    • 請修改指令中的 TagStep 2 的版號。
    • 本範例使用如下
      docker push mmosconii/docker-react:0.1
      

Step 6. 查看 Docker Hub

---2022-02-21---9.03.42

---2022-02-21---9.04.13

建立與設定 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
      

      ---2022-02-20---9.11.14


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
      

      ---2022-02-21---9.10.29

部署 React 到 AKS

Step 1. 取得 AKS Credential

  • 請在終端機輸入下方內容
    az aks get-credentials --resource-group ResourceGroupName --name AksName
    
    • 修改指令中的 ResourceGroupName 請輸入段落 建立與設定 Azure Kubernetes ServiceStep 2 所建立的名稱。

    • 修改指令中的 AksName 請輸入段落 建立與設定 Azure Kubernetes ServiceStep 3 所建立的名稱。

    • 本範例使用如下

      az aks get-credentials --resource-group aks-test-rg --name aks-react-test
      

      ---2022-02-21---9.11.14


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/
    

---2022-02-21---9.14.41

測試與驗證

Step 1. 查看 Pods

  • 請在終端機輸入下方內容
    kubectl get pods
    

---2022-02-21---9.15.19


Step 2. 查看 Deployment

  • 請在終端機輸入下方內容
    kubectl get deployment
    

---2022-02-21---9.15.48


Step 3. 查看 Service 並取得 IP

  • 請在終端機輸入下方內容以取得 EXTERNAL-IP
    kubectl get service
    

---2022-02-21---9.16.20


Step 4. 存取 React

  • 請在瀏覽器輸入下方內容
    http://EXTERNAL-IP
    
    • 請把 EXTERNAL-IP 改成 Step 3 所取得的 EXTERNAL-IP

---2022-02-21---9.17.17

刪除所建立的資源與服務

Step 1. 刪除 Application

  • 請在終端機輸入下方內容
    kubectl delete -f kube-manifests/
    

---2022-02-21---9.18.36


Step 2. 查看 Pods

  • 請在終端機輸入下方內容
    kubectl get pods
    

---2022-02-21---9.19.07


Step 3. 查看 Deployment

  • 請在終端機輸入下方內容
    kubectl get deployment
    

---2022-02-21---9.19.36


Step 4. 查看 Service

  • 請在終端機輸入下方內容
    kubectl get service
    

---2022-02-21---9.20.02


Step 5. 刪除所建立的相關資源

  • 請在終端機輸入下方指令
    az group delete -n ResourceGroupName
    
    • 修改指令中的 ResourceGroupName 將其改為 建立與設定 Azure Kubernetes Service 段落中 Step 3 所建立的名稱。

    • 本範例使用如下

      az group delete -n aks-test-rg
      

      ---2022-02-21---9.27.58

GitHub

List of blogs