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

內容

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

學習目標

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

前置準備作業

專案目錄結構

  • 本範例目錄結構如下
└── aks-deploy-vue
    ├── docker-manifests
    │   └── Dockerfile
    ├── kube-manifests
    │   ├── 01-Deployment.yml
    │   └── 02-LoadBalancer.yml
    └── vue-web
        ├── README.md
        ├── babel.config.js
        ├── package-lock.json
        ├── package.json
        ├── public
        │   ├── favicon.ico
        │   └── index.html
        └── src
            ├── App.vue
            ├── assets
            │   └── logo.png
            ├── components
            │   └── HelloWorld.vue
            └── main.js

建立 Vue 專案的 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-vue: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
    
    • 請修改指令中的 DockerHubAccountStep 2 的帳號。

    • 請修改指令中的 ImageNameStep 2 的名稱。

    • 請修改指令中的 TagStep 2 的版號。

    • 本範例使用如下

      docker push mmosconii/docker-vue:0.1
      


Step 6. 查看 Docker Hub

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

部署 Vue 到 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-vue-test
      


Step 2. 建立 Deployment 的 YAML

  • 請在專案目錄中建立 kube-manifests 資料夾並在此資料夾中建立 01-Deployment.yml 檔案,其內容如下
    • 請修改 第 18 行 中的 DockerHubAccount建立 Vue 專案的 Docker Image 並部署到 Docker Hub 段落中 Step 2 的帳號。
    • 請修改 第 18 行 中的 ImageName建立 Vue 專案的 Docker Image 並部署到 Docker Hub 段落中 Step 2 的名稱。
    • 請修改 第 18 行 中的 Tag建立 Vue 專案的 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. 存取 Vue

  • 請在瀏覽器輸入下方內容
    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
      

GitHub

List of blogs