云服务提供商和 Kubernetes#

本指南介绍如何在不同的云服务提供商和 Kubernetes 上部署 Argilla 服务器。

Kubernetes#

仓库中的 Kubernetes (k8s) 文件夹包含用于在 Kubernetes 上部署 Argilla 的最小配置的几个文件。这些文件还包含一些关于托管的资源需求建议。对于更强大的配置,我们建议使用 Helm charts。

Helm charts#

为了更强大和现代的设置,我们建议将官方 Kubernetes helm charts 与 Argilla 服务器 Kubernetes yaml 结合使用。Argilla 本身没有任何 helm 支持,但仍然可以通过将 ARGILLA_ELASTICSEARCH 环境变量设置为 ElasticSearch 托管的端点,与 Helm 部署的 ElasticSearch 一起使用。

亚马逊云服务 (AWS)#

设置 AWS 配置文件#

必须安装 aws 命令 cli。然后,输入

aws configure --profile argilla

并按照命令指示操作。有关更多详细信息,请访问 AWS 官方文档

一旦创建了配置文件(新条目应出现在文件 ~/.aws/config 中),你可以通过设置环境变量来激活它。

export AWS_PROFILE=argilla

创建 docker machine#

docker-machine create --driver amazonec2 \
--amazonec2-root-size 60 \
--amazonec2-instance-type t2.large \
--amazonec2-open-port 80 \
--amazonec2-ami ami-0b541372 \
--amazonec2-region eu-west-1 \
argilla-aws

可用的亚马逊机器镜像 (AMI) 取决于区域。提供的 AMI 适用于 eu-west 区域,并且是 ubuntu-16.04-server 镜像。要查找可用的最新镜像,请访问 AWS AMI Marketplace,选择“启动实例”并按 ubuntu 筛选(别忘了选择你的目标区域)。

如果你已经在目标区域中拥有多个实例和 VPC,建议在创建 Argilla 实例之前创建一个新的 VPC。添加以下参数以指定要用于实例的 VPC

--amazonec2-vpc-id vpc-1234abcd  # Replace vpc-1234abcd with the created VPC id

验证 machine 创建#

$>docker-machine ls

NAME                   ACTIVE   DRIVER      STATE     URL                        SWARM   DOCKER     ERRORS
argilla-aws             -        amazonec2   Running   tcp://52.213.178.33:2376           v20.10.7

保存分配的 machine ip#

在我们的例子中,分配的 ip 是 52.213.178.33

连接到远程 docker machine#

为了启用本地 docker 客户端和远程守护程序之间的连接,我们必须输入以下命令

eval $(docker-machine env argilla-aws)

定义 docker-compose.yaml#

# docker-compose.yaml
version: "3"

services:
 argilla:
   image: argilla/argilla-server:v1.29
   ports:
     - "80:80"
   environment:
     ARGILLA_ELASTICSEARCH: <elasticsearch-host_and_port>
     ARGILLA_AUTH_SECRET_KEY: Please generate a 32 character random string with: openssl rand -hex 32
   restart: unless-stopped

拉取镜像#

docker-compose pull

启动 docker 容器#

docker-compose up -d

访问 Argilla#

在我们的例子中 http://52.213.178.33

Azure#

在 Azure 上部署 Argilla 最简单的方法是使用 Azure 容器实例 (ACI) 服务。此服务允许你以无服务器方式运行容器,而无需管理底层基础设施。本指南将引导你使用 Azure CLI 工具部署 Argilla,并基于 Azure 文档 关于同一服务的文档。

🚒 在撰写本文时,仍然可以使用 docker run 命令和 docker context 与 Azure 集成来部署 Argilla,但 此方法 即将弃用在 docker cli 中。

1. 验证 Azure 身份#

首先,你需要使用 az CLI 验证 Azure 身份

az login

2. 设置 Azure 资源组#

创建一个资源组,用于部署 Argilla 服务器

az group create --name <resource-group> --location <location>

3. 创建 Azure 容器实例#

使用 az container create 命令创建 Azure 容器实例

az container create --resource-group <resource-group> --name <deployment-name> --image argilla/argilla-quickstart:latest --dns-name-label <dns-name> --ports 6900

一旦容器部署完成,你可以使用以下命令检查部署情况:

az container show --resource-group <resource-group> --name argilla --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

现在应该可以通过输出中提供的 FQDN 在端口 6900 上访问 Argilla。

Google Cloud Platform (GCP) 通过 Cloud Run#

首先,我们将使用 Cloud Run 部署 Argilla,这是一个用于扩展无状态容器的托管平台。要在 GCP 上部署 Argilla,你可以使用 Cloud Run,这是一个用于扩展无状态容器的托管平台。本指南将引导你使用 gcloud CLI 工具部署 Argilla,并基于 GCP 文档

🚒 为了简单起见,我们将部署 Argilla 快速入门镜像,这意味着我们有一个预先打包的存储层,并且无法使用 Cloud Run 的水平扩展功能。

1. 验证 GCP 身份#

首先,你需要使用 gcloud CLI 验证 GCP 身份

gcloud auth login

2. 构建和部署容器#

我们将使用 gcloud run deploy 命令直接从 Docker Hub 部署 Argilla 容器。我们可以将 cloud run url 指向容器的默认端口 (6900) 并定义相关的计算资源。

gcloud run deploy <deployment-name> \
--region <region> \
--image argilla/argilla-quickstart:latest \
--allow-unauthenticated \
--port 6900 \
--cpu 2 \
--memory 4Gi \
--max-instances 1 \
--min-instances 1

现在你可以通过输出中提供的 URL 或运行以下命令访问 Argilla:

gcloud run services describe <deployment-name> \
--region <region> \
--format 'value(status.url)'

Google Cloud Platform (GCP) 在专用虚拟机上#

如果通过 Cloud Run 部署不适合你的用例,你可以通过 Cloud Compute 在专用虚拟机上部署 Argilla。将 Argilla 服务器部署到 Cloud Compute 涉及创建计算实例、设置 Docker 和 Docker Compose 以及配置外部流量的网络设置。请按照以下步骤操作

1. 创建实例#

使用必要的规范创建一个新的 Google Cloud VM 实例。

gcloud compute instances create "argilla-instance" \
  --machine-type "n1-standard-2" \
  --image-family "debian-10" \
  --image-project "debian-cloud" \
  --boot-disk-size "50GB" \
  --zone "asia-south2-a"

2. SSH 进入实例#

实例运行后,使用 SSH 连接到它。

gcloud compute ssh argilla-instance --zone asia-south2-a

3. 安装依赖项#

更新包管理器并安装必要的依赖项。

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common gnupg2 lsb-release

4. 安装 Docker 和 Docker Compose#

在实例上安装 Docker Engine 和 Docker Compose。

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

5. 使用 Docker Compose 启动 Argilla#

从存储库中获取 docker-compose.yaml 文件并启动 Argilla 服务器。

mkdir argilla && cd argilla

wget -O docker-compose.yaml https://raw.githubusercontent.com/argilla-io/argilla/main/docker/docker-compose.yaml

sudo docker compose up -d

6. 允许外部流量#

配置防火墙规则以允许在所需端口上的传入流量。

gcloud compute instances add-tags argilla-instance --zone asia-south2-a --tags=argilla-instance

gcloud compute firewall-rules create allow-6900 --allow tcp:6900 --target-tags argilla-instance --description "Allow incoming traffic on port 6900"

7. 分配静态 IP 地址#

保留并分配静态 IP 地址,以确保可以通过相同的 IP 地址持续访问服务器。

gcloud compute addresses create my-static-ip --region asia-south2

8. 使用静态 IP 配置实例#

将静态 IP 地址绑定到实例。

STATIC_IP=$(gcloud compute addresses list --format="value(address)" --filter="name=my-static-ip")

gcloud compute instances delete-access-config argilla-instance --zone asia-south2-a --access-config-name "external-nat"

gcloud compute instances add-access-config argilla-instance --zone asia-south2-a --address $STATIC_IP

9. 测试连接#

通过向 Argilla 服务器发出 HTTP 请求来确认服务器可访问。

curl -vI $STATIC_IP:6900

现在你可以使用 URL http://[STATIC_IP]:6900 在浏览器中访问 Argilla 实例。