基于Dapr的 Azure 容器应用
微软在 Ignite 2021 大会上发布了预览版的Azure Container Apps,这是一个完全托管的无服务器容器运行时间,用于大规模构建和运行现代应用程序。从2021 年 11 月 2 日)起,Azure 容器应用程序可在公共预览中使用。虽在服务到达 GA 之前,Azure Container Apps 可能会发生变化。因此我们可以用来学习,不建议用于生产。
Azure Container Apps是什么?
- 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有一系列组件,我们必须了解并利用这些组件来构建企业级云本地应用程序。
- 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 页面来进行下面的实验
通过Portal 进行创建也失败了。
基于Dapr的 Azure 容器应用的更多相关文章
- 【原创】基于Docker的CaaS容器云平台架构设计及市场分析
基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...
- 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用
Dapr(分布式应用程序运行时)介绍 Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言 ...
- NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南
Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...
- dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器
# dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器 #环境centos 7.4 docker 18.03.0-ce # nuxus,创建maven本地源(可 ...
- 腾讯基于Kubernetes的企业级容器云平台GaiaStack (转)
GaiaStack介绍 GaiaStack是腾讯基于Kubernetes打造的容器私有云平台.这里有几个关键词: 腾讯:GaiaStack可服务腾讯内部所有BG的业务: Kubernetes:Gaia ...
- 基于反射启动Spring容器
基于反射启动Spring容器 package com.maple.test; import org.springframework.context.ApplicationContext; import ...
- 【OF框架】在Visual Studio中发布Docker镜像,推送镜像到Azure容器注册表
准备 拥有Azure账号,已经创建 Azure容器注册表,获得注册表地址.账号.密码 本地已经在Visual Studio登录Azure账号. 本地已经拥有Docker环境 注意:首次发布Docker ...
- 【Spring Framework】Spring入门教程(二)基于xml配置对象容器
基于xml配置对象容器--xml 标签说明 alias标签 作用:为已配置的bean设置别名 --applicationContext.xml配置文件 <?xml version="1 ...
- Spring系列9:基于注解的Spring容器配置
写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...
随机推荐
- nginx环境下提交表单一直301
之前网站一直正常的,现在提交表单一直301 原因: 前几天把网站http升为https协议,需要去掉连接 // 前内容 把 <form method ="post" acti ...
- dede编辑文章不更新时间的方法
在修改文章的时候,发现织梦DEDECMS5.7这个版本存在一个问题,修改文章的同时也修改了文章的发布时间,这个 功能可能有些人比较需要,但同时也有些站长朋友又不需要,因为我们编辑某个文章的时候,发现编 ...
- charles中Map、Rewrite、Breakpoints的区别
Charles提供了Map功能.Rewrite功能.Breakpoints功能,都可以达到修改服务器返回内容的目的,这三者的差异是: Map Map功能适合长期的将某些请求重定向到另一个网络地址或本地 ...
- iMAC_使用相关
MAC软件下载 https://www.macwk.com/ 这是网站是一个下载免费软件的网站,下载通过<天翼云盘>下载,这个天翼云盘下载的快 好用的软件推荐 腾讯柠檬(Tencent L ...
- P5212-SubString【LCT,SAM】
正题 题目链接:https://www.luogu.com.cn/problem/P5212 题目大意 开始一个字符串\(S\),有\(n\)次操作 在\(S\)末尾加入一个字符串 询问一个串在\(S ...
- 《HelloGitHub》第 66 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...
- asp.net core使用identity+jwt保护你的webapi(一)——identity基础配置
前言 用户模块几乎是每个系统必备的基础功能,如果每次开发一个新项目时都要做个用户模块,确实非常无聊.好在asp.net core给我们提供了Identity,使用起来也是比较方便,如果对用户这块需求不 ...
- 被校园网限速限流的日子 | 路由代理ipv6访问的操作手册
一 前 言 你是否还在为校园网的收费而小心翼翼?你是否还在为网速不够快而影响科研进程? 你是否还在为处理舍友关系而费经心思? 你是否还在为不能给舍友提供价值而苦恼? 那么,叶子团队或许能够帮助到你解决 ...
- 基于深度学习的建筑能耗预测01——Anaconda3-4.4.0+Tensorflow1.7+Python3.6+Pycharm安装
基于深度学习的建筑能耗预测-2021WS-02W 一,安装python及其环境的设置 (写python代码前,在电脑上安装相关必备的软件的过程称为环境搭建) · 完全可以先安装anaconda(会自带 ...
- 基于python深度学习的apk风险预测脚本
基于python深度学习的apk风险预测脚本 为了有效判断安卓apk有无恶意操作,利用python脚本,通过解包apk文件,对其中xml文件进行特征提取,通过机器学习构建模型,预测位置的apk包是否有 ...