通过 Azure Application Services 部署到 Azure Arc(第一部分):Azure Application Services 入门





5.00/5 (2投票s)
在本文中,我们将回顾如何将 Azure Arc 连接到 Google Cloud 上的 Kubernetes。
云原生计算基金会 (CNCF) 指出,Kubernetes 的采用在全球范围内不断增长,并已成为主流。随着这种增长,组织将其集群分散到本地服务和多个云提供商(如 Google Cloud、Amazon Web Services 和 RedHat)的可能性也随之增加。
Azure Arc 启用的 Kubernetes 为所有这些 Kubernetes 环境提供了集中管理,而无需我们将它们迁移到单一云服务提供商或托管在 Azure 上。Azure Arc 提供了 Azure 托管的所有功能,例如 Azure Monitor,它允许我们收集指标和日志、运行分析查询,并接收从磁盘空间使用情况到可能安全漏洞的任何警报。
在本文中,我们将仔细研究如何通过连接现有 Kubernetes 集群来实现跨任何位置托管 Azure 应用服务 — 以及它们所依赖的数据服务。这包括任何云原生计算基金会 (CNCF) 认证的 Kubernetes 集群以及 Azure 自有的 Kubernetes 产品,其中有extensive list of 经过验证的发行版。
引入自定义位置的概念
每当我们预配新的 Azure 资源时,都必须指定一个位置。然而,由于 Azure Arc 允许我们在不与 Azure 位置对齐的其他云提供商上托管我们的现成应用程序,因此我们需要自定义位置。
从 Azure 的角度来看,自定义位置只是另一种资源类型。从概念上讲,它为 Azure 提供了一种以与 Azure 区域中的原生资源相同的方式来管理托管在另一个云上的资源的方法。
这种方法创建了与 Azure Arc 启用的 Kubernetes 集群中的命名空间的一对一映射,抽象了底层跨云基础结构。这为开发人员和管理员提供了一个开发资源和部署的目标。
尽管它托管在 Azure 外部,但我们可以将集群集成到 Application Insights 进行监控
托管在 Azure 外部的原生 Azure 服务
无论是托管在其他云还是本地,将 Kubernetes 环境连接到 Azure Arc 都可以让我们访问支持不断增长的原生 Azure 服务列表的基础结构。我们只需将部署指向自定义位置,它们就会部署到我们的 Kubernetes 集群。
在撰写本文时,支持的服务包括
- 事件网格(预览版)
- 应用服务,包括 Web 应用、函数应用、逻辑应用(我们将在本系列的后续文章中更仔细地研究函数和 Web 应用示例)
- 数据服务,包括 Azure SQL 托管实例和 PostgreSQL Hyperscale
这非常重要。这意味着我们可以将 Azure Function App 部署到我们内部管理的本地 Kubernetes 集群!
这些服务无缝部署,就好像 Azure 在托管它们一样。这样做,我们将它们纳入了我们已经充满信心地使用的 Azure 管理服务的保护伞之下。这有助于我们在所有托管环境中实施一致的方法。
让我们考虑访问控制和策略的服务示例。
访问控制
结合 Azure 基于角色的访问控制 (RBAC),管理员可以授予开发人员访问权限,以将应用程序部署到本地托管的集群中的特定命名空间(例如),而无需向开发人员提供底层集群的详细信息。
Azure 策略
我们喜欢云的原因之一是我们可以快速启动所需资源。但是,我们仍然必须保持一定的控制,以避免出现以下情况:例如,在我们组织中的 Azure 中拥有访问权限的人员预配高度昂贵的 Premium 服务。此外,我们可能希望对区域、数据治理和命名约定进行控制。
幸运的是,Azure Policy 提供了管理这些组件的解决方案。如果我们有一项策略要求通过 HTTPS 访问所有 Web 应用程序,那么此策略现在适用于所有服务 — 托管在 Azure 中的服务以及在其他云提供商或本地使用 Azure Arc 的服务。
下面是 Azure 门户中的一个警告,显示在 Google Cloud 中运行的 Java Web 应用程序不符合仅限 HTTPS 的策略。
注意:我们将在本系列的第三篇文章中部署此 Java 应用程序,使用 Azure Arc。
数据服务
组织在多年来积累了数百甚至数千个数据库是很常见的。它们将这些数据库托管在裸机、虚拟机、云和数据中心上。如果这些数据可以提供给 PostgreSQL Hyperscale 和 Azure SQL 托管实例服务,这些组织将大有裨益。
Azure Arc 启用的 SQL 托管实例使现有的 SQL Server 能够将数据迁移到 Azure,同时保持数据主权且更改最小。它还与最新稳定版本的 SQL Server 共享通用代码库,因此大多数功能都是相同的。此外,它还具有前面提到的所有标准 Azure Arc 优势。然后,我们可以利用 Azure 服务的功能来处理我们的 SQL Server 实例,例如 Log Analytics、安全中心和 SQL 环境帮助,后者会定期验证配置(例如性能调优和安全性)。
准备将 Azure Functions 部署到 Google Cloud
本系列的下一篇文章将在 Arc 启用的 Kubernetes 集群中部署 Python Azure Functions。以下是必要的先决条件
检查您是否拥有 Azure CLI 2.1.50 或更高版本
az --version
检查您是否拥有 Helm 3.0 或更高版本
helm version
确保 CLI 扩展是最新的
az extension add --upgrade -n connectedk8s
az extension add --upgrade -n k8s-configuration
登录到您的 Azure 帐户
az login
将上下文设置为所需的订阅
az account set -s <subscription_id>
创建资源组(在 Arc 预览期间必须是 West Europe 或 East US)
az group create --name arc-rg --location westeurope
注册资源提供程序
az provider register -n Microsoft.Kubernetes –wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.ExtendedLocation –wait
在本系列文章中,我们正在使用 Google Cloud,因此您需要 Google Cloud SDK 才能继续进行。点击下载 Google Cloud SDK。
按照 Azure Arc Jumpstart 网站上的指南创建新的 GCP 项目,然后运行以下命令在 Google Cloud 中创建 Kubernetes 集群
gcloud container clusters create azure-arc-demo-gke-cluster --zone europe-west2-a --tags=arc-demo-node --enable-autoscaling --min-nodes=5 --max-nodes=8
gcloud compute addresses create demo-cluster-endpoint-ip --region europe-west2
gcloud compute addresses list --filter="name=demo-cluster-endpoint-ip"
第三行将输出您集群的外部 IP 地址。将其保存在易于访问的位置,因为您将在下一篇文章中使用它。
将集群连接到 Azure。
az connectedk8s connect --name k8s-gke --resource-group arc-rg
检查 Kubernetes 连接性。所有节点都已准备就绪吗?
kubectl get nodes
检查由入站连接创建的资源。azure-arc 命名空间是否处于活动状态?
kubectl get namespace
该命名空间中的所有 Pod 是否都在运行?
kubectl get pods -n azure-arc
后续步骤
既然您已经了解了如何在任何地方运行云原生 Azure 应用程序 — 即使在 Azure 外部 — 让我们通过一个分步示例。
完成上一节中的准备步骤后,请继续阅读下一篇文章,了解如何在托管在其他云服务中的 Arc 托管 Kubernetes 集群上部署 Azure Functions。
要了解如何使用 Azure Arc 预览版跨本地、边缘和云环境管理、治理和保护您的 Kubernetes 集群,请查看 Azure 网络研讨会系列“使用 Azure Arc 预览版随时随地管理 Kubernetes”。