介绍
目标
了解如何将使用 .NET 和 Docker 生成的微服务部署到 Microsoft Azure。
先决条件
必需: 本教程使用在你的第一个微服务教程中创建的应用。
必填: Docker Hub 帐户。
完成时间
15-20 分钟
方案
拿出以前创建的微服务,并使用 DockerHub 和 Azure Kubernetes 服务(AKS)将其部署到 Azure。
转到 Docker Hub
Docker Hub 是上传 Docker 映像的中心位置。许多产品(包括 Microsoft Azure)都可以基于 Docker Hub 中的图像创建容器。
登录到 Docker Hub
Command prompt
docker login
使用在上一个教程中下载 Docker 时创建的用户名和密码。如果需要,可以访问 Docker Hub 网站重置密码。
将图像上传到 Docker Hub
重新标记(重命名)用户名下的 Docker 映像,并使用以下命令将其推送到 Docker Hub:
Command prompt
docker tag mymicroservice [YOUR DOCKER USERNAME]/mymicroservice
docker push [YOUR DOCKER USERNAME]/mymicroservice
push 命令会将你的映像上传到 Docker 中心,这可能需要一些时间。
创建 Azure 资源
创建资源组
资源组用于组织一组与单个应用相关的资源。
运行以下命令,在美国西部区域创建资源组:
Command prompt
az group create --name MyMicroserviceResources --location westus
如果要在上一个命令中使用不同的位置,则可以运行以下命令来查看你的帐户的可用区域,并选择一个离你更近的区域:
Command prompt
az account list-locations -o table
如果要对会话使用不同的订阅,则可以通过运行以下命令获取所有订阅的列表:
Command prompt
az account list --all
然后,可以运行以下命令为会话设置特定订阅:
Command prompt
az account set -s NAME_OR_ID
创建 AKS 群集
运行以下命令来在资源组中创建 AKS 群集:
此命令通常需要几分钟才能完成。
Command prompt
az aks create --resource-group MyMicroserviceResources --name MyMicroserviceCluster --node-count 1 --enable-addons http_application_routing --generate-ssh-keys
运行以下命令以下载要部署到 AKS 群集的凭据:
Command prompt
az aks get-credentials --resource-group MyMicroserviceResources --name MyMicroserviceCluster
部署到 Azure
返回到应用目录
由于在上一步中打开了新命令提示符,因此需要返回到创建服务的目录。
由于在上一步中打开了新终端,因此需要返回到创建服务的目录。
Command prompt
cd MyMicroservice
创建部署文件
AKS 工具使用 .yaml
文件定义如何部署容器。
使用此命令创建名为 deploy.yaml
的文件:
Command prompt
touch deploy.yaml
Command prompt
fsutil file createnew deploy.yaml 0
然后,可以手动或使用此命令在喜欢的文本编辑器中打开它:
Command prompt
open deploy.yaml
Command prompt
start deploy.yaml
在文本编辑器中将 deploy.yaml
的内容替换为以下内容,确保将 [YOUR DOCKER ID] 替换为实际 Docker ID。
deploy.yaml
---
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
中的设置部署微服务:
Command prompt
kubectl apply -f deploy.yaml
测试部署的服务
运行以下命令来查看已部署服务的详细信息:
Command prompt
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。