*本文做者系VMware云原生实验室工程师 彭路git
使用KubeFATE在kubernetes上部署FATE集群时,提供了两种部署方式:KubeFATE服务和KubeFATE命令行工具。用户能够选择喜欢的方式来部署FATE集群。github
有如下几个配置文件须要注意: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。下面分别介绍一下配置项。url
Deployment:spa
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"
配置项.net |
说明 |
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的信息。