使用K3d进行本地部署#

此功能仅支持在运行Linux或MacOS的本地机器/云虚拟机上使用。在本设置中,我们将使用K3d在本地部署Syft服务器。即使您需要在远程或生产环境中运行部署,强烈建议您先在本地测试部署。

先决条件#

  1. 安装 K3d: K3d 安装指南 如下:

  2. 安装/升级 helm 至最新版本:

    sudo apt-get update
    sudo apt-get install helm
    
    • 测试方式:

    helm
    
  3. 安装kubectl:

    kubectl version --client
    

部署Syft服务器#

现在我们已经安装了所有必需的软件包,接下来我们将继续部署PySyft服务器。

有两种方式可以部署PySyft服务器:

  1. 使用一行便捷脚本

  2. 手动运行命令

使用便捷脚本#

curl -o {{file_name}}.sh https://raw.githubusercontent.com/OpenMined/PySyft/syft-setup-script/scripts/setup_syft.sh  && bash {{file_name}}.sh  --cluster-name {{cluster_name}} --namespace {{namespce_name}} --version {{version}}

示例:

curl -o setup.sh https://raw.githubusercontent.com/OpenMined/PySyft/syft-setup-script/scripts/k3d-setup.sh  && bash syft.sh  --cluster-name syft-test --namespace syft --version 0.8.3

version是您想要部署的PySyft服务器版本。

对于k3d部署,版本是唯一必需的参数。如果您选择不传递cluster_name和namespace,将分别使用默认值syft-test和syft。

使用Helm Charts#

Helm chart 是一组描述 Kubernetes 资源的文件集合。Helm 使用这些 chart 在 Kubernetes 上部署应用程序或服务。每个 chart 包含以下核心组件:

  • Chart.yaml: 该文件包含关于chart的元数据,例如名称、版本和描述。

  • Values.yaml: 该文件包含图表变量的默认值,用户可以在部署时覆盖这些值。

步骤1:使用K3d创建集群#

要设置k3d部署,您需要一个正在运行的Kubernetes集群。这里我们将介绍如何使用k3d设置本地注册表,如下所示:

```bash

k3d cluster create {{cluster_name}} -p 8080:80@loadbalancer
```

Example is provided below:
```bash
k3d cluster create syft-test -p 8080:80@loadbalancer
```

步骤2. 使用Helm安装PySyft#

Helm仓库是一个打包图表的集合,可以公开或私有地共享和访问。这些仓库类似于其他生态系统中的软件包仓库,例如Node.js的npm或Python的PyPI。Helm仓库使得分发图表和管理其版本变得简单。

要使用Helm仓库,您需要将其添加到本地Helm客户端。这里我们正在添加PySyft的helm仓库:

```bash
helm repo add openmined https://openmined.github.io/PySyft/helm

helm repo update openmined
```

步骤3. 搜索可用的Syft版本#

您可以使用helm search命令在已添加的仓库中搜索可用的图表。例如,要搜索Syft图表的不同版本,可以使用:

```bash
helm search repo openmined/syft --versions --devel
```

在搜索中添加--devel将同时包含测试版本。

步骤4. 设置您偏好的Syft版本并部署#

要从仓库安装图表,请使用 helm install 命令并指定仓库名称和图表名称。

```bash
SYFT_VERSION="<paste the chart version number>"

helm install my-server openmined/syft --version $SYFT_VERSION --namespace syft --create-namespace
```

要传递本地的values.yaml文件,您可以在上述内容中添加以下内容:

 -f $PATH_TO_VALUES \
 # Or directly override values from the yaml file as:
 --value_name $VALUE

测试你的部署#

  1. 检查入口运行

K3d 内置了 Traefik 作为负载均衡器,因此在执行 helm 命令后,系统将自动部署一个 Traefik 入口控制器。

要确认入口的运行状态,请执行:

kubectl describe ingress -n syft
  1. 检查正在运行的Pod

kubectl get pods -n syft

此外,访问 localhost:8080 应该会显示 Syft Server 的登录页面。

  1. 启动您的Jupyter Notebook实例

在这一步中,您需要一个客户端服务器来与刚刚部署的PySyft服务器进行交互。这里的客户端是一个运行与服务器容器相同版本PySyft的Jupyter笔记本。

我们需要按以下方式启动客户端:

docker run --rm -it --network=host openmined/syft-client:${VERSION}

其中 ${VERSION} 是您想要运行的 PySyft Client 版本号。该版本必须与您在部署步骤中之前传递的版本相同。

保持笔记本运行

通常,当您退出终端时,Jupyter notebook实例会终止。为了让它在关闭终端后仍能持续运行以便随时访问,建议在screen或tmux会话中运行该命令。有关如何使用screen的更多信息,请参阅此链接:Screen Command 或 tmux:Tmux Command

如果此步骤成功,您将在浏览器中进入Jupyter笔记本界面。请创建一个新笔记本并运行以下命令来测试您的完整设置是否已准备就绪可供使用:

  1. 连接到您启动的服务器

import syft as sy

sy.login(url="localhost:80", email="[email protected]", password="changethis")

 # Please pass the URL, the email and password used to create the server. The above are the default ones used during server creation.

如果一切正常,您应该能够登录到您的服务器。现在您可以在客户端服务器上开始运行PySyft命令,与您刚刚部署的Syft服务器进行交互。