ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Dapr的 Azure 容器应用

2021-11-04 17:04:26  阅读:202  来源: 互联网

标签:容器 Container -- Apps 应用程序 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 并提供新的资源组后,可以创建容器应用环境并部署容器应用。

创建环境

Azure 容器应用中的环境围绕一组容器应用创建安全边界。 部署到相同环境的容器应用部署在同一虚拟网络中,并将日志写入同一个 Log Analytics 工作区。

Azure Log Analytics 用于监视创建容器应用环境时所需的容器应用。

使用以下命令创建新的 Log Analytics 工作区:

az monitor log-analytics workspace create \
   --resource-group $RESOURCE_GROUP \
   --workspace-name $LOG_ANALYTICS_WORKSPACE


接下来,检索 Log Analytics 客户端 ID 和客户端密码。请确保单独运行每个查询,以便有足够的时间完成请求。

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az monitor log-analytics workspace show --query customerId -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`


LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET=`az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`


单个容器应用部署到 Azure 容器应用环境。 若要创建环境,请运行以下命令:


az containerapp env create \
   --name $CONTAINERAPPS_ENVIRONMENT \
   --resource-group $RESOURCE_GROUP \
   --logs-workspace-id $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
   --logs-workspace-key $LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET \


执行到这里的时候报错了

Command group 'containerapp env' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
MissingRegistrationForLocation: The subscription is not registered for the resource type 'kubeEnvironments' in the location 'canadacentral'. Please re-register for this provider in order to have access to this location.


后面我们用Azure的Portal 页面来进行下面的实验


image

image

image

image


通过Portal 进行创建也失败了。

标签:容器,Container,--,Apps,应用程序,Dapr,Azure
来源: https://www.cnblogs.com/shanyou/p/15509042.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有