.NET 教學課程 - 將微服務部署到 Azure
入門
目的
了解如何將使用 .NET 和 Docker 組建的微服務部署至 Microsoft Azure。
必要條件
必要: 本教學課程會使用在 [您的第一個微服務] 教學課程中建立的應用程式。
必要: Docker Hub 帳戶。
完成時間
15-20 分鐘
情節
使用 DockerHub 和 Azure Kubernetes Service (AKS) 將先前建立的微服務部署到 Azure。
推送到 Docker Hub
Docker Hub 是上傳 Docker 映射的中央位置。許多產品 (包括 Microsoft Azure) 可根據 Docker Hub 中的映射建立容器。
登入 Docker Hub
在命令提示字元中執行下列命令:
在終端中,執行下列命令:
docker login
使用在上一個教學課程中下載 Docker 時所建立的使用者名稱和密碼。如有需要,您可以瀏覽 Docker Hub 網站重設密碼。
將影像上傳至 Docker Hub
在您的使用者名稱下重新標記 (重新命名) 您的 Docker 影像,並使用下列命令將其推送到 Docker Hub:
docker tag mymicroservice [YOUR DOCKER USERNAME]/mymicroservice
docker push [YOUR DOCKER USERNAME]/mymicroservice
推送命令會將您的映像上傳到 Docker Hub,這可能需要一些時間。
設定 Azure 工具
建立 Azure 帳戶
如果您是 Azure 的新使用者,則可以建立免費帳戶。如果您有現有的帳戶,則可以略過此步驟。
建立免費的 Azure 帳戶安裝 Azure CLI
Azure CLI 提供用於管理您 Azure 帳戶的工具。
登入 Azure
安裝完成後,請開啟新的命令提示字元,然後執行下列命令登入您的 Azure 帳戶:
安裝完成後,請開啟新終端,然後執行下列命令,以登入您的 Azure 帳戶:
az login
安裝 AKS CLI
Kubernetes 是容器協調流程平台。協調器負責執行、發佈、調整規模及修復由容器集合組成的應用程式。Azure Kubernetes Service (AKS) 可將 Kubernetes 作爲受控服務。
執行下列命令以安裝 AKS 的命令列工具:
az aks install-cli
您可能會收到提示您設定系統路徑變數的建議。這些並非此教學課程的必要項目。
建立 Azure 資源
建立資源群組
資源群組會用來整理與單一應用程式相關的資源集。
執行下列命令,在美國西部區域建立資源群組:
az group create --name MyMicroserviceResources --location westus
如果您想要在上一個命令上使用不同的位置,您可以執行下列命令,查看您的帳戶中可使用的區域,然後挑選一個較靠近您的區域:
az account list-locations -o table
如果您想要為工作階段使用不同的訂用帳戶,您可以執行下列命令取得所有訂用帳戶的清單:
az account list --all
然後您可以執行下列命令,為該工作階段設定特定的月租方案:
az account set -s NAME_OR_ID
建立 AKS 叢集
執行下列命令以在資源群組中建立 AKS 叢集:
這個命令通常需要幾分鐘的時間才能完成。
az aks create --resource-group MyMicroserviceResources --name MyMicroserviceCluster --node-count 1 --enable-addons http_application_routing --generate-ssh-keys
執行下列命令以下載認證並部署到您的 AKS 叢集:
az aks get-credentials --resource-group MyMicroserviceResources --name MyMicroserviceCluster
部署到 Azure
返回應用程式目錄
因為您在上一步中開啟了新的命令提示字元,所以需要返回您建立服務的目錄。
因為您在上一步中開啟了新的終端,所以需要回到您在其中建立服務的目錄。
cd MyMicroservice
建立部署檔案
AKS 工具使用 .yaml
檔案來定義如何部署您的容器。
使用此命令建立名為 deploy.yaml
的檔案:
touch deploy.yaml
fsutil file createnew deploy.yaml 0
然後,您可以在喜愛的文字編輯器中開啟它。
然後,您可以在喜愛的文字編輯器中手動開啟它,或使用此命令:
open deploy.yaml
start deploy.yaml
在文字編輯器中將 deploy.yaml
的內容取代為下列內容,請確定將 [您的 DOCKER 識別碼] 取代為您實際的 Docker 識別碼。
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mymicroservice
spec:
replicas: 1
template:
metadata:
labels:
app: mymicroservice
spec:
containers:
- name: mymicroservice
image: [YOUR DOCKER ID]/mymicroservice:latest
ports:
- containerPort: 80
env:
- name: ASPNETCORE_URLS
value: http://*:80
selector:
matchLabels:
app: mymicroservice
---
apiVersion: v1
kind: Service
metadata:
name: mymicroservice
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: mymicroservice
執行部署
執行下列命令,根據 deploy.yaml
中的設定部署微服務:
kubectl apply -f deploy.yaml
測試部署的服務
執行下列命令以查看已部署服務的詳細資訊:
kubectl get service mymicroservice --watch
此外,上一個命令會顯示您的服務可在 (外部-IP) 上使用的外部 IP 位址。
使用外部 IP 位址,開啟新的瀏覽器視窗並瀏覽至 http://[YOUR EXTERNAL IP ADDRESS]/weatherforecast
如果 EXTERNAL-IP 標示為 <pending>
,則配置外部 IP 後,會自動顯示新行。
在命令提示字元上按 CTRL+C,以結束 kubectl get service
命令。
在終端上按 CTRL+C,以結束 kubectl get service
命令。
恭喜! 您已將微服務部署到 Azure。
調整您的服務
使用 Kubernetes 的優點在於,您可以輕鬆地將部署擴大到多個執行個體,以處理額外的負載。目前只有單一執行個體,因此讓我們調整為兩個執行個體。
執行下列命令,將您的服務擴大到最多兩個執行個體:
kubectl scale --replicas=2 deployment/mymicroservice
清理資源
完成微服務的測試之後,您可以刪除使用下列命令建立的所有資源:
az group delete -n MyMicroserviceResources
後續步驟
下列資源可協助您繼續使用 .NET 探索微服務。
適用於初學者的微服務
讓 Nish 帶您了解微服務概念以及如何在 .NET 中建置您的第一個微服務端點:
您可能也會想了解...