基于Dapr的 Azure 容器应用

微软在 Ignite 2021 大会上发布了预览版的Azure Container Apps,这是一个完全托管的无服务器容器运行时间,用于大规模构建和运行现代应用程序。从2021 年 11 月 2 日)起,Azure 容器应用程序可在公共预览中使用。虽在服务到达 GA 之前,Azure Container Apps 可能会发生变化。因此我们可以用来学习,不建议用于生产。


Azure Container Apps是什么?

image

kubernetes 是目前最为强大的应用程序平台调度器,然而他很复杂,有着陡峭的学习曲线,云原生计算基金会(CNCF)联合Linux基金会推出了皆在考察相关从业者对Kubernetes的开发知识了解程度的认证考试Certified Kubernetes Application Developer (CKAD),通过CKAD考试后,持证者即被认可能够为Kubernetes设计、构建、配置和部署云原生应用,在Kubernetes中能够定义应用程序资源,使用核心功能构建、监控和诊断可伸缩的应用程序。开发人员要通过CKAD考试的陡峭学习曲线,然后才能充分利用kubernetes提供的功能,Azure Container Apps 把这里的陡峭学习曲线抹平了。

Azure Container Apps就是kubernetes之上的抽象层,是一种运行容器化应用程序的完全托管的服务。它让你专注于构建应用程序,而不是管理配置kubernetes。

利用Kubernetes Event-driven Autoscaling (KEDA) 缩放Container Apps,无论你是想根据CPU、内存等资源对应用缩放,还是基于消息队列的长度对特定的负载进行缩放。

利用分布式应用运行时 Dapr 轻松构建和连接微服务。 Dapr允许你构建松耦合的微服务应用程序,而不是构建一个分布式单体应用,在Azure Container Apps里我,们利用 Dapr 及其组件构建具有弹性、可扩展性和松耦合的应用程序

利用Envoy proxy 路由外部进来的HTTP请求流量,Envoy就有强大的网络代理功能,我们基本不需要配置就可以实现强大的功能,比如金丝雀发布

您可以随时可以从 Azure Container Apps 升级到更自主的 Azure Kubernetes 服务 (AKS),并释放kubernetes 的全部力量。


Azure Container Apps的核心组件


Azure Container Apps有一系列组件,我们必须了解并利用这些组件来构建企业级云本地应用程序。

image

Container:我们可以在Azure Container Apps里运行容器,这些容器和k8s 一样可以从各种容器仓库中拉取容器镜像,和k8s 一样,Azure Container Apps 也是用Pod 作为运行容器的最小单位,我们可以在Pods里定义多个容器,这个k8s 上通常的SideCar 模式就是这样的,Pod的所有容器共享硬盘和网络资源。目前 Azure Container Apps只支持Linux 容器。

Revisions:Revision 表示Pod的不可变快照,至少有一个Revision,这是初始部署的时候自动创建的。通常我们会在某个时间点对Pod 做多次的Revision,以实现金丝雀发布和A/B测试.

Container Apps: 容器应用程序包括至少一个Revision 。每个容器应用程序都可以进行主动和非活动Revision 。但是,它至少有一个主动Revision 。如果不再需要Revision ,我们可以停用Revision 。(我们还可以重新激活非活动Revision )

Environment: Environment 至少有一个容器应用程序组成。每个环境是一个安全边界,这意味着其所有容器应用程序都部署到专用的 Azure 虚拟网络中。所有由Environment 内部容器产生的日志都发送到专用的 Azure Log Analytics 。


下面我们就来玩一下Azure Container App 体验一下,部署一个简单的容器到Azure容器应用程序,具体文档参见 https://docs.microsoft.com/zh-cn/azure/container-apps/get-started?tabs=bash 。


需要注意的是当前Azure Container App 只在 北欧(northeurope) 和加拿大中部 (canadacentral)这两个区域可用


首先,我们必须为 Azure CLI 安装 Azure Container App 扩展。

az extension add \
   --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl


设置以下环境变量:

RESOURCE_GROUP="my-containerapps"
LOCATION="canadacentral"
LOG_ANALYTICS_WORKSPACE="containerapps-logs"
CONTAINERAPPS_ENVIRONMENT="containerapps-env"



定义这些变量后,可以创建一个资源组来组织与新容器应用相关的服务。

az group create \
   --name $RESOURCE_GROUP \
   --location "$LOCATION"


升级 CLI 并提供新的资源组后,可以创建容器应用环境并部署容器应用。

创建环境

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzgfyy.html