数据计算基础设施操作员微服务
Operator Service是实现Ocean Protocol https://github.com/oceanprotocol/OEPs/tree/master/12#infrastructure-orchestration 规范的微服务,负责管理工作流执行请求。通常该服务通过https://github.com/oceanprotocol/brizo%E9%9B%86%E6%88%90%EF%BC%8C%E4%BD%86%E4%B9%9F%E5%8F%AF%E7%8B%AC%E7%AB%8B%E8%B0%83%E7%94%A8%E3%80%82%E5%85%B6%E6%A0%B8%E5%BF%83%E8%81%8C%E8%B4%A3%E6%98%AF%E4%B8%8EK8s%E9%9B%86%E7%BE%A4%E5%BB%BA%E7%AB%8B%E9%80%9A%E4%BF%A1%EF%BC%8C%E5%A4%84%E7%90%86%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%9A%84%E5%85%A8%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%AE%A1%E7%90%86%EF%BC%8C%E4%B8%94%E4%B8%8D%E6%8F%90%E4%BE%9B%E5%AD%98%E5%82%A8%E8%83%BD%E5%8A%9B%EF%BC%8C%E6%89%80%E6%9C%89%E7%8A%B6%E6%80%81%E7%9B%B4%E6%8E%A5%E5%AD%98%E5%82%A8%E5%9C%A8K8s%E9%9B%86%E7%BE%A4%E4%B8%AD%E3%80%82
适用于Ocean Protocol生态中需要实现"数据计算"(Compute to the Data)功能的场景,特别是需要在K8s基础设施上管理算法工作流执行的场景。可作为独立微服务部署,或与Brizo代理集成,为数据提供方和算法执行方提供工作流管理能力。
Operator Service需与K8s环境建立连接以管理工作流。以下以连接AWS上的K8s集群为例说明搭建步骤。
安装AWS和K8s工具
安装AWS CLI:
bash$ sudo pip3 install awscli --upgrade $ aws --version aws-cli/1.16.225 Python/3.7.3 Linux/5.0.0-25-generic botocore/1.12.215
安装aws-iam-authenticator:
bash$ curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator chmod +x ./aws-iam-authenticator
安装Kubectl:
bash$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl $ chmod +x ./kubectl $ sudo mv ./kubectl /usr/local/bin/kubectl
安装Minikube(本地K8s集群):
bashcurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
启动Minikube(非root用户):
bashminikube start
验证配置:
bashkubectl config view
工具详细文档:
- AWS CLI
- Kubectl
- aws-iam-authenticator
- Minikube
安装和配置PostgreSQL数据库
安装依赖(以Ubuntu为例):
bashsudo apt-get install libpq-dev
配置环境变量:
bashexport POSTGRES_USER=myuser export POSTGRES_PASSWORD=mypass export POSTGRES_HOST=localhost export POSTGRES_DB=mydb
配置管理员密钥(首次运行需初始化数据库):
bashexport ALLOWED_ADMINS=["myAdminSecret"]
运行服务
创建并激活虚拟环境:
bashvirtualenv venv source venv/bin/activate pip install -r requirements_dev.txt
启动服务:
bashexport FLASK_APP=operator_service/run.py flask run --host=0.0.0.0 --port 8050
初始化数据库(首次运行):
pythonimport requests headers = {"Admin": "myAdminSecret"} requests.post(f"{API_URL}/pgsqlinit", headers=headers)
访问Swagger API文档:
http://0.0.0.0:8050/api/v1/docs/
示例API调用:
bash$ curl -X GET "http://localhost:8050/api/v1/operator/list" -H "accept: application/json" ["9f9178dcffd34130a3158ce9ca3d15ff"]
| 环境变量 | 描述 |
|---|---|
| ALGO_POD_TIMEOUT | 算法允许运行的最大时间(秒),超时后将被终止 |
| STORAGE_EXPIRY | 作业文件输出的最大存储时间(秒) |
| POSTGRES_DB | PostgreSQL数据库名称 |
| POSTGRES_USER | PostgreSQL用户名 |
| POSTGRES_PASSWORD | PostgreSQL密码 |
| POSTGRES_HOST | PostgreSQL主机地址 |
| POSTGRES_PORT | PostgreSQL端口 |
| SIGNATURE_REQUIRED | 是否需要Brizo签名(0=不需要,1=需要) |
| ALLOWED_PROVIDERS | 允许访问端点的提供方JSON数组 |
| ALLOWED_ADMINS | 允许访问管理员路由的管理员数组 |
| OPERATOR_ADDRESS | 计算环境使用的地址(重要:对应的私钥必须在operator-engine环境中设置) |
| DEFAULT_NAMESPACE | 运行作业的命名空间 |
| X-API-KEY | 下载计算输出时添加的X-API-KEY头(用于IPFS认证) |
| CLIENT-ID | 下载计算输出时添加的CLIENT-ID头(用于IPFS认证) |
| LOG_CFG | 日志文件位置 |
| LOG_LEVEL | 日志级别 |
通过Travis执行自动化测试,使用tox和pytest框架。
使用bumpversion.sh脚本更新项目版本,通过指定{major|minor|patch}参数进行主版本、次版本或补丁版本的更新:
bash./bumpversion.sh major # 主版本更新 ./bumpversion.sh minor # 次版本更新 ./bumpversion.sh patch # 补丁版本更新
Copyright 2022 Ocean Protocol Foundation Ltd.
基于Apache License 2.0许可("许可证")授权;除非遵守许可证,否则不得使用此文件。您可以在以下地址获取许可证副本:
[***]
除非适用***要求或书面同意,否则根据许可证分发的软件按"原样"分发,不提供任何明示或暗示的担保或条件。有关许可证下权限和限制的具体语言,请参见许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务