*本文作者系VMware云原生实验室工程师 彭路
使用KubeFATE在kubernetes上部署FATE集群时,提供了两种部署方式:KubeFATE服务和KubeFATE命令行工具。用户可以选择喜欢的方式来部署FATE集群。
有以下几个配置文件需要注意:rbac-config.yaml,kubefate.yaml,config.yaml,cluster.yaml,cluster-serving.yaml。
rbac-config.yaml
创建KubeFATE所需要的Namespace和ServiceAccount。给ServiceAccount绑定角色。
kubefate.yaml
将KubeFATE服务部署到kubernetes上。包括两部分:KubeFATE服务和MongoDB数据库。
- KubeFATE服务
KubeFATE服务有三部分:Deployment,Service和Ingress。下面分别介绍一下配置项。
Deployment:
env:
- name: FATECLOUD_MONGO_URL
value: "mongo:27017"
- name: FATECLOUD_MONGO_USERNAME
value: "root"
- name: FATECLOUD_MONGO_PASSWORD
value: "root"
- name: FATECLOUD_MONGO_DATABASE
value: "KubeFate"
- name: FATECLOUD_REPO_NAME
value: "kubefate"
- name: FATECLOUD_REPO_URL
value: "https://federatedai.github.io/KubeFATE/"
- name: FATECLOUD_USER_USERNAME
value: "admin"
- name: FATECLOUD_USER_PASSWORD
value: "admin"
- name: FATECLOUD_SERVER_ADDRESS
value: "0.0.0.0"
- name: FATECLOUD_SERVER_PORT
value: "8080"
- name: FATECLOUD_LOG_LEVEL
value: "debug"
配置项 |
说明 |
FATECLOUD_MONGO_URL |
MongoDB的地址,依赖于MongoDB的配置。 |
FATECLOUD_MONGO_USERNAME |
MongoDB的用户名。 |
FATECLOUD_MONGO_PASSWORD |
MongoDB的密码。 |
FATECLOUD_MONGO_DATABASE |
MongoDB里面的数据库名。 |
FATECLOUD_REPO_NAME |
Helm chart远程仓库名。 |
FATECLOUD_REPO_URL |
Helm chart远程仓库地址。 |
FATECLOUD_USER_USERNAME |
KubeFATE服务默认用户名。 |
FATECLOUD_USER_PASSWORD |
KubeFATE服务默认用户密码。 |
FATECLOUD_SERVER_ADDRESS |
KubeFATE服务地址。 |
FATECLOUD_SERVER_PORT |
KubeFATE服务端口。 |
FATECLOUD_LOG_LEVEL |
KubeFATE服务日志等级。 |
Service:
ports:
- name: "8080"
port: 8080
targetPort: 8080
protocol: TCP
type: ClusterIP
端口和deployment配置的一致,网络类型是ClusterIp。
Ingress:
rules:
- host: kubefate.net
http:
paths:
- path: /
backend:
serviceName: kubefate
servicePort: 8080
配置项 |
说明 |
host |
Ingress的域名,通过这个域名来访问KubeFATE服务。 |
backend |
Ingress的后端就是KubeFATE的Service。 |
更多Ingress相关内容请参考:
https://kubernetes.io/docs/concepts/services-networking/ingress/
- MongoDB数据库
Deployment:
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: root
- name: MONGO_INITDB_ROOT_PASSWORD
value: root
MongoDB初始化的用户名和密码。
config.yaml
user:
username: admin
password: admin
serviceurl: kubefate.net
KubeFATE命令行工具调用KubeFATE服务时所用到的配置。Serviceurl是KubeFATE服务的Ingress地址,user是KubeFATE服务的默认用户名密码。
cluster.yaml
cluster.yaml声明需要部署的FATE群集信息,KubeFATE 命令行工具使用这些信息来部署FATE群集。
配置项 |
类型 |
说明 |
name |
纯量 |
FATE集群的名字。 |
namespace |
纯量 |
FATE集群在kubernetes上的命名空间。 |
chartName |
纯量 |
部署FATE集群的helm chart名字。 |
chartVersion |
纯量 |
部署FATE集群的helm chart版本。 |
partyId |
纯量 |
FATE集群的Parity ID。 |
modules |
数组 |
需要部署的FATE模块。 |
proxy |
对象 |
Proxy模块需要的配置。 |
egg |
对象 |
Egg模块需要的配置。 |
servingIp |
纯量 |
在线推理集群的IP。 |
servingPort |
纯量 |
在线推理集群的端口。 |
Egg对象:
配置项 |
类型 |
说明 |
count |
纯量 |
FATE集群egg模块的数量。 |
processor |
纯量 |
Egg模块的进程数。 |
Proxy对象:
多方FATE集群支持两种部署模式:通过exchange模块连接和直接连接模式。
Exchange模式:
每个参与方都与exchange集群连接,exchange有所有参与方的proxy地址。
- Exchange集群只需要部署proxy模块。在proxy对象的配置里,partyList需要所有参与方的proxy地址,不需要exchange配置项。
- 参与方FATE集群只需要填写exchange配置项,不需要填写partyList。
直连模式:
所有参与方直接互相连接。
- 不需要填写exchange配置项。
- Partylist配置项里面需要有所有参与方的proxy地址。
cluster-serving.yaml
cluster-serving.yaml声明需要部署的FATE在线推理群集信息,KubeFATE 命令行工具使用这些信息来部署FATE在线推理群集。
配置项 |
类型 |
说明 |
name |
纯量 |
在线推理集群的名字。 |
namespace |
纯量 |
在线推理集群在kubernetes上的命名空间。 |
chartName |
纯量 |
部署在线推理集群的helm chart名字。 |
chartVersion |
纯量 |
部署在线推理集群的helm chart版本。 |
partyId |
纯量 |
在线推理集群的Parity ID。 |
modules |
数组 |
需要部署的模块。 |
servingProxy |
对象 |
在线推理Proxy模块需要的配置。 |
ServingServer |
对象 |
在线推理Server模块需要的配置。 |
servingProxy对象:
ServingServer对象:
在线推理集群的Server模块需要和对应的FATE集群的Fate_flow通信。所以需要配置Fate_flow的信息。
咨询与KubeFATE相关问题可通过kubefate@vmware.com联系我们。
来源:oschina
链接:https://my.oschina.net/u/4238514/blog/3282573