.NET 教程 - 将微服务部署到 Azure
介绍
目标
了解如何将使用 .NET 和 Docker 生成的微服务部署到 Microsoft Azure。
先决条件
必需: 本教程使用在你的第一个微服务教程中创建的应用。
必填: Docker Hub 帐户。
完成时间
15-20 分钟
方案
拿出以前创建的微服务,并使用 DockerHub 和 Azure Kubernetes 服务(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
push 命令会将你的映像上传到 Docker 中心,这可能需要一些时间。
设置 Azure 工具
创建 Azure 帐户
如果你是 Azure 新手,可以创建免费帐户。如果你拥有现有帐户,则可以跳过此步骤。
创建免费的 Azure 帐户安装 Azure CLI
Azure CLI 提供用于管理 Azure 帐户的工具。
登录 Azure
安装完成后,打开新的命令提示符并运行以下命令来登录到 Azure 帐户:
安装完成后,打开新的终端并运行以下命令来登录到 Azure 帐户:
az login
安装 AKS CLI
Kubernetes 是一个容器编排平台。编排负责运行、分发、缩放和修复由容器集合组成的应用程序。Azure Kubernetes 服务(AKS)将 Kubernetes 作为一项托管服务提供给用户。
运行以下命令为 AKS 安装命令行工具:
az aks install-cli
你可能会收到有关设置系统 PATH 变量的建议警报。本教程不需要这些内容。
创建 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
的内容替换为以下内容,确保将 [YOUR DOCKER ID] 替换为实际 Docker ID。
---
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 地址(EXTERNAL-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 中生成第一个微服务终结点:
你可能还会关注...