ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

90DaysOfDevOps 第33天:Microsoft Azure 网络模型与 Azure 管理工具实战解析

90DaysOfDevOps 第33天:Microsoft Azure 网络模型与 Azure 管理工具实战解析 文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载本篇指南基于 90DaysOfDevOps 项目 2022/Days/day33.md 整理聚焦 Microsoft Azure 的两大核心主题Azure 网络模型虚拟网络 VNet、网络安全组 NSG、应用安全组 ASG、负载均衡与Azure 管理工具门户、PowerShell、VS Code、Cloud Shell、Azure CLI。你将掌握 Azure 与 AWS VPC 的关键差异、NSG/ASG 规则的优先级设计以及通过命令行与 ARM 模板自动化交付 Azure 资源的能力为后续实战动手环节打下基础。Microsoft Azure 网络安全组NSG原理示意图前端/后端子网分别绑定 NSG通过 ALLOW/DENY 规则控制入站与出站流量。Azure 门户主页包含服务搜索、资源创建入口、最近访问资源、订阅/资源组/仪表盘等核心导航。Azure 网络模型Azure 网络体系围绕虚拟网络Virtual Network, VNet构建是一切云端资源通信与安全隔离的基础。以下先厘清 VNet 的基本概念与特性。虚拟网络Virtual Networks虚拟网络是在 Azure 中创建的一种网络构造construct其核心特性如下一个虚拟网络拥有一个或多个分配的IP 地址范围IP ranges虚拟网络存在于订阅subscription内、隶属于某个区域region在虚拟网络内创建虚拟子网virtual subnets用于拆分网络地址范围虚拟机VM放置于虚拟子网中同一虚拟网络内的所有虚拟机可以互相通信每个虚拟网络最多支持65,536 个私有 IP即一个 /16 网段仅需为离开区域的出口egress流量付费即数据离开该区域时才计费同时支持IPv4 与 IPv6IPv6 可用于公网面向场景及虚拟网络内部。与 AWS VPC 的差异对照文档中将 Azure 虚拟网络比作 AWS VPC但二者存在若干显著差异理解这些差异对跨云迁移或双云架构非常关键无默认 VNetAWS 会默认创建 VPC而 Azure 中不存在默认虚拟网络你必须按需求创建第一个 VNet默认 NAT 上网Azure 中所有虚拟机默认通过 NAT 获得互联网访问没有 AWS 那样的 NAT Gateway 概念无公有/私有子网之分Azure 没有 AWS 中 Public/Private Subnet 的划分公网 IP 是独立资源公网 IP 可作为独立资源分配给虚拟网卡vNIC或负载均衡器ACL 归属不同虚拟网络和子网各自拥有自己的 ACL支持子网级委托subnet level delegation可用区与子网的关系Azure 中子网横跨可用区Availability Zones而 AWS 中每个可用区对应独立的子网。虚拟网络对等连接Virtual Network Peering虚拟网络对等连接VNet Peering可以将跨租户、跨区域的虚拟网络通过Azure 骨干网Azure backbone连接起来。需要注意对等连接默认不传递not transitive若需传递性可在Hub 虚拟网络中使用 Azure Firewall实现使用网关传递gateway transit可以让已对等的虚拟网络访问与之相连的外部网络例如通过ExpressRoute 连接本地On-Premises数据中心。访问控制网络安全组与应用安全组网络安全组Network Security Groups, NSGsAzure 利用网络安全组NSG实现流量访问控制NSG 是有状态stateful的可创建规则rules并将其分配assigned到网络安全组NSG 可应用于子网或虚拟机当 NSG 应用于子网时仍然是在虚拟机网卡NIC层面强制执行它并非边界Edge设备。NSG 的规则组织与优先级机制规则组合在同一个网络安全组中基于优先级priority实现灵活的配置优先级数字越小优先级越高Lower priority number means higher priority多数规则逻辑基于IP 地址构建部分场景也可使用标签tags与服务标签service tags例如AzureLoadBalancer、Internet。下表是文档给出的典型入站规则组合示例DescriptionPrioritySource AddressSource PortDestination AddressDestination PortActionInbound 4431005***443AllowILB1010Azure LoadBalancer**10000AllowDeny All Inbound4000****DENY可以看到优先级 1005 允许任意来源访问 443 端口优先级 1010 放行来自 Azure 负载均衡器服务标签AzureLoadBalancer访问 10000 端口的流量优先级 4000 的拒绝所有入站规则兜底。规则按优先级从低到高依次匹配一旦命中即停止评估因此高优先级小数字的 Allow 规则可以先行放行最后由 DENY 规则形成安全底线。应用安全组Application Security Groups, ASGsNSG 规则基于 IP 地址范围编写在环境持续增长的场景下维护成本较高应用安全组ASG正是为缓解这一问题而生ASG 允许为不同应用角色定义真实名称monikers例如 Webservers、DB servers、WebApp1 等虚拟机网卡NIC作为一个或多个 ASG 的成员ASG 可以直接用在 NSG 的规则中作为源或目的地从而以业务语义控制通信流向ASG 规则仍然可以使用 NSG 的服务标签service tags等特性。下表是文档给出的基于 ASG 的典型规则示例ActionNameSourceDestinationPortAllowAllowInternettoWebInternetWebServers443(HTTPS)AllowAllowWebToAppWebServersAppServers443(HTTPS)AllowAllowAppToDBAppServersDbServers1443 (MSSQL)DenyDenyAllinboundAnyAnyAny这套规则清晰地表达了一条三层应用链路Internet → Web 服务器443→ 应用服务器443→ 数据库服务器MSSQL 1443最后以 Deny 兜底。相比维护一长串 IP 白名单ASG 让规则具备可读性与可维护性。仓库中的 NSG 实现佐证在 90DaysOfDevOps 仓库的云实验模板中可以找到 NSG 规则的落地写法。例如 Mod06_90DaysOfDevOps-vms-loop-template.json 中通过Microsoft.Network/networkSecurityGroups资源定义了两条入站规则default-allow-rdp优先级 1000协议Tcp源*目标端口3389动作Allow方向Inbounddefault-allow-http优先级 1100协议Tcp源*目标端口80动作Allow方向Inbound。该模板还通过copy循环创建了 3 个 NSG、4 台虚拟机与多个 VNet90day-vm-vnet01/2/3网段前缀10.60/10.62/10.63与本文前述的低优先级数字 高优先级规则语义完全一致可作为真实可运行的参考实现。负载均衡Load BalancingMicrosoft Azure 提供两种第一方负载均衡解决方案Azure Marketplace 中也存在第三方方案两者都可面向外部公网或内部内网端点提供服务Load Balancer第 4 层 / L4支持基于哈希的流量分发hash-based distribution与端口转发port-forwardingApplication Gateway第 7 层 / L7应用网关支持SSL 卸载SSL offload、基于 Cookie 的会话保持cookie-based session affinity以及基于 URL 的内容路由URL-based content routing。此外Application Gateway 可选配 Web Application FirewallWAF组件为 Web 应用提供应用层防护能力。Azure 管理工具90DaysOfDevOps 前面的理论部分大多围绕 Azure 门户展开但若想践行 DevOps 文化与流程大量任务尤其是资源供给 provisioning会通过API 或命令行工具完成。下面逐一梳理可用的 Azure 管理工具。Azure Portal门户Microsoft Azure 门户是一个基于 Web 的控制台是命令行工具之外的另一选择可在门户中管理订阅可构建、管理与监控从简单 Web 应用到复杂云部署的一切门户中随处可见面包屑导航breadcrumbs如前所述JSON 是支撑所有 Azure 资源的底层语言你可能先在门户中理解功能、服务与界面再理解其背后的 JSON将其纳入自动化工作流。此外还存在Azure Preview 门户可用于查看与测试即将上线的新服务与增强功能。PowerShell 与 Azure PowerShell进入 Azure PowerShell 之前先认识 PowerShell 本身PowerShell 是一个任务自动化与配置管理框架同时是命令行 Shell 与脚本语言可类比此前 Linux 章节中讲过的 shell 脚本。PowerShell 最初主要存在于 Windows 操作系统如今已跨平台cross-platform。Azure PowerShell是一组 cmdlet可直接从 PowerShell 命令行管理 Azure 资源。典型用法使用Connect-AzAccount命令连接到你的订阅登录后会触发交互式认证随后可以查找与 Azure 虚拟机相关的特定命令例如Get-AzVM、New-AzVM、New-AzResourceGroupDeployment等深入学习这门 PowerShell 编程语言。仓库中的 Azure PowerShell 实战ARM 模板部署90DaysOfDevOps 仓库中 01VirtualNetworking/Module4_90DaysOfDevOps.ps1 给出了完整的部署脚本$rgName 90DaysOfDevOps New-AzResourceGroupDeployment -ResourceGroupName $rgName -TemplateFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\01VirtualNetworking\Mod04_90DaysOfDevOps-vms-loop-template.json -TemplateParameterFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\01VirtualNetworking\Mod04_90DaysOfDevOps-vms-loop-parameters.json核心要点New-AzResourceGroupDeployment将ARM 模板JSON部署到指定资源组-TemplateFile指向模板文件-TemplateParameterFile指向参数文件对应模板 Mod04_90DaysOfDevOps-vms-loop-template.json 定义了一个地址空间为10.40.0.0/22的虚拟网络内含两个子网subnet010.40.0.0/24与subnet110.40.1.0/24并通过copy循环创建多台 Windows Server 2019 虚拟机默认Standard_D2s_v3网卡privateIPAllocationMethod为Dynamic参数文件 Mod04_90DaysOfDevOps-vms-loop-parameters.json 提供了vmSize、adminUsername、adminPassword等输入值。02TrafficManagement/Mod06_90DaysOfDevOps.ps1 则展示了在部署之后通过 PowerShell遍历 VM 并安装扩展的自动化写法$location (Get-AzResourceGroup -ResourceGroupName $rgName).location $vmNames (Get-AzVM -ResourceGroupName $rgName).Name foreach ($vmName in $vmNames) { Set-AzVMExtension -ResourceGroupName $rgName -Location $location -VMName $vmName -Name networkWatcherAgent -Publisher Microsoft.Azure.NetworkWatcher -Type NetworkWatcherAgentWindows -TypeHandlerVersion 1.4 }这段脚本用Get-AzVM枚举资源组内所有 VM再循环调用Set-AzVMExtension安装 Network Watcher Agent体现了代码即基础设施的典型形态。Visual Studio CodeVisual Studio CodeVS Code是微软出品的免费源代码编辑器支持 Windows、Linux 与 macOS。它内置了大量用于交互 Microsoft Azure 及其服务的集成与工具如 Azure 扩展可以直接在编辑器中完成登录、创建资源、部署代码等操作是开发与运维人员的常用 IDE 选择。Cloud ShellAzure Cloud Shell 是一个交互式、已认证、浏览器可访问的 Azure 资源管理 Shell允许你选择最适合工作方式的 Shell 体验Bash 或 PowerShell。使用要点首次启动时可在 Bash 与 PowerShell 之间选择使用 Cloud Shell 需要在订阅中提供一点存储选择 Cloud Shell 时Azure 会临时拉起一台机器这些机器是临时的但你的文件会通过磁盘镜像与挂载的文件共享两种方式持久化。文档归纳的 Cloud Shell 行为特征如下Cloud Shell 运行在按会话、按用户提供的临时主机上无交互活动20 分钟后超时需要挂载 Azure 文件共享Bash 与 PowerShell 使用同一个 Azure 文件共享每个用户账户分配一台机器$HOME通过文件共享中持有的5-GB 镜像持久化Bash 中权限按普通 Linux 用户设置。Azure CLIAzure CLI 可安装在 Windows、Linux 与 macOS 上。安装后输入az再跟上相应命令即可创建、更新、删除与查看Azure 资源。关于 Azure PowerShell 与 Azure CLI 的差异文档给出如下理解视角Azure PowerShell是加入 Windows PowerShell 或 PowerShell Core在其他操作系统上也可用但并非所有系统均支持的模块Azure CLI是跨平台的命令行程序连接 Azure 并执行命令两者的语法不同但能完成非常相似的任务。例如创建虚拟机PowerShell 使用New-AzVMcmdletAzure CLI 使用az vm create。二者特性对照工具性质运行环境Azure CLI跨平台命令行接口可安装于 Windows/macOS/Linux可在 Windows PowerShell、Cmd、Bash 及其他 Unix shell 中运行Azure PowerShell跨平台 PowerShell 模块可运行于 Windows/macOS/Linux需要 Windows PowerShell 或 PowerShell选型建议如果环境中无法使用 PowerShell但可以使用bash原文为 .md 笔误实指 bash 类 shell那么Azure CLI就是你的选择。关键结论选择正确的工具Azure 本身运行在自动化之上——你在门户中执行的每一次操作背后都对应着一段被执行的代码用于读取、创建、修改或删除资源。因此在 DevOps 流程中应尽早掌握命令行/API 驱动的方式门户更适合用于理解功能与验证结果自动化交付则应交给 PowerShell 或 Azure CLI 配合 ARM 模板完成。下一步完成本篇的网络模型与管理工具梳理后下一步将把此前积累的全部理论投入实战在 Azure 中创建场景并动手操作对应 第 34 天 的内容。参考资料Hybrid Cloud 与 MultiCloud 公开课程资料Microsoft Azure Fundamentals 公开课程资料更多云基础学习资料见仓库 Resources.md赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐terraform-provider-aws 中 aws_connect_prompt 数据源检索 Amazon Connect 提示音Prompt信息terraform provider aws 中 aws_connect_prompt 数据源检索 Amazon Connect 提示音Prompt信息文档/教程kOps 中的 Azure 网络管理armnetwork Go SDK 模块详解与实战kOps 中的 Azure 网络管理armnetwork Go SDK 模块详解与实战 导读 本文围绕 kops 仓库中 vendored 的 Azure 官云原生集群管理运维IaCMicrosoft Azure 概念与 Azure CLI 命令实战指南DevOps-GuideMicrosoft Azure 概念与 Azure CLI 命令实战指南DevOps Guide 本指南以 Cloud_providers/Azure/az云原生CI/CD运维上一篇StarRocks seconds_diff 函数详解秒级时间差计算与底层实现原理下一篇把USB相机接进Android手把手打通UVC摄像头检测、预览与录像创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表