在 Azure Kubernetes 服务 (AKS) 上使用 Flyte 构建和部署数据与机器学习管道

本文介绍如何在 Azure Kubernetes 服务 (AKS) 上使用 Flyte。 Flyte 是一种开源工作流业务流程协调程序,可将机器学习、数据工程和数据分析堆栈统一起来,帮助你构建稳健可靠的应用程序。 将 Flyte 作为 Kubernetes 原生工作流自动化工具使用时,你可以专注于试验和提供业务价值,而无需扩展到基础结构和资源管理范围。 请记住,Flyte 并未获得 Microsoft 官方支持,因此请自行决定是否使用。

有关详细信息,请参阅 Flyte 简介

重要

AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。

例如,Ray GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。

Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理AKS 支持范围

Flyte 用例

Flyte 可用于各种用例,包括:

  • 提供简化损益财务计算的模型。
  • 处理 PB 级数据以高效执行新区域的 3D 映射。
  • 快速回退到以前的版本,并最大程度地减少管道中 bug 的影响。

有关详细信息,请参阅 Flyte 核心用例

先决条件

  • Azure 订阅。 如果你没有 Azure 订阅,可以创建一个试用版订阅
    • 如果有多个订阅,请确保使用 az account set --subscription <subscription-id> 命令选择正确的订阅。
  • 已安装并配置 Azure CLI。 使用 az --version 命令查看版本。 如需进行安装或升级,请参阅安装 Azure CLI
  • 已安装并更新 Helm CLI。 使用 helm version 命令查看版本。 如果需要安装或升级,请参阅安装 Helm
  • 已安装并更新 kubectl CLI。 使用 az aks install-cli 命令或使用安装 kubectl 在本地安装它。
  • 本地 Docker 开发环境。 有关详细信息,请参阅了解 Docker
  • 已安装 flytekitflytectl。 有关详细信息,请参阅 Flyte 安装

注意

如果使用的是 Azure CLI,则已安装 Helm 和 kubectl。

设置环境变量。

  • 设置用于整个文章的环境变量。 将占位符值替换为你自己的值。

    export RESOURCE_GROUP="<resource-group-name>"
    export LOCATION="<location>"
    export CLUSTER_NAME="<cluster-name>"
    export DNS_NAME_PREFIX="<dns-name-prefix>"
    

创建 AKS 群集

  1. 使用 az group create 命令为 AKS 群集创建 Azure 资源组。

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. 使用具有 --enable-azure-rbac--enable-managed-identity--enable-aad--dns-name-prefix 参数的 az aks create 命令创建 AKS 群集。

    az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac --enable-managed-identity --enable-aad --dns-name-prefix $DNS_NAME_PREFIX  --generate-ssh-keys
    

连接到 AKS 群集

  • 使用 az aks get-credentials 命令将 kubectl 配置为连接到 AKS 群集。

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    

添加 Flyte Helm 存储库

  • 使用 helm repo add 命令添加 Flyte Helm 存储库。

    helm repo add flyteorg https://flyteorg.github.io/flyte
    

查找 Flyte Helm 图表

  1. 使用 helm search repo 命令搜索 Flyte Helm 图表。

    helm search repo flyteorg
    

    以下示例输出显示了一些可用的 Flyte Helm 图表:

    NAME                    CHART VERSION   APP VERSION     DESCRIPTION
    flyteorg/flyte          v1.12.0                         A Helm chart for Flyte Sandbox
    flyteorg/flyte-binary   v1.12.0         1.16.0          Chart for basic single Flyte executable deployment
    flyteorg/flyte-core     v1.12.0                         A Helm chart for Flyte core
    flyteorg/flyte-deps     v1.12.0                         A Helm chart for Flyte dependencies
    flyteorg/flyte-sandbox  0.1.0           1.16.1          A Helm chart for the Flyte local sandbox
    flyteorg/flyteagent     v0.1.10                         A Helm chart for Flyte Agent
    
  2. 使用 helm repo update 命令更新存储库。

    helm repo update
    

在 AKS 上部署 Flyte 图表

在本部分中,你将部署 flyte-binary Helm 图表,以便开始在 AKS 上使用 Flyte 构建和部署数据和机器学习管道。 flyte-binary 图表是基本的单个 Flyte 可执行部署。

  1. 使用 kubectl create namespace 命令为 Flyte 部署创建命名空间。

    kubectl create namespace <namespace-name>
    
  2. 使用 helm install 命令安装 Flyte Helm 图表。 在此示例中,我们使用 flyte-binary 图表。

    helm install flyte-binary flyteorg/flyte-core --namespace <namespace-name>
    
  3. 使用 kubectl get services 命令验证 Flyte 部署是否正在运行。

    kubectl get services --namespace <namespace-name> --output wide
    

    以下精简示例输出显示了 Flyte 部署:

    NAME                            TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
    flyteorg-flyte-binary-grpc      ClusterIP      xx.x.xx.xxx    <none>          81/TCP           1m
    flyteorg-flyte-binary-http      ClusterIP      xx.x.xx.xxx    <none>          80/TCP           1m
    flyteorg-flyte-binary-webhook   ClusterIP      xx.x.xx.xxx    <none>          80/TCP           1m
    

后续步骤

本文介绍了如何使用 Helm 图表在 AKS 上安装 Flyte。 Flyte 项目还维护着 AKS 的参考实现,用于自动配置所有依赖项并部署生产级 Flyte 群集。

若要开始生成和部署数据和机器学习管道,请参阅以下文章: