Qian Yun

.NET Engineer & Cloud Navite Eng

All Posts in 2021


Azure Bicep 开发利器

思路浅析   有用过 IAC 工具的同学们都知道。在 Azure ARM 的 JSON 中必须在模板的相应部分声明所有参数、变量和输出,有一定的限制。   本次实验,我们可以利用 Azure Bicep 灵巧的部署Azure资源。它比 JSON 语法更简单,不需要写太多的参数设置。Bicep 是一种用于声明式部署Azure资源的领域特定语言。它的目标是通过更清晰的语法、改进的类型安全性、以及对模块化和代码重用的更好支持,彻底简化编写体验。   Bicep 其实是对 ARM 模板的透明抽象,Bicep 代码被解析成标准的 JSON 文件,它有效地将 ARM模板 视为一种中间语言(IL)。Bicep 不是编写应用程序的通用编程语言,而是声明Azure资源和资源属性的语言。简单来说,它是用来开发 Azure ARM 模板的。   大致思路是这样的,首先我们需要在开发环境中安装 …


使用Azure Congnitive Services 技术制作AI故事机

一,引言 前一段时间有幸参加了微软MVP的AI方面的学习挑战赛,对于AI 这个新的领域的技术瞬间勾起了我的学习兴趣。于是就在5.1 期间开始了我的 MS Learn about AI 之旅。 最近几年,不管是国内还是国外,AI都是一个异常火热的词。比如现在的自动驾驶技术,其实就是依赖 “识别”,“判断”,“人机交互”等技术。识别:就类似我们的研究,通过图像,物体识别技术车辆周围环境;“判断”:这个类似我们的大脑,也是最重要的技术,通过AI 算法对识别到的物体、图像进行判定,并且可以通过复杂计算场景的训练从而使这颗AI 大脑变得更加聪明;“人机交换”:AI 通过跟我们的不局限与 语音,文字,表情,动作等做出AI 判断,执行预设指令,类似钢铁侠和 …


Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源

一,引言      上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中。今天我们继续讲解 Azure DevOps 的 Pipeline,利用 Release Pipeline 实现 Terraform for AWS Infrastructure Resources 自动部署,我们的目标是将 images 部署到 AWS ECS 上。 …

AWS

Azure DevOps(一)利用Azure DevOps Pipeline 构建应用程序镜像到AWS ECR

一,引言 最近项目上让开始学习AWS,作为一名合格的开发人员,当然也是学会利用Azure DevOps Pipeline 将应用程序部署到 AWS ECS(完全托管的容器编排服务)。我们要学会将应用程序部署到多云的环境上,技多不压身!!!! 首先肯定的是,我们必须先依赖Azure DevOps 进行应用程序构建 docker images 。并且将 dockre image 推送到 AWS ECR(完全托管的容器注册表) 二,正文 1,创建AWS ECR 容器注册表 登陆到AWS 控制台后,搜索 ECR,在东京区 “ap-northeast-1” 创建私有镜像仓库 点击 “Create repository” 创建一个新的镜像仓库 输入相关参数 Visibility settings:“ …

Azure

Azure Storage 利用 azCopy 复制迁移数据

一,引言 前两天遇到了Azure Blob Storage 需要迁移到另外的一个 Azure Blob Storage 中。手动下载、上传已经无法满足了,得另寻一种方式了 AzCopy。Azure 为我们提供了 AzCopy,它其实是一个命令行实用工具,可用于向/从存储账户复制 Blob 或文件。 使用 AzCopy 可在文件系统和存储帐户之间或在存储帐户之间复制数据。 AzCopy 可以用来将数据从本地复制到存储帐户。好的,废话不多说了。那么我们就正式开始今天讲解的内容了。 二,正文 1,设置datasource ----- Azure Blob Storage 我们提前准备好开发环境的 Storage Account ----- "cnbateblogwebdev" 选择 “Data storage =》Container”,点击 & …

Azure

另类的曲线方式定时Start up/Shut down VM 的解决方案

一,引言 最近看到一位小兄弟在为了做 Azure 云虚拟机的自动关机开启 在群里求助,最后也不知道结果咋样了。 至于他提到的利用 Automation Account 我是没有接触过,并且也没有看资料学习,所以不知道怎么使用 Automation Account 做到定时的开关机。但是值得庆幸是的,我会一些 PoerShell 脚本,知道 PowerShell 可以做到利用脚本开关机;并且在前一段时间稍微熟悉了 Azure Function App,知道 Azure Function App 的模板中是有 TimeTrigger。一个可做到开关机,一个可做到定时执行作业。奇怪的组合就这样诞生了。今天我们就额外为这位网友分享一篇另类的解决方案。Let's go 二,正文 1,不可缺少的主角----- Azure virtual machine 登陆到 Azure …

Azure

Azure CDN 为静态网站创建内容分发网络

一,引言 最近刚刚接触 Edi.Wang 的 Moonglade 博客系统,正好这套系统中有使用到 Azure CND (内容分发网络),那就学习学习。那么今天就尝试利用 Azure CDN 来发布静态网站。当然了,我们可以选择Azure Storage Account 作为我们演示的静态网站的载体。 什么是 Azure CDN? Azure CDN(内容分发网络):CDN 是服务器的分布式网络,可以有效的将Web内容传递给我们,同时CDN 可以将缓存的内容存储在记录我们比较近的POP(入网点位置)位置的边缘服务器,以便最大成都降低网络延迟。Azure 内容分发网络 (CDN) 可帮助减少延迟并提升高带宽内容的性能。 二,正文 1,部署静态网站 登陆到 Azure Portal 上,点击 “create a resource”,搜索 & …


Welcome to Moonglade

Moonglade is the new blog system for https://edi.wang. It is a complete rewrite of the old system using .NET 5 and runs on Microsoft Azure.

.NET Core

Azure DevOps 跨账号连接 Azure 服务

一,引言   由于新申请的 Azure DevOps 账号中的私有项目不在享受托管代理提供的1800分钟的免费时间,又不想花钱付费,那我们只能另想版本解决没有并行作业的问题。 -------------------- 我是分割线 -------------------- 新组织中的私有项目无法获得1800分钟的免费试用期限 于是,我们只能利用旧的Azure DevOps 连接到新的 Azure 账号的订阅上。通过我的调查。Azure DevOps 和 Azure 的关联是可以通过 Azure DevOps 上的手动管理 Service connections。既然如此,我们尝试利用手动管理类型为 “Azure Resource Manager” 的服务连接。 二,正文 1,创建可用的Service Principal并设置其权限 1.1,创建服务主 …


Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序

一,引言   起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像。当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持安装 Docker Desktop。这下看来只能利用Azure DevOps 自动创建 Docker 镜像了,学以致用嘛! 二,正文 1,创建 Azure Container Registry 服务 前置条件,我们得先手动创建 镜像存储库。我们登录到 Azure Portal 上,点击 “Create a resource”,搜索 “Container Registry” 输入相关参数 Registry name:“appconfig” Location:‘Asia“ …


Azure Front Door(三)启用 Web Application Firewall (WAF) 保护Web 应用程序,拒绝恶意攻击

一,引言   上一篇我们利用 Azure Front Door 为后端 VM 部署提供流量的负载均衡。因为是演示实例,也没有实际的后端实例代码,只有一个 “Index.html” 的静态页面,那么我们今天直接在我们项目的根目录放置日志文件,如下图所示 而且我们通过 Azure Front Door frontend host 直接就可以访问到项目的根目录的文件了 这样的话就产生了很多问题,比方说我们的项目程序中没有处理根目录的资源,那么有可能导致其他任何人通过Azure Front Door frontend host 连接加上根目录资源文件的名称就可以直接获取到服务器跟目录的文件,这样是很危险的。同时,我们实际的项目代码中也要防止此类的攻击,例如 “SQL注入”、“跨站脚本攻击”等。这个时候,我们就需要 …

Azure

Azure Cost alerts 费用成本分析

一,引言   依稀记得在一月初,我们在 Azure 上做成了一个 费用警报的监控,果不其然,前两天 Azure 给我发了两封封 Azure 预警警报的邮件,提醒我的预算的总费用超过了设置的通知阈值 “10”,“10”,“18” 那我们今天就聊一聊 Azure 上的账单相关的信息 -------------------- 我是分割线 -------------------- 1,Azure Cost alerts 花费警报 2,Azure Cost alerts 费用成本分析 二,正文   在 Azure Portal 上有 "成本管理+计费" 页面,可以帮助我们了解 Azure 计费,监视控制服务的费用支出。弹出左侧菜单,点击 “Cost Management + Billing& …

Azure

Azure Front Door(二)对后端 VM 进行负载均衡

一,引言   上一篇我们讲到通过 Azure Front Door 为我们的 Azure App Service 提供流量转发,而整个 Azure Front Door 在添加后端池的时候可选的后端类型是支持多种Azure Service,如下图所示: 目标类型可为: 1,App Service(应用服务) 2,Cloud Service(云服务) 3,Storage(存储) 4,Storage(存储空间(经典)) 5,Application Gateway(应用程序网关) 6,API Management(API 管理) 7,Public IP Address(公共 IP 地址) 8,Traffic Manager(流量管理器) 9,Customer host(自定义主机)   我们今天要演示的是目标类型为 “Public IP Address& …

Azure

Azure Front Door(一)为基于.net core 开发的Azure App Service 提供流量转发

一,引言   之前我们讲解到使用 Azure Traffic Manager、Azure LoadBalancer、Azure Application Gateway,作为项目的负载均衡器来分发流量,转发访问请求。尤其之前在介绍到 Azure Traffic Manager是一种具有基于DNS的流量负载均衡器,可以在全球区域内以最佳方式分发流量,同时提高高可用性和响应性。流量管理器的配置路由方式可以是 “Geographic”(基于地理位置的路由策略),也就是在不同的地址位置上部署服务器以就近相应用户的请求。   今天我们尝试通过新的Azure Resource-----Azure Front Door,使用 Front Door,可将全球使用者应用程序和企业应用程序转换为可靠、高性能且个性化的新型应用程序,其内容可以通过 Azure 向全球受众提供。 …

Azure

AWS Switching to an IAM role (AWS CLI)

一,引言   今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI)。假设我们使用两个 AWS 账户,A账号,B账号。我们希望允许 A 账号用于 "iam-role-iam-readonly" 的 AWS IAM Role 的只读权限。而 EC2 实例却位于 B 账户中。该实例包含 "iam-role-ec2" 实例配置文件角色,我们希望 “iam-role-ec2” 允许跨账户 A 中的 IAM Role 的只读权限。所有需要设置 “iam-role-ec2” 的切换角色权限,以及设置 “iam-role-iam-readonly” 的授权实体。接下啦,就正式开始我们今天的内容。 二,正文 1,添加账户A “iam-role-iam-readonly& …


Azure Functions(二)集成 Azure Blob Storage 存储文件

一,引言   上一篇文章有介绍到什么是 SeverLess ,ServerLess 都有哪些特点,以及多云环境下 ServerLess 都有哪些解决方案。在这众多解决方案中就包括 Function App(Azure 下的ServerLess),今天我们结合之前所讲的 Azure Functions 以及 Azure Blob Storage 的相关知识,从实践出发,再次回顾之前的知识点,以下是构想的基础资源架构图 --------------------Azure Functions 系列-------------------- 1,使用 Visual Studio 开发、测试和部署 Azure Functions(一)开发 2,使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署 3,使用Azure Functions 在 …

Azure

Azure Functions(一)什么是 ServerLess

一,引言   自去年4月份分享过3篇关于 Azure Functions 的文章之后,就一直没有再将 Azure Functions 相关的内容了。今天再次开始将 Azure Functions 相关的课主要是因为有小伙伴发私信给我让我再详细的介绍一下 ServiceLens(无服务器应用计算)、Azure Functions 相关的知识,并且希望能结合实际项目分享一些示例代码。那就从今天开始,我们也写一个关于 Azure Funtions 的系列文章。 --------------------Azure Functions 系列-------------------- 1,使用 Visual Studio 开发、测试和部署 Azure Functions(一)开发 2,使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署 3,使用 …


Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

一,引言   上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我们也知道整个 Infra 架构已经实现了自动化部署,而 整个项目Web应该却没事实现CI/CD,那么我们今天继续关注 Azure DevOps。 --------------------Azure Terraform 系列-------------------- 1,Azure Terraform(一)入门简介 2,Azure Terraform(二)语法详解 3,Azure Terraform(三)部署 Web 应用程序 4,Azure Terraform(四)状态文件存储 5,Azure Terraform(五)利用 …

Azure Terraform

Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

一,引言   之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中。然后还有讲到 Azure Resource Common Module 的 TF 代码的封装。之前还在Azure Terraform 第四节讲到利用 Azure Storage 远程状态文件存储。那么今天我们尝试将封装过 Common Module 的 TF 代码,结合 TF 状态文件远端存储,实现自动化部署基础资源 --------------------Azure Terraform 系列-------------------- 1,Azure Terraform(一)入门简介 2,Azure Terraform(二)语法详解 3,Azure Terraform(三)部署 …

Azure Terraform

Azure Terraform(六)Common Module

一,引言   之前我们在使用 Terraform 构筑一下 Azure 云资源的时候,直接将所以需要创建的资源全面写在 main.tf 这个文件中,这样写主要是为了演示使用,但是在实际的 Terraform 代码的整个项目代码结构是需要封装具体的 “Module”,这里提到了 ”Module“ 也就是新的概念 “Common Module”。“Common Mudule” 其实对于开发来说,其实就是封装的 ”类库“,通过传递不同的参数,调用方法,来实现不同的返回值;同理,terraform 的 common moudle 也是一样的。 以下是 Terraform 项目结构 --------------------Azure Terraform 系列------- …

Azure

Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

一,引言   上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构。通过 Terraform 部署执行计划,将整个 Azure Traffic Manager 结合 Azure Web App 的架构快速部署到云上。然后再将我们的示例项目代码部署到对应的不同区域的Azure Web 应用程序上。最后Azure Traffic Manager 将不同地理位置的用户的访问请求转发到后端的 Azure Web 应用上。 这时,又有人提问了,现在都流行 DevOps ,整个应用层面的项目代码都可以实现 CI/CD 整个过程,那这些基础设施代码可以实现 CI/CD 吗? 答案是肯定的,今天要演示的正如文章标题那样,利用 Azure DevOps 快速实现自动化部署基础设施资源。 开始内容之前,我们先看看整个 pipeline 过程 --- …

Azure Terraform

Azure Terraform(四)状态文件存储

一,引言   我们都知道在执行部署计划之后,当前目录中就产生了名叫 “terraform.states” 的 Terraform 的状态文件,该文件中记录了已部署资源的状态。默认情况下,在执行部署计划后,Terraform 的状态文件会存储在本地,但是这样往往就造成一些弊端: (1)不适用团队之间协助,就好比在数据库中对同一条数据进行操作时,就会引起异常 (2)状态文件中包含一些机密信息,会造成一定的机密泄露 (3)如果不慎将本地的状态文件删除掉的话,已执行部署计划的资源的管理将很难在通过 Terraform 进行管理 所以,Terraform 是支持在远端存储状态文件,也就是在 Azure Storage Account 中存储远端状态文件,Terraform 状态的存储是由一个称之为Backend的组件决定的,local state使用的是local …

Azure

Azure Terraform(三)部署 Web 应用程序

一,引言   上一节关于 Terraform 的文章讲到 Terraform 使用到的一些语法,以及通过演示使用 Terraform 在Azure 上部署资源组,极大的方便了基础设施实施人员,也提高了基础设施团队的工作效率,同时可以利用 IAC 工具来管理云基础设施资源。   这个时候就有人问到,既然 Terraform 这么强大,那可不可以自动化部署其他Azure 资源,比方我们公司的项目就部署在Azure Web 应用上,用户访问的流量通过 Traffic Manager(流量配置分发管理器) 将流量分发到后端的 Web 应用程序,基础设施架构图如下图所示: 那我们今天就已当前基础设施架构图为模板,通过Terraform 实现基础设施资源的自动化部署 --------------------Azure Terraform 系列-------------------- 1 …

Azure

Azure Cost alerts 花费警报

一,引言   2020已完结,迎来了2021年新的开始。Allen 在新的一年中继续分享自己所学习到的 Azure 技术。本篇文章的内容也不多,也是一个网友遇到的一个问题----- Azure 上有没有花费警报的功能? 答案是肯定的,通过 Cost alerts 设置花费成本警报监视使用情况,下表显示了各种 Microsoft 产品/服务支持的警报功能 报警类型 企业协议 微软客户协议 即用即付 预算 支持 支持 支持 额度 支持 不支持 不支持 部门支出配额 支持 不支持 不支持 目前,我自己的账号正是 Pay As You Go(即用即付),所有我就就演示以下如何设置 预算花费警报 -------------------- 我是分割线 -------------------- 1, …

Azure

Azure Service Bus(三)在 .NET Core Web 应用程序发送ServiceBus Queue

一,引言   在之前上一篇讲解到 Azure ServiceBus Queue 中,我们实地的演示了在控制台中如何操作ServiceBus Queue ,使用 Azure.Messgae.Service 的依赖包完成 Message 的接收/发送,今天我们继续探究 ServiceBus Queue,如何利用 Microsoft.Azure.ServiceBus 以来完成消息的发送。 --------------------我是分割线-------------------- Azure ServiceBus 系列: 1,Azure Service Bus(一)入门简介 2,Azure Service Bus(二)在NET Core 控制台中如何操作 ServiceBus Queue 3,Azure Service Bus(三)在 .NET Core Web 应用程序发送 …

Azure