单机部署

本主题介绍如何在生产服务器上部署Kedro。您可以使用三种替代方法来部署Kedro管道:

基于容器的

该方法使用容器技术,例如Docker或其他容器解决方案,来构建镜像并在您首选的环境中运行整个Kedro项目。

在本教程中,我们将假设采用Docker工作流程。我们推荐使用Kedro-Docker插件来简化流程,具体使用说明请参阅插件的README.md文件。当您在本地构建完项目的Docker镜像后,需要将该镜像传输到生产服务器。具体操作如下:

如何使用容器注册表

容器注册表允许您存储和共享容器镜像。Docker Hub是您可以用于部署Kedro项目的容器注册表的一个示例。如果您拥有Docker ID,可以按照以下步骤使用它从Docker服务器推送和拉取镜像。

在本地机器上标记您的图像:

docker tag <image-name> <DockerID>/<image-name>

将镜像推送到Docker hub:

docker push <DockerID>/<image-name>

从Docker Hub拉取镜像到您的生产服务器:

docker pull <DockerID>/<image-name>

注意

Docker Hub上的仓库默认设置为公开可见。您可以在Docker Hub网站上将项目更改为私有。

使用其他容器注册表(如AWS ECR或GitLab容器注册表)的流程与上述步骤几乎相同。不过,每种解决方案的认证方式会有所不同。

基于包的

如果您不想使用容器化技术,可以选择使用kedro package来打包您的Kedro项目。

在项目的根目录下运行以下命令:

kedro package

Kedro将项目构建到dist/目录中,并生成一个.whl文件,这是Python的二进制分发包格式

生成的.whl包仅包含Kedro管道的Python源代码,不包含任何conf/data/子文件夹,也不包含pyproject.toml文件。 项目配置会单独打包为tar.gz文件。这个压缩版的配置文件会排除local目录内的所有文件。 这意味着您可以将项目分发到其他地方运行,例如配置、数据和日志不同的另一台计算机上。分发后,打包的项目必须从包含pyproject.toml文件和conf/子文件夹(如果管道加载/保存本地数据,还需要data/)的目录中运行。这意味着您需要手动在远程服务器上创建这些目录。

接收.whl文件的用户需要在其机器上安装Python和pip,但不需要预先安装Kedro。项目会被安装到包含相关conf/data/子文件夹的根目录下,通过导航至根目录并调用:

pip install <path-to-wheel-file>

在远程服务器上安装完项目后,从项目根目录按以下方式运行Kedro项目:

python -m project_name

基于CLI的

如果容器和包都不适合您的项目,您还可以通过使用Kedro CLI将项目代码库克隆到生产服务器上来运行它。

您需要按照以下步骤来运行您的项目:

使用GitHub工作流复制你的项目

该工作流程假设Kedro项目的开发是在本地环境中通过Git进行版本控制完成的。提交的代码会被推送到远程服务器(例如GitHub、GitLab、Bitbucket等)。

在生产服务器上部署(最新)代码是通过克隆和定期从Git远程拉取变更来完成的。然后,服务器上会执行该流水线。

在服务器上安装Git,具体操作取决于您使用的服务器类型。您可以通过运行以下命令来验证安装是否成功:

git --version

设置git(可选)

git config --global user.name "Server"
git config --global user.email "server@server.com"

为服务器生成新的SSH密钥将此新密钥添加到您的GitHub账户

最后将项目克隆到服务器:

git clone <repository>

安装并运行Kedro项目

将Kedro项目复制到服务器后,您需要按照以下步骤安装所有项目依赖并运行项目。

使用pip在服务器上安装Kedro:

pip install kedro

或者使用conda:

conda install -c conda-forge kedro

安装项目的依赖项,请在项目的根目录下运行以下命令:

pip install -r requirements.txt

在远程服务器上安装项目后,您可以从项目根目录按如下方式运行Kedro项目:

kedro run

你也可以将上述步骤整合到一个bash脚本中,并在相关目录下运行它。