65.9K
CodeProject 正在变化。 阅读更多。
Home

容器应用网关

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2024年3月1日

CPOL

4分钟阅读

viewsIcon

2999

容器版应用网关是 Azure 最近正式发布的一项服务,代表了在 Kubernetes 集群中运行的工作负载的应用程序(第 7 层)负载均衡和动态流量管理方面的演进。

容器版应用网关是 Azure 最近正式发布的一项服务,代表了在 Kubernetes 集群中运行的工作负载的应用程序(第 7 层)负载均衡和动态流量管理方面的演进。这项服务是应用网关和应用网关入口控制器(Application Gateway Ingress Controller)的结晶,提供了增强的功能,用于管理到容器工作负载的 Web 流量,具有自定义运行状况探测、URL 重定向、URL/标头重写、控制器高可用性、Gateway API v1、其他区域可用性以及生产工作负载的 SLA 等功能。

容器版应用网关的工作原理

容器版应用网关通过各种组件的组合运行,包括应用网关本身、前端和关联,以及依赖项,如私有 IP 地址、子网委派和用户分配的托管标识。它为 AKS 集群提供了一个弹性且可扩展的入口解决方案,支持自动重试、自动缩放、可用性区域弹性、各种运行状况探测、标头重写、HTTPS 流量管理等等。流量管理通过第 7 层 HTTP/HTTPS 请求转发实现,基于主机名、路径、标头、查询字符串、方法和端口。部署提供了两种策略:自带 (BYO) 部署和通过 ALB 控制器管理​​。

优势和特点

网关通过提供近乎实时的更新来添加或移动 Pod、路由和探测,从而提高性能。它还支持流量拆分、后端相互认证、Kubernetes 入口和网关 API,以及灵活的部署策略。容器版应用网关的控制平面和数据平面架构旨在实现高可用性和安全性,确保您的应用程序保持可访问和安全​​。

部署策略

容器版应用网关有两种主要的部署策略

自带 (BYO) 部署:此策略涉及通过 Azure 门户、CLI、PowerShell、Terraform 等部署和管理容器版应用网关资源、关联和前端资源,并在 Kubernetes 配置中引用这些资源。
由 ALB 控制器管理:在此策略中,部署在 Kubernetes 中的 ALB 控制器管理容器版应用网关资源及其子资源的生命周期。此选项简化了管理并确保应用网关配置根据 Kubernetes 集群内的更改自动更新。

我的建议是通过 Bicep 进行本机语言部署来使用 BYO 方式。

通过 Bicep 进行部署

使用 Bicep 为 Azure 容器版应用网关创建部署涉及定义诸如应用网关、具有适当子网的虚拟网络之类的资源,并可能与 Azure Kubernetes 服务 (AKS) 集成。完整的 Bicep 模板过于详细和具体,因此我的部署示例仅为基本示例,不含管道;

定义虚拟网络和子网:首先定义一个虚拟网络 (VNet),其中包含用于应用网关和 AKS 集群的子网。应用网关需要一个专用子网。

resource vnet 'Microsoft.Network/virtualNetworks@2020-11-01' = {
  name: 'vnetName'
  location: 'location'
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'AppGatewaySubnet'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'AksSubnet'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

部署容器版应用网关:定义应用网关资源,并引用在上一步中创建的子网。您还需要指定其他参数,例如 SKU、层级以及特定于您用例的任何配置,例如 HTTP 设置、后端池、侦听器和规则。

resource applicationGateway 'Microsoft.Network/applicationGateways@2020-11-01' = {
  name: 'appGatewayName'
  location: 'location'
  properties: {
    sku: {
      name: 'Standard_v2'
      tier: 'Standard_v2'
    }
    gatewayIPConfigurations: [
      {
        name: 'appGatewayIpConfig'
        properties: {
          subnet: {
            id: vnet::subnets::AppGatewaySubnet.id
          }
        }
      }
    ]
    // Define other configurations like HTTP settings, backend pools, listeners, and rules here
  }
}

与 Azure Kubernetes 服务 (AKS) 集成:如果将 AKS 集群部署为您的架构的一部分,请定义 AKS 资源,并确保将其配置为使用为它创建的子网。您可能还需要配置网络设置以与应用网关集成。

resource aks 'Microsoft.ContainerService/managedClusters@2021-03-01' = {
  name: 'aksClusterName'
  location: 'location'
  properties: {
    dnsPrefix: 'aksClusterDnsPrefix'
    agentPoolProfiles: [
      {
        name: 'agentPool'
        // Reference to the subnet for AKS
        vnetSubnetID: vnet::subnets::AksSubnet.id
        count: 3
        vmSize: 'Standard_DS2_v2'
        osType: 'Linux'
      }
    ]
    // Include additional AKS configurations as needed
  }
}

配置应用网关入口控制器 (AGIC):如果将 AGIC 与您的应用网关一起使用,请确保在 AKS 部署中配置 AGIC 设置以启用集成。这通常涉及在 AKS 内部署一个 Helm 图表,该图表将 AGIC 配置为使用您的应用网关。

有关应用网关和 AKS 集成的综合指南和最新功能,请访问官方 Microsoft 文档

支持的区域和可用性

容器版应用网关现已在全球多个 Azure 区域提供,从而可以在离您的用户最近的区域中进行部署,以最大限度地减少延迟并提高性能

结论

Azure 的容器版应用网关提供了一个强大、可扩展的解决方案,用于管理到容器化应用程序的 Web 流量。凭借其全面的功能集,包括负载均衡、SSL 终止以及对 Kubernetes 入口和网关 API 的支持,它为在 Azure 上部署和管理容器化应用程序提供了灵活而强大的选项。无论您是将现有应用程序迁移到容器还是构建新的微服务架构,容器版应用网关都能为您提供确保高可用性、性能和安全性所需的工具。

有关如何部署和管理容器版应用网关的更多详细信息,请查看 官方 Azure 文档​

© . All rights reserved.