From 0a37a4bb2793829172e64587440e45d07ed2e23f Mon Sep 17 00:00:00 2001 From: ChenLong Ma Date: Tue, 15 Mar 2022 10:53:39 +0800 Subject: [PATCH 01/15] Feat: refactored file structure of FATE chart (#550) * Refactored file structure of FATE chart Signed-off-by: ChenLong Ma * In order to distinguish it from the existing version, the version number has been added Signed-off-by: ChenLong Ma * The images used are recorded for the convenience of development. Signed-off-by: ChenLong Ma * The release folder contains the release package files, no code Signed-off-by: ChenLong Ma * update Copyright and delete useless files Signed-off-by: ChenLong Ma --- .gitignore | 1 + helm-charts/FATE/Chart.yaml | 2 +- helm-charts/FATE/templates/NOTES.txt | 11 + helm-charts/FATE/templates/_helpers.tpl | 11 + .../eggroll/clustermanager/configmap.yaml} | 4 +- .../eggroll/clustermanager/deployment.yaml} | 22 +- .../eggroll/clustermanager/service.yaml | 31 + .../eggroll/lb-rollsite/configmap.yaml | 109 +++ .../eggroll/lb-rollsite/deployment.yaml} | 147 +--- .../backends/eggroll/lb-rollsite/service.yaml | 58 ++ .../eggroll/nodemanager/configmap.yaml | 105 +++ .../eggroll/nodemanager/deployment.yaml | 120 ++++ .../nodemanager/persistentvolumeclaim.yaml | 40 ++ .../backends/eggroll/nodemanager/service.yaml | 35 + .../backends/eggroll/rollsite/configmap.yaml | 94 +++ .../eggroll/rollsite/deployment.yaml} | 111 +-- .../backends/eggroll/rollsite/service.yaml | 36 + .../spark/hdfs/configmap.yaml} | 175 ++--- .../backends/spark/hdfs/deployment.yaml | 157 ++++ .../spark/hdfs/persistentvolumeclaim.yaml | 59 ++ .../backends/spark/hdfs/service.yaml | 68 ++ .../spark/nginx/configmap.yaml} | 102 +-- .../backends/spark/nginx/deployment.yaml | 76 ++ .../backends/spark/nginx/service.yaml | 45 ++ .../spark/pulsar/configmap.yaml} | 474 ++++--------- .../backends/spark/pulsar/deployment.yaml | 92 +++ .../backends/spark/pulsar/ingress.yaml | 42 ++ .../spark/pulsar/persistentvolumeclaim.yaml | 35 + .../backends/spark/pulsar/service.yaml | 76 ++ .../backends/spark/rabbitmq/configmap.yaml | 23 + .../spark/rabbitmq/deployment.yaml} | 44 +- .../backends/spark/rabbitmq/ingress.yaml | 43 ++ .../backends/spark/rabbitmq/service.yaml | 41 ++ .../spark/spark/configmap.yaml} | 85 +-- .../spark/spark/deployment.yaml} | 109 +-- .../backends/spark/spark/ingress.yaml | 43 ++ .../backends/spark/spark/service.yaml | 89 +++ .../client/deployment.yaml} | 45 +- .../FATE/templates/core/client/ingress.yaml | 43 ++ .../FATE/templates/core/client/istio.yaml | 34 + .../core/client/persistentvolumeclaim.yaml | 35 + .../FATE/templates/core/client/service.yaml | 30 + .../templates/core/fateboard/configmap.yaml | 50 ++ .../templates/core/fateboard/ingress.yaml | 43 ++ .../FATE/templates/core/fateboard/istio.yaml | 34 + .../templates/core/fateboard/service.yaml | 30 + .../templates/core/fateflow/configmap.yaml | 300 ++++++++ .../core/fateflow/persistentvolumeclaim.yaml | 34 + .../FATE/templates/core/fateflow/service.yaml | 102 +++ .../FATE/templates/{ => core}/istio.yaml | 43 +- .../mysql/configmap.yaml} | 124 +--- .../FATE/templates/core/mysql/deployment.yaml | 91 +++ .../core/mysql/persistentvolumeclaim.yaml | 35 + .../FATE/templates/core/mysql/service.yaml | 30 + .../FATE/templates/core/python-spark.yaml | 232 ++++++ helm-charts/FATE/templates/hdfs-nn.yaml | 209 ------ helm-charts/FATE/templates/ingress.yaml | 177 ----- .../FATE/templates/nodemanager-module.yaml | 250 ------- helm-charts/FATE/templates/psp.yaml | 11 + helm-charts/FATE/templates/python-spark.yaml | 670 ------------------ helm-charts/FATE/templates/role.yaml | 11 + helm-charts/FATE/templates/rolebinding.yaml | 11 + .../FATE/templates/serviceaccount.yaml | 11 + helm-charts/FATE/values-template-example.yaml | 2 +- helm-charts/Images_list.md | 38 + 65 files changed, 3042 insertions(+), 2498 deletions(-) rename helm-charts/FATE/templates/{eggroll-config.yaml => backends/eggroll/clustermanager/configmap.yaml} (98%) rename helm-charts/FATE/templates/{clustermanager-module.yaml => backends/eggroll/clustermanager/deployment.yaml} (87%) create mode 100644 helm-charts/FATE/templates/backends/eggroll/clustermanager/service.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/lb-rollsite/configmap.yaml rename helm-charts/FATE/templates/{lb-rollsite-module.yaml => backends/eggroll/lb-rollsite/deployment.yaml} (51%) create mode 100644 helm-charts/FATE/templates/backends/eggroll/lb-rollsite/service.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/nodemanager/configmap.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/nodemanager/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/nodemanager/service.yaml create mode 100644 helm-charts/FATE/templates/backends/eggroll/rollsite/configmap.yaml rename helm-charts/FATE/templates/{rollsite-module.yaml => backends/eggroll/rollsite/deployment.yaml} (50%) create mode 100644 helm-charts/FATE/templates/backends/eggroll/rollsite/service.yaml rename helm-charts/FATE/templates/{hdfs-dn.yaml => backends/spark/hdfs/configmap.yaml} (53%) create mode 100644 helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/hdfs/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/hdfs/service.yaml rename helm-charts/FATE/templates/{nginx.yaml => backends/spark/nginx/configmap.yaml} (54%) create mode 100644 helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/nginx/service.yaml rename helm-charts/FATE/templates/{pulsar.yaml => backends/spark/pulsar/configmap.yaml} (90%) create mode 100644 helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/pulsar/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/pulsar/service.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/rabbitmq/configmap.yaml rename helm-charts/FATE/templates/{rabbitmq.yaml => backends/spark/rabbitmq/deployment.yaml} (71%) create mode 100644 helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/rabbitmq/service.yaml rename helm-charts/FATE/templates/{spark-worker.yaml => backends/spark/spark/configmap.yaml} (67%) rename helm-charts/FATE/templates/{spark-master.yaml => backends/spark/spark/deployment.yaml} (56%) create mode 100644 helm-charts/FATE/templates/backends/spark/spark/ingress.yaml create mode 100644 helm-charts/FATE/templates/backends/spark/spark/service.yaml rename helm-charts/FATE/templates/{client.yaml => core/client/deployment.yaml} (71%) create mode 100644 helm-charts/FATE/templates/core/client/ingress.yaml create mode 100644 helm-charts/FATE/templates/core/client/istio.yaml create mode 100644 helm-charts/FATE/templates/core/client/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/core/client/service.yaml create mode 100644 helm-charts/FATE/templates/core/fateboard/configmap.yaml create mode 100644 helm-charts/FATE/templates/core/fateboard/ingress.yaml create mode 100644 helm-charts/FATE/templates/core/fateboard/istio.yaml create mode 100644 helm-charts/FATE/templates/core/fateboard/service.yaml create mode 100644 helm-charts/FATE/templates/core/fateflow/configmap.yaml create mode 100644 helm-charts/FATE/templates/core/fateflow/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/core/fateflow/service.yaml rename helm-charts/FATE/templates/{ => core}/istio.yaml (52%) rename helm-charts/FATE/templates/{mysql-module.yaml => core/mysql/configmap.yaml} (67%) create mode 100644 helm-charts/FATE/templates/core/mysql/deployment.yaml create mode 100644 helm-charts/FATE/templates/core/mysql/persistentvolumeclaim.yaml create mode 100644 helm-charts/FATE/templates/core/mysql/service.yaml create mode 100644 helm-charts/FATE/templates/core/python-spark.yaml delete mode 100644 helm-charts/FATE/templates/hdfs-nn.yaml delete mode 100644 helm-charts/FATE/templates/ingress.yaml delete mode 100644 helm-charts/FATE/templates/nodemanager-module.yaml delete mode 100644 helm-charts/FATE/templates/python-spark.yaml create mode 100644 helm-charts/Images_list.md diff --git a/.gitignore b/.gitignore index 20fe8ce74..cd37e5c00 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ dist/ *.out *.tgz *.tar +release/ diff --git a/helm-charts/FATE/Chart.yaml b/helm-charts/FATE/Chart.yaml index bc06a9ea2..e0ee72e85 100644 --- a/helm-charts/FATE/Chart.yaml +++ b/helm-charts/FATE/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: v1.7.2 description: A Helm chart for fate-training name: fate -version: v1.7.2 +version: v1.7.2-a home: https://fate.fedai.org icon: https://aisp-1251170195.cos.ap-hongkong.myqcloud.com/wp-content/uploads/sites/12/2019/09/logo.png sources: diff --git a/helm-charts/FATE/templates/NOTES.txt b/helm-charts/FATE/templates/NOTES.txt index bb7370ceb..bd9a06454 100644 --- a/helm-charts/FATE/templates/NOTES.txt +++ b/helm-charts/FATE/templates/NOTES.txt @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + Please wait for several minutes for FATE deployment to complete. For more details, please visit https://github.com/FederatedAI/KubeFATE. diff --git a/helm-charts/FATE/templates/_helpers.tpl b/helm-charts/FATE/templates/_helpers.tpl index 88972b68b..8b6bae344 100644 --- a/helm-charts/FATE/templates/_helpers.tpl +++ b/helm-charts/FATE/templates/_helpers.tpl @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + {{/* Helm required labels */}} {{- define "fate.labels" -}} name: {{ .Values.partyName | quote }} diff --git a/helm-charts/FATE/templates/eggroll-config.yaml b/helm-charts/FATE/templates/backends/eggroll/clustermanager/configmap.yaml similarity index 98% rename from helm-charts/FATE/templates/eggroll-config.yaml rename to helm-charts/FATE/templates/backends/eggroll/clustermanager/configmap.yaml index 39a9cb005..f3ab2929b 100644 --- a/helm-charts/FATE/templates/eggroll-config.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/clustermanager/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -9,6 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +{{ if .Values.modules.clustermanager.include }} kind: ConfigMap apiVersion: v1 metadata: @@ -95,3 +96,4 @@ data: eggroll.rollsite.polling.server.enabled=true eggroll.rollsite.polling.concurrency= {{ .Values.modules.rollsite.polling.concurrency | default 50 }} {{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/clustermanager-module.yaml b/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml similarity index 87% rename from helm-charts/FATE/templates/clustermanager-module.yaml rename to helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml index 601f614e6..30071ee2c 100644 --- a/helm-charts/FATE/templates/clustermanager-module.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -79,24 +79,4 @@ spec: - name: eggroll-confs configMap: name: eggroll-config ---- -apiVersion: v1 -kind: Service -metadata: - name: clustermanager - labels: - fateMoudle: clustermanager -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-clustermanager" - port: 4670 - targetPort: 4670 - protocol: TCP - type: {{ .Values.modules.clustermanager.type }} - clusterIP: None - selector: - fateMoudle: clustermanager -{{ include "fate.matchLabels" . | indent 4 }} ---- {{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/clustermanager/service.yaml b/helm-charts/FATE/templates/backends/eggroll/clustermanager/service.yaml new file mode 100644 index 000000000..971a7887f --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/clustermanager/service.yaml @@ -0,0 +1,31 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.clustermanager.include }} +apiVersion: v1 +kind: Service +metadata: + name: clustermanager + labels: + fateMoudle: clustermanager +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-clustermanager" + port: 4670 + targetPort: 4670 + protocol: TCP + type: {{ .Values.modules.clustermanager.type }} + clusterIP: None + selector: + fateMoudle: clustermanager +{{ include "fate.matchLabels" . | indent 4 }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/configmap.yaml b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/configmap.yaml new file mode 100644 index 000000000..afbd7c97d --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/configmap.yaml @@ -0,0 +1,109 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.lbrollsite.include }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: rollsite-config + labels: + fateMoudle: rollsite +{{ include "fate.labels" . | indent 4 }} +data: + route_table.json: | + { + "route_table": { + "default": { + "default": [ + { + "ip": "exchange", + "port": 9390 + } + ] + }, + {{- range .Values.partyList }} + "{{ .partyId }}": { + "default": [ + { + "ip": "{{ .partyIp }}", + "port": {{ .partyPort }} + } + ] + }, + {{- end }} + "{{ .Values.partyId }}": { + "fateflow": [ + { + "ip": "fateflow", + "port": 9360 + } + ], + "default": [ + { + "ip": "rollsite", + "port": 9370 + } + ] + } + }, + "permission": { + "default_allow": true + } + } + nginx.conf: | + + #user nobody; + worker_processes 10; + + #error_log logs/error.log; + #error_log logs/error.log notice; + error_log /dev/stdout info; + + #pid logs/nginx.pid; + + + events { + worker_connections 1024; + } + + + http { + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /dev/stdout main; + + sendfile on; + client_max_body_size {{ .Values.modules.lbrollsite.size }}; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + upstream exchange_services { + least_conn; + {{- range .Values.exchangeList }} + server {{ .ip }}:{{ .port }}; + {{- end }} + } + server { + listen 9390 http2; + location / { + grpc_pass grpc://exchange_services; + } + } + } +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/lb-rollsite-module.yaml b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/deployment.yaml similarity index 51% rename from helm-charts/FATE/templates/lb-rollsite-module.yaml rename to helm-charts/FATE/templates/backends/eggroll/lb-rollsite/deployment.yaml index e49132c84..7f15293c0 100644 --- a/helm-charts/FATE/templates/lb-rollsite-module.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,103 +10,6 @@ # limitations under the License. {{ if .Values.modules.lbrollsite.include }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: rollsite-config - labels: - fateMoudle: rollsite -{{ include "fate.labels" . | indent 4 }} -data: - route_table.json: | - { - "route_table": { - "default": { - "default": [ - { - "ip": "exchange", - "port": 9390 - } - ] - }, - {{- range .Values.partyList }} - "{{ .partyId }}": { - "default": [ - { - "ip": "{{ .partyIp }}", - "port": {{ .partyPort }} - } - ] - }, - {{- end }} - "{{ .Values.partyId }}": { - "fateflow": [ - { - "ip": "fateflow", - "port": 9360 - } - ], - "default": [ - { - "ip": "rollsite", - "port": 9370 - } - ] - } - }, - "permission": { - "default_allow": true - } - } - nginx.conf: | - - #user nobody; - worker_processes 10; - - #error_log logs/error.log; - #error_log logs/error.log notice; - error_log /dev/stdout info; - - #pid logs/nginx.pid; - - - events { - worker_connections 1024; - } - - - http { - include mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /dev/stdout main; - - sendfile on; - client_max_body_size {{ .Values.modules.lbrollsite.size }}; - #tcp_nopush on; - - #keepalive_timeout 0; - keepalive_timeout 65; - - #gzip on; - upstream exchange_services { - least_conn; - {{- range .Values.exchangeList }} - server {{ .ip }}:{{ .port }}; - {{- end }} - } - server { - listen 9390 http2; - location / { - grpc_pass grpc://exchange_services; - } - } - } ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -197,50 +100,4 @@ spec: - name: eggroll-confs configMap: name: eggroll-config ---- -apiVersion: v1 -kind: Service -metadata: - name: rollsite - labels: - fateMoudle: rollsite -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-rollsite" - port: 9370 - targetPort: 9370 - {{- if eq .Values.modules.lbrollsite.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.lbrollsite.nodePort }} - {{- end }} - protocol: TCP - type: {{ .Values.modules.lbrollsite.type }} -{{- if .Values.modules.lbrollsite.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.lbrollsite.loadBalancerIP }}" -{{- end }} - selector: - fateMoudle: rollsite -{{ include "fate.matchLabels" . | indent 4 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: exchange - labels: - fateMoudle: rollsite -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "9390" - port: 9390 - targetPort: 9390 - # {{- if eq .Values.modules.lbrollsite.type "NodePort" "LoadBalancer" }} - # nodePort: {{ .Values.modules.lbrollsite.nodePort }} - # {{- end }} - protocol: TCP - type: {{ .Values.modules.lbrollsite.type }} - selector: - fateMoudle: rollsite -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/service.yaml b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/service.yaml new file mode 100644 index 000000000..d732667c5 --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/lb-rollsite/service.yaml @@ -0,0 +1,58 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.lbrollsite.include }} +apiVersion: v1 +kind: Service +metadata: + name: rollsite + labels: + fateMoudle: rollsite +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-rollsite" + port: 9370 + targetPort: 9370 + {{- if eq .Values.modules.lbrollsite.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.lbrollsite.nodePort }} + {{- end }} + protocol: TCP + type: {{ .Values.modules.lbrollsite.type }} +{{- if .Values.modules.lbrollsite.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.lbrollsite.loadBalancerIP }}" +{{- end }} + selector: + fateMoudle: rollsite +{{ include "fate.matchLabels" . | indent 4 }} +--- +apiVersion: v1 +kind: Service +metadata: + name: exchange + labels: + fateMoudle: rollsite +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "9390" + port: 9390 + targetPort: 9390 + # {{- if eq .Values.modules.lbrollsite.type "NodePort" "LoadBalancer" }} + # nodePort: {{ .Values.modules.lbrollsite.nodePort }} + # {{- end }} + protocol: TCP + type: {{ .Values.modules.lbrollsite.type }} + selector: + fateMoudle: rollsite +{{ include "fate.matchLabels" . | indent 4 }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/nodemanager/configmap.yaml b/helm-charts/FATE/templates/backends/eggroll/nodemanager/configmap.yaml new file mode 100644 index 000000000..b1d479f0b --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/nodemanager/configmap.yaml @@ -0,0 +1,105 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.nodemanager.include }} +{{- $root := . -}} +{{- range $nodemanager := .Values.modules.nodemanager.list }} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: {{ $nodemanager.name }}-config + labels: + fateMoudle: {{ $nodemanager.name }} +{{ include "fate.labels" $root | indent 4 }} +data: + eggroll.properties: | + [eggroll] + eggroll.resourcemanager.clustermanager.jdbc.driver.class.name=com.mysql.cj.jdbc.Driver + eggroll.resourcemanager.clustermanager.jdbc.url=jdbc:mysql://{{ $root.Values.modules.mysql.ip }}:{{ $root.Values.modules.mysql.port }}/{{ $root.Values.modules.mysql.mysql_database }}?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true + eggroll.resourcemanager.clustermanager.jdbc.username={{ $root.Values.modules.mysql.mysql_user }} + eggroll.resourcemanager.clustermanager.jdbc.password={{ $root.Values.modules.mysql.mysql_password }} + + eggroll.data.dir=data/ + eggroll.logs.dir=logs/ + eggroll.resourcemanager.clustermanager.host=clustermanager + eggroll.resourcemanager.clustermanager.port=4670 + eggroll.resourcemanager.nodemanager.port=4671 + eggroll.resourcemanager.process.tag={{ $root.Values.partyId }} + + eggroll.bootstrap.root.script=bin/eggroll_boot.sh + + eggroll.resourcemanager.bootstrap.egg_pair.exepath=bin/roll_pair/egg_pair_bootstrap.sh + eggroll.resourcemanager.bootstrap.egg_pair.venv= + eggroll.resourcemanager.bootstrap.egg_pair.pythonpath=/data/projects/fate/python:/data/projects/fate/eggroll/python + eggroll.resourcemanager.bootstrap.egg_pair.filepath=python/eggroll/roll_pair/egg_pair.py + eggroll.resourcemanager.bootstrap.egg_pair.ld_library_path= + + eggroll.resourcemanager.bootstrap.egg_frame.exepath=bin/roll_pair/roll_pair_master_bootstrap.sh + eggroll.resourcemanager.bootstrap.egg_frame.javahome=/usr/lib/jvm/java-1.8.0-openjdk + eggroll.resourcemanager.bootstrap.egg_frame.classpath=conf/:lib/* + eggroll.resourcemanager.bootstrap.egg_frame.mainclass=com.webank.eggroll.rollframe.EggFrameBootstrap + eggroll.resourcemanager.bootstrap.egg_frame.jvm.options= + + eggroll.core.grpc.channel.keepalive.timeout.sec=20 + + # roll_frame + arrow.enable_unsafe_memory_access=true + + # hadoop + hadoop.fs.defaultFS=file:/// + + # hadoop HA mode + hadoop.dfs.nameservices= + hadoop.dfs.namenode.rpc-address.nn1= + hadoop.dfs.namenode.rpc-address.nn2= + + # session + eggroll.session.processors.per.node={{ $nodemanager.sessionProcessorsPerNode }} + eggroll.session.start.timeout.ms=180000 + + # rollpair + eggroll.rollpair.transferpair.sendbuf.size=250000 + + # rollsite + eggroll.rollsite.coordinator={{ $root.Values.partyName }} + eggroll.rollsite.host=rollsite + eggroll.rollsite.port=9370 + eggroll.rollsite.party.id={{ $root.Values.partyId }} + eggroll.rollsite.route.table.path=conf/route_table/route_table.json + eggroll.rollsite.route.table.key= + eggroll.rollsite.route.table.whitelist=127.0.0.1 + eggroll.rollsite.jvm.options=-XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:logs/eggroll/rollsite.gc.log + + eggroll.rollsite.push.max.retry=3 + eggroll.rollsite.push.long.retry=2 + eggroll.rollsite.push.batches.per.stream=10 + eggroll.rollsite.adapter.sendbuf.size=100000 + fluent.conf: | + + @type tail + path /data/projects/fate/eggroll/logs/*/*.* + exclude_path ["/data/projects/fate/eggroll/logs/eggroll/*", "/data/projects/fate/eggroll/logs/log.pos"] + pos_file /data/projects/fate/eggroll/logs/log.pos + tag eggroll + multiline_flush_interval 2s + refresh_interval 5s + + @type none + + + + + @type stdout + + +{{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml b/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml new file mode 100644 index 000000000..cd5268a21 --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml @@ -0,0 +1,120 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.nodemanager.include }} +{{- $root := . -}} +{{- range $nodemanager := .Values.modules.nodemanager.list }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ $nodemanager.name }} + labels: + fateMoudle: {{ $nodemanager.name }} + app: nodemanager +{{ include "fate.labels" $root | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: {{ $nodemanager.name }} +{{ include "fate.matchLabels" $root | indent 6 }} + template: + metadata: + labels: + fateMoudle: {{ $nodemanager.name }} + app: nodemanager +{{ include "fate.labels" $root | indent 8 }} + spec: + containers: + - name: {{ $nodemanager.name }}-eggrollpair + {{- if $root.Values.image.isThridParty }} + image: {{ $root.Values.image.registry }}/fluentd:v1.12 + {{- else }} + image: fluent/fluentd:v1.12 + {{- end }} + volumeMounts: + - name: eggroll-log + mountPath: /data/projects/fate/eggroll/logs/ + - name: fluentd-conf + subPath: fluent.conf + mountPath: /fluentd/etc/fluent.conf + - image: {{ $root.Values.image.registry }}/eggroll:{{ $root.Values.image.tag }} + imagePullPolicy: {{ $root.Values.image.pullPolicy }} + name: {{ $nodemanager.name }} + command: + - bash + - -c + - | + set -x + mkdir -p /data/projects/fate/eggroll/logs/eggroll/ + touch /data/projects/fate/eggroll/logs/eggroll/eggroll-audit.log + ln -sf /dev/stdout /data/projects/fate/eggroll/logs/eggroll/eggroll-audit.log + touch /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.log + ln -sf /dev/stdout /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.log + touch /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.err.log + ln -sf /dev/stderr /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.err.log + /tini -- java -Dlog4j.configurationFile=$${EGGROLL_HOME}/conf/log4j2.properties -cp $${EGGROLL_HOME}/lib/*: com.webank.eggroll.core.Bootstrap --bootstraps com.webank.eggroll.core.resourcemanager.NodeManagerBootstrap -c $${EGGROLL_HOME}/conf/eggroll.properties -p 4671 -s 'EGGROLL_DEAMON' + ports: + - containerPort: 4671 + volumeMounts: + - name: eggroll-log + mountPath: /data/projects/fate/eggroll/logs/ + - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties + name: nodemanager-confs + subPath: eggroll.properties + - mountPath: /data/projects/fate/fate/conf/ + name: python-confs + - name: data-dir + mountPath: /data/projects/fate/eggroll/data + subPath: {{ $nodemanager.subPath }} + {{- with $nodemanager.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with $nodemanager.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with $nodemanager.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with $root.Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" $root }} + restartPolicy: Always + volumes: + - name: eggroll-log + emptyDir: {} + - name: fluentd-conf + configMap: + name: {{ $nodemanager.name }}-config + - name: nodemanager-confs + configMap: + name: {{ $nodemanager.name }}-config + - name: python-confs + configMap: + name: python-config + {{- if not $root.Values.persistence.enabled }} + - name: data-dir + emptyDir: {} + {{- else }} + - name: data-dir + persistentVolumeClaim: + claimName: {{ $nodemanager.existingClaim | default (printf "%s-data" $nodemanager.name) }} + {{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/nodemanager/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/backends/eggroll/nodemanager/persistentvolumeclaim.yaml new file mode 100644 index 000000000..82838f51e --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/nodemanager/persistentvolumeclaim.yaml @@ -0,0 +1,40 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.nodemanager.include }} +{{- $root := . -}} +{{- range $nodemanager := .Values.modules.nodemanager.list }} +--- +{{- if and $root.Values.persistence.enabled (not $nodemanager.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ $nodemanager.name }}-data + labels: + fateMoudle: {{ $nodemanager.name }} +{{ include "fate.labels" $root | indent 4 }} +spec: + accessModes: + - {{ $nodemanager.accessMode }} + resources: + requests: + storage: {{ $nodemanager.size }} + {{- if $nodemanager.storageClass }} + {{- if eq "-" $nodemanager.storageClass }} + storageClassName: "" + {{- else }} + storageClassName: {{ $nodemanager.storageClass }} + {{- end }} + {{- end }} +{{- end }} + +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/nodemanager/service.yaml b/helm-charts/FATE/templates/backends/eggroll/nodemanager/service.yaml new file mode 100644 index 000000000..a49d3d83d --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/nodemanager/service.yaml @@ -0,0 +1,35 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.nodemanager.include }} +{{- $root := . -}} +{{- range $nodemanager := .Values.modules.nodemanager.list }} +--- +apiVersion: v1 +kind: Service +metadata: + labels: + fateMoudle: {{ $nodemanager.name }} +{{ include "fate.labels" $root | indent 4 }} + name: {{ $nodemanager.name }} +spec: + ports: + - name: "tcp-nodemanager" + port: 4671 + targetPort: 4671 + protocol: TCP + clusterIP: None + selector: + fateMoudle: {{ $nodemanager.name }} +{{ include "fate.matchLabels" $root | indent 4 }} + +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/rollsite/configmap.yaml b/helm-charts/FATE/templates/backends/eggroll/rollsite/configmap.yaml new file mode 100644 index 000000000..f25ba0bec --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/rollsite/configmap.yaml @@ -0,0 +1,94 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.rollsite.include }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: rollsite-config + labels: + fateMoudle: rollsite +{{ include "fate.labels" . | indent 4 }} +data: + route_table.json: | + { + "route_table": { + "default": { + "default": [ + { + {{- if .Values.exchange }} + "ip": "{{ .Values.exchange.partyIp }}", + "port": {{ .Values.exchange.partyPort }} + {{- else }} + + {{- if and .Values.modules.rollsite.polling.enabled ( eq (print .Values.modules.rollsite.polling.type) "client" ) }} + + {{- with .Values.modules.rollsite.polling.server }} + "ip": "{{ .ip }}", + "port": {{ .port }} + {{- end }} + + {{- else }} + "ip": "rollsite", + "port": 9370 + {{- end }} + + {{- end }} + } + ] + }, + {{- range .Values.partyList }} + "{{ .partyId }}": { + "default": [ + { + "ip": "{{ .partyIp }}", + "port": {{ .partyPort }} + } + ] + }, + {{- end }} + + {{- if and .Values.modules.rollsite.polling.enabled ( eq (print .Values.modules.rollsite.polling.type) "server" ) }} + + {{- range .Values.modules.rollsite.polling.clientList}} + "{{ .partID }}": + { + "default": [ + { + "port": -1, + "ip": "", + "is_polling": true + } + ] + }, + {{- end }} + + {{- end }} + "{{ .Values.partyId }}": { + "fateflow": [ + { + "ip": "fateflow", + "port": 9360 + } + ], + "default": [ + { + "ip": "rollsite", + "port": 9370 + } + ] + } + }, + "permission": { + "default_allow": true + } + } +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/rollsite-module.yaml b/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml similarity index 50% rename from helm-charts/FATE/templates/rollsite-module.yaml rename to helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml index d429a85e3..89531dad0 100644 --- a/helm-charts/FATE/templates/rollsite-module.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,88 +10,6 @@ # limitations under the License. {{ if .Values.modules.rollsite.include }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: rollsite-config - labels: - fateMoudle: rollsite -{{ include "fate.labels" . | indent 4 }} -data: - route_table.json: | - { - "route_table": { - "default": { - "default": [ - { - {{- if .Values.exchange }} - "ip": "{{ .Values.exchange.partyIp }}", - "port": {{ .Values.exchange.partyPort }} - {{- else }} - - {{- if and .Values.modules.rollsite.polling.enabled ( eq (print .Values.modules.rollsite.polling.type) "client" ) }} - - {{- with .Values.modules.rollsite.polling.server }} - "ip": "{{ .ip }}", - "port": {{ .port }} - {{- end }} - - {{- else }} - "ip": "rollsite", - "port": 9370 - {{- end }} - - {{- end }} - } - ] - }, - {{- range .Values.partyList }} - "{{ .partyId }}": { - "default": [ - { - "ip": "{{ .partyIp }}", - "port": {{ .partyPort }} - } - ] - }, - {{- end }} - - {{- if and .Values.modules.rollsite.polling.enabled ( eq (print .Values.modules.rollsite.polling.type) "server" ) }} - - {{- range .Values.modules.rollsite.polling.clientList}} - "{{ .partID }}": - { - "default": [ - { - "port": -1, - "ip": "", - "is_polling": true - } - ] - }, - {{- end }} - - {{- end }} - "{{ .Values.partyId }}": { - "fateflow": [ - { - "ip": "fateflow", - "port": 9360 - } - ], - "default": [ - { - "ip": "rollsite", - "port": 9370 - } - ] - } - }, - "permission": { - "default_allow": true - } - } ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -170,29 +88,4 @@ spec: - name: eggroll-confs configMap: name: eggroll-config ---- -apiVersion: v1 -kind: Service -metadata: - name: rollsite - labels: - fateMoudle: rollsite -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-rollsite" - port: 9370 - targetPort: 9370 - {{- if eq .Values.modules.rollsite.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.rollsite.nodePort }} - {{- end }} - protocol: TCP - type: {{ .Values.modules.rollsite.type }} - {{- if .Values.modules.rollsite.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.rollsite.loadBalancerIP }}" - {{- end }} - selector: - fateMoudle: rollsite -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/eggroll/rollsite/service.yaml b/helm-charts/FATE/templates/backends/eggroll/rollsite/service.yaml new file mode 100644 index 000000000..0216d4dd2 --- /dev/null +++ b/helm-charts/FATE/templates/backends/eggroll/rollsite/service.yaml @@ -0,0 +1,36 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.rollsite.include }} +apiVersion: v1 +kind: Service +metadata: + name: rollsite + labels: + fateMoudle: rollsite +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-rollsite" + port: 9370 + targetPort: 9370 + {{- if eq .Values.modules.rollsite.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.rollsite.nodePort }} + {{- end }} + protocol: TCP + type: {{ .Values.modules.rollsite.type }} + {{- if .Values.modules.rollsite.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.rollsite.loadBalancerIP }}" + {{- end }} + selector: + fateMoudle: rollsite +{{ include "fate.matchLabels" . | indent 4 }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/hdfs-dn.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/configmap.yaml similarity index 53% rename from helm-charts/FATE/templates/hdfs-dn.yaml rename to helm-charts/FATE/templates/backends/spark/hdfs/configmap.yaml index 4a3c9c584..2468b224d 100644 --- a/helm-charts/FATE/templates/hdfs-dn.yaml +++ b/helm-charts/FATE/templates/backends/spark/hdfs/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,9 +13,25 @@ kind: ConfigMap apiVersion: v1 metadata: - name: datanode-env + name: namenode-config labels: - fateMoudle: datanode + fateMoudle: namenode +{{ include "fate.labels" . | indent 4 }} +data: + core-site.xml: | + + + fs.default.name + hdfs://0.0.0.0:9000 + + +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: namenode-env + labels: + fateMoudle: namenode {{ include "fate.labels" . | indent 4 }} data: CORE_CONF_fs_defaultFS: "hdfs://namenode:9000" @@ -59,117 +75,52 @@ data: MAPRED_CONF_mapreduce_map_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ MAPRED_CONF_mapreduce_reduce_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ --- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: datanode - labels: - fateMoudle: datanode -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: datanode -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: datanode -{{ include "fate.labels" . | indent 8 }} - spec: - containers: - - name: datanode - image: {{ .Values.image.registry }}/hadoop-datanode:2.0.0-hadoop2.7.4-java8 - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: SERVICE_PRECONDITION - value: "namenode:9000" - envFrom: - - configMapRef: - name: datanode-env - ports: - - containerPort: 9000 - - containerPort: 9870 - - containerPort: 50070 - volumeMounts: - - name: dfs - mountPath: /hadoop/dfs/data - {{- with .Values.modules.hdfs.datanode.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.hdfs.datanode.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.hdfs.datanode.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - restartPolicy: Always - volumes: - - name: dfs - {{ if .Values.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ .Values.modules.hdfs.datanode.existingClaim | default "datanode-data" }} - {{ else }} - emptyDir: {} - {{ end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: datanode - labels: - fateMoudle: datanode -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-9000" - port: 9000 - targetPort: 9000 - protocol: TCP - - name: "tcp-9870" - port: 9870 - targetPort: 9870 - protocol: TCP - - name: "tcp-50070" - port: 50070 - targetPort: 50070 - protocol: TCP - type: {{ .Values.modules.hdfs.datanode.type }} - selector: - fateMoudle: datanode -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ if and .Values.persistence.enabled (not .Values.modules.hdfs.datanode.existingClaim) }} -kind: PersistentVolumeClaim +kind: ConfigMap apiVersion: v1 metadata: - name: datanode-data + name: datanode-env labels: fateMoudle: datanode {{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.hdfs.datanode.accessMode }} - resources: - requests: - storage: {{ .Values.modules.hdfs.datanode.size }} - {{ if .Values.modules.hdfs.datanode.storageClass }} - {{ if eq "-" .Values.modules.hdfs.datanode.storageClass }} - storageClassName: "" - {{ else }} - storageClassName: {{ .Values.modules.hdfs.datanode.storageClass }} - {{ end }} - {{ end }} -{{ end }} -{{ end }} +data: + CORE_CONF_fs_defaultFS: "hdfs://namenode:9000" + CORE_CONF_hadoop_http_staticuser_user: "root" + CORE_CONF_hadoop_proxyuser_hue_hosts: "*" + CORE_CONF_hadoop_proxyuser_hue_groups: "*" + CORE_CONF_io_compression_codecs: org.apache.hadoop.io.compress.SnappyCodec + HDFS_CONF_dfs_webhdfs_enabled: 'true' + HDFS_CONF_dfs_permissions_enabled: 'false' + HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check: 'false' + YARN_CONF_yarn_log___aggregation___enable: 'true' + YARN_CONF_yarn_log_server_url: "http://historyserver:8188/applicationhistory/logs/" + YARN_CONF_yarn_resourcemanager_recovery_enabled: 'true' + YARN_CONF_yarn_resourcemanager_store_class: org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore + YARN_CONF_yarn_resourcemanager_scheduler_class: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler + YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___mb: '8192' + YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___vcores: '4' + YARN_CONF_yarn_resourcemanager_fs_state___store_uri: /rmstate + YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled: 'true' + YARN_CONF_yarn_resourcemanager_hostname: resourcemanager + YARN_CONF_yarn_resourcemanager_address: resourcemanager:8032 + YARN_CONF_yarn_resourcemanager_scheduler_address: resourcemanager:8030 + YARN_CONF_yarn_resourcemanager_resource__tracker_address: resourcemanager:8031 + YARN_CONF_yarn_timeline___service_enabled: 'true' + YARN_CONF_yarn_timeline___service_generic___application___history_enabled: 'true' + YARN_CONF_yarn_timeline___service_hostname: historyserver + YARN_CONF_mapreduce_map_output_compress: 'true' + YARN_CONF_mapred_map_output_compress_codec: org.apache.hadoopac.io.compress.SnappyCodec + YARN_CONF_yarn_nodemanager_resource_memory___mb: '16384' + YARN_CONF_yarn_nodemanager_resource_cpu___vcores: '8' + YARN_CONF_yarn_nodemanager_disk___health___checker_max___disk___utilization___per___disk___percentage: '98.5' + YARN_CONF_yarn_nodemanager_remote___app___log___dir: /app-logs + YARN_CONF_yarn_nodemanager_aux___services: mapreduce_shuffle + MAPRED_CONF_mapreduce_framework_name: yarn + MAPRED_CONF_mapred_child_java_opts: '-Xmx4096m' + MAPRED_CONF_mapreduce_map_memory_mb: '4096' + MAPRED_CONF_mapreduce_reduce_memory_mb: '8192' + MAPRED_CONF_mapreduce_map_java_opts: '-Xmx3072m' + MAPRED_CONF_mapreduce_reduce_java_opts: '-Xmx6144m' + MAPRED_CONF_yarn_app_mapreduce_am_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ + MAPRED_CONF_mapreduce_map_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ + MAPRED_CONF_mapreduce_reduce_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml new file mode 100644 index 000000000..9c52b2507 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml @@ -0,0 +1,157 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.hdfs.include }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: namenode + labels: + fateMoudle: namenode +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: namenode +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: namenode +{{ include "fate.labels" . | indent 8 }} + spec: + {{ if .Values.persistence.enabled }} + initContainers: + - name: delete-lost-found + image: busybox + command: ["sh", "-c", "rm -rf /hadoop/dfs/name/lost+found"] + volumeMounts: + - name: dfs + mountPath: /hadoop/dfs/name + {{ end }} + containers: + - name: namenode + image: {{ .Values.image.registry }}/hadoop-namenode:2.0.0-hadoop2.7.4-java8 + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: CLUSTER_NAME + value: fate + envFrom: + - configMapRef: + name: namenode-env + ports: + - containerPort: 9000 + - containerPort: 9870 + - containerPort: 50070 + volumeMounts: + - mountPath: /etc/hadoop/core-site.xml + subPath: core-site.xml + name: namenode-confs + - name: dfs + mountPath: /hadoop/dfs/name + {{- with .Values.modules.hdfs.namenode.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.hdfs.namenode.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.hdfs.namenode.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + restartPolicy: Always + volumes: + - name: namenode-confs + configMap: + name: namenode-config + - name: dfs + {{ if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.modules.hdfs.namenode.existingClaim | default "namenode-data" }} + {{ else }} + emptyDir: {} + {{ end }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: datanode + labels: + fateMoudle: datanode +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: datanode +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: datanode +{{ include "fate.labels" . | indent 8 }} + spec: + containers: + - name: datanode + image: {{ .Values.image.registry }}/hadoop-datanode:2.0.0-hadoop2.7.4-java8 + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: SERVICE_PRECONDITION + value: "namenode:9000" + envFrom: + - configMapRef: + name: datanode-env + ports: + - containerPort: 9000 + - containerPort: 9870 + - containerPort: 50070 + volumeMounts: + - name: dfs + mountPath: /hadoop/dfs/data + {{- with .Values.modules.hdfs.datanode.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.hdfs.datanode.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.hdfs.datanode.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + restartPolicy: Always + volumes: + - name: dfs + {{ if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.modules.hdfs.datanode.existingClaim | default "datanode-data" }} + {{ else }} + emptyDir: {} + {{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/hdfs/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/persistentvolumeclaim.yaml new file mode 100644 index 000000000..5284bf503 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/hdfs/persistentvolumeclaim.yaml @@ -0,0 +1,59 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.hdfs.include }} +{{ if and .Values.persistence.enabled (not .Values.modules.hdfs.namenode.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: namenode-data + labels: + fateMoudle: namenode +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.hdfs.namenode.accessMode }} + resources: + requests: + storage: {{ .Values.modules.hdfs.namenode.size }} + {{ if .Values.modules.hdfs.namenode.storageClass }} + {{ if eq "-" .Values.modules.hdfs.namenode.storageClass }} + storageClassName: "" + {{ else }} + storageClassName: {{ .Values.modules.hdfs.namenode.storageClass }} + {{ end }} + {{ end }} +{{ end }} +--- +{{ if and .Values.persistence.enabled (not .Values.modules.hdfs.datanode.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: datanode-data + labels: + fateMoudle: datanode +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.hdfs.datanode.accessMode }} + resources: + requests: + storage: {{ .Values.modules.hdfs.datanode.size }} + {{ if .Values.modules.hdfs.datanode.storageClass }} + {{ if eq "-" .Values.modules.hdfs.datanode.storageClass }} + storageClassName: "" + {{ else }} + storageClassName: {{ .Values.modules.hdfs.datanode.storageClass }} + {{ end }} + {{ end }} +{{ end }} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml new file mode 100644 index 000000000..d3c8ec8ec --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml @@ -0,0 +1,68 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.hdfs.include }} +apiVersion: v1 +kind: Service +metadata: + name: datanode + labels: + fateMoudle: datanode +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-9000" + port: 9000 + targetPort: 9000 + protocol: TCP + - name: "tcp-9870" + port: 9870 + targetPort: 9870 + protocol: TCP + - name: "tcp-50070" + port: 50070 + targetPort: 50070 + protocol: TCP + type: {{ .Values.modules.hdfs.datanode.type }} + selector: + fateMoudle: datanode +{{ include "fate.matchLabels" . | indent 4 }} +--- +apiVersion: v1 +kind: Service +metadata: + name: namenode + labels: + fateMoudle: namenode +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-9000" + port: 9000 + targetPort: 9000 + protocol: TCP + {{- if eq .Values.modules.hdfs.namenode.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.hdfs.namenode.nodePort }} + {{- end }} + - name: "tcp-9870" + port: 9870 + targetPort: 9870 + protocol: TCP + - name: "tcp-50070" + port: 50070 + targetPort: 50070 + protocol: TCP + type: {{ .Values.modules.hdfs.namenode.type }} + selector: + fateMoudle: namenode +{{ include "fate.matchLabels" . | indent 4 }} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/nginx.yaml b/helm-charts/FATE/templates/backends/spark/nginx/configmap.yaml similarity index 54% rename from helm-charts/FATE/templates/nginx.yaml rename to helm-charts/FATE/templates/backends/spark/nginx/configmap.yaml index c5d69e5ef..eeb4716df 100644 --- a/helm-charts/FATE/templates/nginx.yaml +++ b/helm-charts/FATE/templates/backends/spark/nginx/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -107,102 +107,4 @@ data: } } ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx - labels: - fateMoudle: nginx -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: nginx -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: nginx -{{ include "fate.labels" . | indent 8 }} - spec: - containers: - - name: nginx - image: {{ .Values.image.registry }}/nginx:{{ .Values.image.tag }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: - - /bin/bash - - -c - - | - sed -i "s#conf/route_table.yaml#conf/modifiable/route_table.yaml#g" nginx/lua/route_table.lua; - echo "change path of route_table.yaml success!" - openresty -g 'daemon off;' - ports: - - containerPort: 9300 - - containerPort: 9310 - volumeMounts: - - mountPath: /data/projects/fate/proxy/nginx/conf/nginx.conf - name: nginx-confs - subPath: nginx.conf - - mountPath: /data/projects/fate/proxy/nginx/conf/modifiable/ - name: nginx-confs - {{- with .Values.modules.nginx.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.nginx.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.nginx.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - restartPolicy: Always - volumes: - - name: nginx-confs - configMap: - name: nginx-config ---- -apiVersion: v1 -kind: Service -metadata: - name: nginx - labels: - fateMoudle: nginx -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "http" - port: 9300 - targetPort: 9300 - {{- if eq .Values.modules.nginx.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.nginx.httpNodePort }} - {{- end }} - protocol: TCP - - name: "grpc" - port: 9310 - targetPort: 9310 - {{- if eq .Values.modules.nginx.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.nginx.grpcNodePort }} - {{- end }} - protocol: TCP - type: {{ .Values.modules.nginx.type }} - - {{- if .Values.modules.nginx.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.nginx.loadBalancerIP }}" - {{- end }} - - selector: - fateMoudle: nginx -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml b/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml new file mode 100644 index 000000000..230c5e3a4 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml @@ -0,0 +1,76 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.nginx.include }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx + labels: + fateMoudle: nginx +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: nginx +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: nginx +{{ include "fate.labels" . | indent 8 }} + spec: + containers: + - name: nginx + image: {{ .Values.image.registry }}/nginx:{{ .Values.image.tag }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/bash + - -c + - | + sed -i "s#conf/route_table.yaml#conf/modifiable/route_table.yaml#g" nginx/lua/route_table.lua; + echo "change path of route_table.yaml success!" + openresty -g 'daemon off;' + ports: + - containerPort: 9300 + - containerPort: 9310 + volumeMounts: + - mountPath: /data/projects/fate/proxy/nginx/conf/nginx.conf + name: nginx-confs + subPath: nginx.conf + - mountPath: /data/projects/fate/proxy/nginx/conf/modifiable/ + name: nginx-confs + {{- with .Values.modules.nginx.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.nginx.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.nginx.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + restartPolicy: Always + volumes: + - name: nginx-confs + configMap: + name: nginx-config +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/nginx/service.yaml b/helm-charts/FATE/templates/backends/spark/nginx/service.yaml new file mode 100644 index 000000000..a931405b4 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/nginx/service.yaml @@ -0,0 +1,45 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.nginx.include }} +apiVersion: v1 +kind: Service +metadata: + name: nginx + labels: + fateMoudle: nginx +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "http" + port: 9300 + targetPort: 9300 + {{- if eq .Values.modules.nginx.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.nginx.httpNodePort }} + {{- end }} + protocol: TCP + - name: "grpc" + port: 9310 + targetPort: 9310 + {{- if eq .Values.modules.nginx.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.nginx.grpcNodePort }} + {{- end }} + protocol: TCP + type: {{ .Values.modules.nginx.type }} + + {{- if .Values.modules.nginx.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.nginx.loadBalancerIP }}" + {{- end }} + + selector: + fateMoudle: nginx +{{ include "fate.matchLabels" . | indent 4 }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/pulsar.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/configmap.yaml similarity index 90% rename from helm-charts/FATE/templates/pulsar.yaml rename to helm-charts/FATE/templates/backends/spark/pulsar/configmap.yaml index 293d5fc68..62541c95d 100644 --- a/helm-charts/FATE/templates/pulsar.yaml +++ b/helm-charts/FATE/templates/backends/spark/pulsar/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -375,115 +375,115 @@ data: # Whether internal client use KeyStore type to authenticate with Pulsar brokers brokerClientTlsEnabledWithKeyStore=false - + # The TLS Provider used by internal client to authenticate with other Pulsar brokers brokerClientSslProvider= - + # TLS TrustStore type configuration for internal client: JKS, PKCS12 # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStoreType=JKS - + # TLS TrustStore path for internal client # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStore= - + # TLS TrustStore password for internal client, # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStorePassword= - + # Specify the tls cipher the internal client will use to negotiate during TLS Handshake # (a comma-separated list of ciphers) # e.g. [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]. # used by the internal client to authenticate with Pulsar brokers brokerClientTlsCiphers= - + # Specify the tls protocols the broker will use to negotiate during TLS handshake # (a comma-separated list of protocol names). # e.g. [TLSv1.2, TLSv1.1, TLSv1] # used by the internal client to authenticate with Pulsar brokers brokerClientTlsProtocols= - + # Enable or disable system topic systemTopicEnabled=false - + # Enable or disable topic level policies, topic level policies depends on the system topic # Please enable the system topic first. topicLevelPoliciesEnabled=false - + # If a topic remains fenced for this number of seconds, it will be closed forcefully. # If it is set to 0 or a negative number, the fenced topic will not be closed. topicFencingTimeoutSeconds=0 - + ### --- Authentication --- ### # Role names that are treated as "proxy roles". If the broker sees a request with #role as proxyRoles - it will demand to see a valid original principal. proxyRoles= - + # If this flag is set then the broker authenticates the original Auth data # else it just accepts the originalPrincipal and authorizes it (if required). authenticateOriginalAuthData=false - + # Enable authentication authenticationEnabled=false - + # Autentication provider name list, which is comma separated list of class names authenticationProviders= - + # Enforce authorization authorizationEnabled=false - + # Authorization provider fully qualified class-name authorizationProvider=org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider - + # Allow wildcard matching in authorization # (wildcard matching only applicable if wildcard-char: # * presents at first or last position eg: *.pulsar.service, pulsar.service.*) authorizationAllowWildcardsMatching=false - + # Role names that are treated as "super-user", meaning they will be able to do all admin # operations and publish/consume from all topics superUserRoles= - + # Authentication settings of the broker itself. Used when the broker connects to other brokers, # either in same or other clusters brokerClientAuthenticationPlugin= brokerClientAuthenticationParameters= - + # Supported Athenz provider domain names(comma separated) for authentication athenzDomainNames= - + # When this parameter is not empty, unauthenticated users perform as anonymousUserRole anonymousUserRole= - + # The token "claim" that will be interpreted as the authentication "role" or "principal" by AuthenticationProviderToken (defaults to "sub" if blank) tokenAuthClaim= - + # The token audience "claim" name, e.g. "aud", that will be used to get the audience from token. # If not set, audience will not be verified. tokenAudienceClaim= - + # The token audience stands for this broker. The field `tokenAudienceClaim` of a valid token, need contains this. tokenAudience= - + ### --- BookKeeper Client --- ### - + # Authentication plugin to use when connecting to bookies bookkeeperClientAuthenticationPlugin= - + # BookKeeper auth plugin implementatation specifics parameters name and values bookkeeperClientAuthenticationParametersName= bookkeeperClientAuthenticationParameters= - + # Timeout for BK add / read operations bookkeeperClientTimeoutInSeconds=30 - + # Speculative reads are initiated if a read request doesn't complete within a certain time # Using a value of 0, is disabling the speculative reads bookkeeperClientSpeculativeReadTimeoutInMillis=0 - + # Number of channels per bookie bookkeeperNumberOfChannelsPerBookie=16 - + # Enable bookies health check. Bookies that have more than the configured number of failure within # the interval will be quarantined for some time. During this period, new ledgers won't be created # on these bookies @@ -491,159 +491,159 @@ data: bookkeeperClientHealthCheckIntervalSeconds=60 bookkeeperClientHealthCheckErrorThresholdPerInterval=5 bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800 - + #bookie quarantine ratio to avoid all clients quarantine the high pressure bookie servers at the same time bookkeeperClientQuarantineRatio=1.0 - + # Enable rack-aware bookie selection policy. BK will chose bookies from different racks when # forming a new bookie ensemble # This parameter related to ensemblePlacementPolicy in conf/bookkeeper.conf, if enabled, ensemblePlacementPolicy # should be set to org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy bookkeeperClientRackawarePolicyEnabled=true - + # Enable region-aware bookie selection policy. BK will chose bookies from # different regions and racks when forming a new bookie ensemble. # If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored # This parameter related to ensemblePlacementPolicy in conf/bookkeeper.conf, if enabled, ensemblePlacementPolicy # should be set to org.apache.bookkeeper.client.RegionAwareEnsemblePlacementPolicy bookkeeperClientRegionawarePolicyEnabled=false - + # Minimum number of racks per write quorum. BK rack-aware bookie selection policy will try to # get bookies from at least 'bookkeeperClientMinNumRacksPerWriteQuorum' racks for a write quorum. bookkeeperClientMinNumRacksPerWriteQuorum=1 - + # Enforces rack-aware bookie selection policy to pick bookies from 'bookkeeperClientMinNumRacksPerWriteQuorum' # racks for a writeQuorum. # If BK can't find bookie then it would throw BKNotEnoughBookiesException instead of picking random one. bookkeeperClientEnforceMinNumRacksPerWriteQuorum=false - + # Enable/disable reordering read sequence on reading entries. bookkeeperClientReorderReadSequenceEnabled=false - + # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie # outside the specified groups will not be used by the broker bookkeeperClientIsolationGroups= - + # Enable bookie secondary-isolation group if bookkeeperClientIsolationGroups doesn't # have enough bookie available. bookkeeperClientSecondaryIsolationGroups= - + # Minimum bookies that should be available as part of bookkeeperClientIsolationGroups # else broker will include bookkeeperClientSecondaryIsolationGroups bookies in isolated list. bookkeeperClientMinAvailableBookiesInIsolationGroups= - + # Set the client security provider factory class name. # Default: org.apache.bookkeeper.tls.TLSContextFactory bookkeeperTLSProviderFactoryClass=org.apache.bookkeeper.tls.TLSContextFactory - + # Enable tls authentication with bookie bookkeeperTLSClientAuthentication=false - + # Supported type: PEM, JKS, PKCS12. Default value: PEM bookkeeperTLSKeyFileType=PEM - + #Supported type: PEM, JKS, PKCS12. Default value: PEM bookkeeperTLSTrustCertTypes=PEM - + # Path to file containing keystore password, if the client keystore is password protected. bookkeeperTLSKeyStorePasswordPath= - + # Path to file containing truststore password, if the client truststore is password protected. bookkeeperTLSTrustStorePasswordPath= - + # Path for the TLS private key file bookkeeperTLSKeyFilePath= - + # Path for the TLS certificate file bookkeeperTLSCertificateFilePath= - + # Path for the trusted TLS certificate file bookkeeperTLSTrustCertsFilePath=/opt/pulsar/certs/ca.cert.pem - + # Enable/disable disk weight based placement. Default is false bookkeeperDiskWeightBasedPlacementEnabled=false - + # Set the interval to check the need for sending an explicit LAC # A value of '0' disables sending any explicit LACs. Default is 0. bookkeeperExplicitLacIntervalInMills=0 - + # Use older Bookkeeper wire protocol with bookie bookkeeperUseV2WireProtocol=true - + # Expose bookkeeper client managed ledger stats to prometheus. default is false # bookkeeperClientExposeStatsToPrometheus=false - + ### --- Managed Ledger --- ### - + # Number of bookies to use when creating a ledger managedLedgerDefaultEnsembleSize=1 - + # Number of copies to store for each message managedLedgerDefaultWriteQuorum=1 - + # Number of guaranteed copies (acks to wait before write is complete) managedLedgerDefaultAckQuorum=1 - + # How frequently to flush the cursor positions that were accumulated due to rate limiting. (seconds). # Default is 60 seconds managedLedgerCursorPositionFlushSeconds = 60 - + # Default type of checksum to use when writing to BookKeeper. Default is "CRC32C" # Other possible options are "CRC32", "MAC" or "DUMMY" (no checksum). managedLedgerDigestType=CRC32C - + # Number of threads to be used for managed ledger tasks dispatching managedLedgerNumWorkerThreads=4 - + # Number of threads to be used for managed ledger scheduled tasks managedLedgerNumSchedulerThreads=4 - + # Amount of memory to use for caching data payload in managed ledger. This memory # is allocated from JVM direct memory and it's shared across all the topics # running in the same broker. By default, uses 1/5th of available direct memory managedLedgerCacheSizeMB= - + # Whether we should make a copy of the entry payloads when inserting in cache managedLedgerCacheCopyEntries=false - + # Threshold to which bring down the cache level when eviction is triggered managedLedgerCacheEvictionWatermark=0.9 - + # Configure the cache eviction frequency for the managed ledger cache (evictions/sec) managedLedgerCacheEvictionFrequency=100.0 - + # All entries that have stayed in cache for more than the configured time, will be evicted managedLedgerCacheEvictionTimeThresholdMillis=1000 - + # Configure the threshold (in number of entries) from where a cursor should be considered 'backlogged' # and thus should be set as inactive. managedLedgerCursorBackloggedThreshold=1000 - + # Rate limit the amount of writes generated by consumer acking the messages managedLedgerDefaultMarkDeleteRateLimit=0.1 - + # Max number of entries to append to a ledger before triggering a rollover # A ledger rollover is triggered on these conditions # * Either the max rollover time has been reached # * or max entries have been written to the ledged and at least min-time # has passed managedLedgerMaxEntriesPerLedger=50000 - + # Minimum time between ledger rollover for a topic managedLedgerMinLedgerRolloverTimeMinutes=10 - + # Maximum time before forcing a ledger rollover for a topic managedLedgerMaxLedgerRolloverTimeMinutes=240 - + # Max number of entries to append to a cursor ledger managedLedgerCursorMaxEntriesPerLedger=50000 - + # Max time before triggering a rollover on a cursor ledger managedLedgerCursorRolloverTimeInSeconds=14400 - + # Maximum ledger size before triggering a rollover for a topic (MB) managedLedgerMaxSizePerLedgerMbytes=2048 - + # Max number of "acknowledgment holes" that are going to be persistently stored. # When acknowledging out of order, a consumer will leave holes that are supposed # to be quickly filled by acking all the messages. The information of which @@ -652,227 +652,227 @@ data: # will only be tracked in memory and messages will be redelivered in case of # crashes. managedLedgerMaxUnackedRangesToPersist=10000 - + # Max number of "acknowledgment holes" that can be stored in Zookeeper. If number of unack message range is higher # than this limit then broker will persist unacked ranges into bookkeeper to avoid additional data overhead into # zookeeper. managedLedgerMaxUnackedRangesToPersistInZooKeeper=1000 - + # Skip reading non-recoverable/unreadable data-ledger under managed-ledger's list. It helps when data-ledgers gets # corrupted at bookkeeper and managed-cursor is stuck at that ledger. autoSkipNonRecoverableData=false - + # operation timeout while updating managed-ledger metadata. managedLedgerMetadataOperationsTimeoutSeconds=60 - + # Read entries timeout when broker tries to read messages from bookkeeper. managedLedgerReadEntryTimeoutSeconds=0 - + # Add entry timeout when broker tries to publish message to bookkeeper (0 to disable it). managedLedgerAddEntryTimeoutSeconds=0 - + # New entries check delay for the cursor under the managed ledger. # If no new messages in the topic, the cursor will try to check again after the delay time. # For consumption latency sensitive scenario, can set to a smaller value or set to 0. # Of course, use a smaller value may degrade consumption throughput. Default is 10ms. managedLedgerNewEntriesCheckDelayInMillis=10 - + # Use Open Range-Set to cache unacked messages managedLedgerUnackedRangesOpenCacheSetEnabled=true - + # Managed ledger prometheus stats latency rollover seconds (default: 60s) managedLedgerPrometheusStatsLatencyRolloverSeconds=60 - + # Whether trace managed ledger task execution time managedLedgerTraceTaskExecution=true - + ### --- Load balancer --- ### - + loadManagerClassName=org.apache.pulsar.broker.loadbalance.NoopLoadManager - + # Enable load balancer loadBalancerEnabled=false - + # Percentage of change to trigger load report update loadBalancerReportUpdateThresholdPercentage=10 - + # maximum interval to update load report loadBalancerReportUpdateMaxIntervalMinutes=15 - + # Frequency of report to collect loadBalancerHostUsageCheckIntervalMinutes=1 - + # Load shedding interval. Broker periodically checks whether some traffic should be offload from # some over-loaded broker to other under-loaded brokers loadBalancerSheddingIntervalMinutes=1 - + # Prevent the same topics to be shed and moved to other broker more that once within this timeframe loadBalancerSheddingGracePeriodMinutes=30 - + # Usage threshold to allocate max number of topics to broker loadBalancerBrokerMaxTopics=50000 - + # Interval to flush dynamic resource quota to ZooKeeper loadBalancerResourceQuotaUpdateIntervalMinutes=15 - + # enable/disable namespace bundle auto split loadBalancerAutoBundleSplitEnabled=true - + # enable/disable automatic unloading of split bundles loadBalancerAutoUnloadSplitBundlesEnabled=true - + # maximum topics in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxTopics=1000 - + # maximum sessions (producers + consumers) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxSessions=1000 - + # maximum msgRate (in + out) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxMsgRate=30000 - + # maximum bandwidth (in + out) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxBandwidthMbytes=100 - + # maximum number of bundles in a namespace loadBalancerNamespaceMaximumBundles=128 - + # The broker resource usage threshold. # When the broker resource usage is gratter than the pulsar cluster average resource usge, # the threshold shedder will be triggered to offload bundles from the broker. # It only take effect in ThresholdSheddler strategy. loadBalancerBrokerThresholdShedderPercentage=10 - + # When calculating new resource usage, the history usage accounts for. # It only take effect in ThresholdSheddler strategy. loadBalancerHistoryResourcePercentage=0.9 - + # The BandWithIn usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerBandwithInResourceWeight=1.0 - + # The BandWithOut usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerBandwithOutResourceWeight=1.0 - + # The CPU usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerCPUResourceWeight=1.0 - + # The heap memory usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerMemoryResourceWeight=1.0 - + # The direct memory usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerDirectMemoryResourceWeight=1.0 - + # Bundle unload minimum throughput threshold (MB), avoding bundle unload frequently. # It only take effect in ThresholdShedder strategy. loadBalancerBundleUnloadMinThroughputThreshold=10 - + ### --- Replication --- ### - + # Enable replication metrics replicationMetricsEnabled=true - + # Max number of connections to open for each broker in a remote cluster # More connections host-to-host lead to better throughput over high-latency # links. replicationConnectionsPerBroker=16 - + # Replicator producer queue size replicationProducerQueueSize=1000 - + # Duration to check replication policy to avoid replicator inconsistency # due to missing ZooKeeper watch (disable with value 0) replicationPolicyCheckDurationSeconds=600 - + # Default message retention time defaultRetentionTimeInMinutes=0 - + # Default retention size defaultRetentionSizeInMB=0 - + # How often to check whether the connections are still alive keepAliveIntervalSeconds=30 - + ### --- WebSocket --- ### - + # Enable the WebSocket API service in broker webSocketServiceEnabled=true - + # Number of IO threads in Pulsar Client used in WebSocket proxy webSocketNumIoThreads=8 - + # Number of connections per Broker in Pulsar Client used in WebSocket proxy webSocketConnectionsPerBroker=8 - + # Time in milliseconds that idle WebSocket session times out webSocketSessionIdleTimeoutMillis=300000 - + # The maximum size of a text message during parsing in WebSocket proxy webSocketMaxTextFrameSize=1048576 - + ### --- Metrics --- ### - + # Enable topic level metrics exposeTopicLevelMetricsInPrometheus=true - + # Classname of Pluggable JVM GC metrics logger that can log GC specific metrics # jvmGCMetricsLoggerClassName= - + ### --- Broker Web Stats --- ### - + # Enable topic level metrics exposePublisherStats=true - + # Enable expose the precise backlog stats. # Set false to use published counter and consumed counter to calculate, this would be more efficient but may be inaccurate. # Default is false. exposePreciseBacklogInPrometheus=false - + ### --- Deprecated config variables --- ### - + # Deprecated. Use configurationStoreServers globalZookeeperServers= - + # Deprecated. Use brokerDeleteInactiveTopicsFrequencySeconds brokerServicePurgeInactiveFrequencyInSeconds=60 - + ### --- BookKeeper Configuration --- ##### - + ledgerStorageClass=org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage - + # The maximum netty frame size in bytes. Any message received larger than this will be rejected. The default value is 5MB. nettyMaxFrameSizeBytes=134217728 - + # Size of Write Cache. Memory is allocated from JVM direct memory. # Write cache is used to buffer entries before flushing into the entry log # For good performance, it should be big enough to hold a substantial amount # of entries in the flush interval # By default it will be allocated to 1/4th of the available direct memory dbStorage_writeCacheMaxSizeMb= - + # Size of Read cache. Memory is allocated from JVM direct memory. # This read cache is pre-filled doing read-ahead whenever a cache miss happens # By default it will be allocated to 1/4th of the available direct memory dbStorage_readAheadCacheMaxSizeMb= - + # How many entries to pre-fill in cache after a read cache miss dbStorage_readAheadCacheBatchSize=1000 - + flushInterval=60000 - + ## RocksDB specific configurations ## DbLedgerStorage uses RocksDB to store the indexes from ## (ledgerId, entryId) -> (entryLog, offset) - + # Size of RocksDB block-cache. For best performance, this cache # should be big enough to hold a significant portion of the index # database which can reach ~2GB in some cases # Default is to use 10% of the direct memory size dbStorage_rocksDB_blockCacheSize= - + # Other RocksDB specific tunables dbStorage_rocksDB_writeBufferSizeMB=4 dbStorage_rocksDB_sstSizeInMB=4 @@ -881,14 +881,14 @@ data: dbStorage_rocksDB_numLevels=-1 dbStorage_rocksDB_numFilesInLevel0=4 dbStorage_rocksDB_maxSizeInLevel1MB=256 - + # Maximum latency to impose on a journal write to achieve grouping journalMaxGroupWaitMSec=1 - + # Should the data be fsynced on journal before acknowledgment. journalSyncData=false - - + + # For each ledger dir, maximum disk space which can be used. # Default is 0.95f. i.e. 95% of disk can be used at most after which nothing will # be written to that partition. If all ledger dir partions are full, then bookie @@ -896,7 +896,7 @@ data: # shutdown. # Valid values should be in between 0 and 1 (exclusive). diskUsageThreshold=0.99 - + # The disk free space low water mark threshold. # Disk is considered full when usage threshold is exceeded. # Disk returns back to non-full state when usage is below low water mark threshold. @@ -904,7 +904,7 @@ data: # when concurrent writes and compaction are happening. This also prevent bookie from # switching frequently between read-only and read-writes states in the same cases. diskUsageWarnThreshold=0.99 - + # Whether the bookie allowed to use a loopback interface as its primary # interface(i.e. the interface it uses to establish its identity)? # By default, loopback interfaces are not allowed as the primary @@ -917,190 +917,26 @@ data: # to join the cluster. For VPSs configured like this, you should explicitly # set the listening interface. allowLoopback=true - + # How long the interval to trigger next garbage collection, in milliseconds # Since garbage collection is running in background, too frequent gc # will heart performance. It is better to give a higher number of gc # interval if there is enough disk capacity. gcWaitTime=300000 - + # Enable topic auto creation if new producer or consumer connected (disable auto creation with value false) allowAutoTopicCreation=true - + # The type of topic that is allowed to be automatically created.(partitioned/non-partitioned) allowAutoTopicCreationType=non-partitioned - + # Enable subscription auto creation if new consumer connected (disable auto creation with value false) allowAutoSubscriptionCreation=true - + # The number of partitioned topics that is allowed to be automatically created if allowAutoTopicCreationType is partitioned. defaultNumPartitions=1 - + ### --- Transaction config variables --- ### transactionMetadataStoreProviderClassName=org.apache.pulsar.transaction.coordinator.impl.InMemTransactionMetadataStoreProvider ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: pulsar - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: pulsar -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 8 }} - spec: - containers: - - name: pulsar - image: {{ .Values.image.registry }}/pulsar:2.7.0 - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: - - /bin/bash - - -c - - "bin/pulsar standalone -nss" - env: - ports: - - containerPort: 6650 - - containerPort: 6651 - - containerPort: 8080 - - containerPort: 8081 - volumeMounts: - - mountPath: /pulsar/conf/standalone.conf - name: pulsar-confs - subPath: standalone.conf - - mountPath: /pulsar/data - name: pulsar-data - {{- with .Values.modules.pulsar.exchange }} - - mountPath: /opt/pulsar/certs/ - name: pulsar-cert - {{- end }} - {{- with .Values.modules.pulsar.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.pulsar.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.pulsar.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - restartPolicy: Always - volumes: - - name: pulsar-confs - configMap: - name: pulsar-config - {{- with .Values.modules.pulsar.exchange }} - - name: pulsar-cert - secret: - secretName: pulsar-cert - {{- end }} - - name: pulsar-data - {{ if .Values.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ .Values.modules.pulsar.existingClaim | default "pulsar-data" }} - {{ else }} - emptyDir: {} - {{ end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: pulsar - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "http-port" - port: 6650 - targetPort: 6650 - {{- if eq .Values.modules.pulsar.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.pulsar.httpNodePort }} - {{- end }} - protocol: TCP - - name: "https-port" - port: 6651 - targetPort: 6651 - {{- if eq .Values.modules.pulsar.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.pulsar.httpsNodePort }} - {{- end }} - protocol: TCP - - name: "mng-port" - port: 8080 - targetPort: 8080 - protocol: TCP - - name: "mngs-port" - port: 8081 - targetPort: 8081 - protocol: TCP - type: {{ .Values.modules.pulsar.type }} - - {{- if .Values.modules.pulsar.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.pulsar.loadBalancerIP }}" - {{- end }} - - selector: - fateMoudle: pulsar -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ if .Values.modules.pulsar.publicLB.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: pulsar-public-tls - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tls-port" - port: 6651 - targetPort: 6651 - protocol: TCP - type: LoadBalancer - selector: - fateMoudle: pulsar -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} -{{ if and .Values.persistence.enabled (not .Values.modules.pulsar.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: pulsar-data - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.pulsar.accessMode }} - resources: - requests: - storage: {{ .Values.modules.pulsar.size }} - {{ if .Values.modules.pulsar.storageClass }} - {{ if eq "-" .Values.modules.pulsar.storageClass }} - storageClassName: "" - {{ else }} - storageClassName: {{ .Values.modules.pulsar.storageClass }} - {{ end }} - {{ end }} -{{ end }} -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml new file mode 100644 index 000000000..6e2da0c24 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml @@ -0,0 +1,92 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.pulsar.include }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pulsar + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: pulsar +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 8 }} + spec: + containers: + - name: pulsar + image: {{ .Values.image.registry }}/pulsar:2.7.0 + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/bash + - -c + - "bin/pulsar standalone -nss" + env: + ports: + - containerPort: 6650 + - containerPort: 6651 + - containerPort: 8080 + - containerPort: 8081 + volumeMounts: + - mountPath: /pulsar/conf/standalone.conf + name: pulsar-confs + subPath: standalone.conf + - mountPath: /pulsar/data + name: pulsar-data + {{- with .Values.modules.pulsar.exchange }} + - mountPath: /opt/pulsar/certs/ + name: pulsar-cert + {{- end }} + {{- with .Values.modules.pulsar.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.pulsar.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.pulsar.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + restartPolicy: Always + volumes: + - name: pulsar-confs + configMap: + name: pulsar-config + {{- with .Values.modules.pulsar.exchange }} + - name: pulsar-cert + secret: + secretName: pulsar-cert + {{- end }} + - name: pulsar-data + {{ if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.modules.pulsar.existingClaim | default "pulsar-data" }} + {{ else }} + emptyDir: {} + {{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml new file mode 100644 index 000000000..6f513d694 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml @@ -0,0 +1,42 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.pulsar.include }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: pulsar + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 4 }} +{{- if .Values.ingress.pulsar.annotations }} + annotations: +{{ toYaml .Values.ingress.pulsar.annotations | indent 4 }} +{{- end }} +spec: + rules: + {{- range .Values.ingress.pulsar.hosts }} + - host: {{ .name }} + http: + paths: + - path: {{ default "/" .path }} + pathType: Prefix + backend: + service: + name: pulsar + port: + number: 8080 + {{- end }} + {{- if .Values.ingress.pulsar.tls }} + tls: +{{ toYaml .Values.ingress.pulsar.tls | indent 4 }} + {{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/persistentvolumeclaim.yaml new file mode 100644 index 000000000..5ac735ef8 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/pulsar/persistentvolumeclaim.yaml @@ -0,0 +1,35 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.pulsar.include }} +{{- if and .Values.persistence.enabled (not .Values.modules.pulsar.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: pulsar-data + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.pulsar.accessMode }} + resources: + requests: + storage: {{ .Values.modules.pulsar.size }} + {{ if .Values.modules.pulsar.storageClass }} + {{ if eq "-" .Values.modules.pulsar.storageClass }} + storageClassName: "" + {{ else }} + storageClassName: {{ .Values.modules.pulsar.storageClass }} + {{ end }} + {{ end }} +{{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/service.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/service.yaml new file mode 100644 index 000000000..52064b836 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/pulsar/service.yaml @@ -0,0 +1,76 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.pulsar.include }} +apiVersion: v1 +kind: Service +metadata: + name: pulsar + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "http-port" + port: 6650 + targetPort: 6650 + {{- if eq .Values.modules.pulsar.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.pulsar.httpNodePort }} + {{- end }} + protocol: TCP + - name: "https-port" + port: 6651 + targetPort: 6651 + {{- if eq .Values.modules.pulsar.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.pulsar.httpsNodePort }} + {{- end }} + protocol: TCP + - name: "mng-port" + port: 8080 + targetPort: 8080 + protocol: TCP + - name: "mngs-port" + port: 8081 + targetPort: 8081 + protocol: TCP + type: {{ .Values.modules.pulsar.type }} + + {{- if .Values.modules.pulsar.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.pulsar.loadBalancerIP }}" + {{- end }} + + selector: + fateMoudle: pulsar +{{ include "fate.matchLabels" . | indent 4 }} + +--- + +{{- if .Values.modules.pulsar.publicLB.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: pulsar-public-tls + labels: + fateMoudle: pulsar +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tls-port" + port: 6651 + targetPort: 6651 + protocol: TCP + type: LoadBalancer + selector: + fateMoudle: pulsar +{{ include "fate.matchLabels" . | indent 4 }} +{{- end }} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/rabbitmq/configmap.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/configmap.yaml new file mode 100644 index 000000000..ab63ac95c --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/configmap.yaml @@ -0,0 +1,23 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.rabbitmq.include }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: rabbitmq-config + labels: + fateMoudle: rabbitmq +{{ include "fate.labels" . | indent 4 }} +data: + enabled_plugins: | + [rabbitmq_federation_management,rabbitmq_federation]. +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/rabbitmq.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml similarity index 71% rename from helm-charts/FATE/templates/rabbitmq.yaml rename to helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml index ca00ea3b4..76c875cf3 100644 --- a/helm-charts/FATE/templates/rabbitmq.yaml +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,17 +10,6 @@ # limitations under the License. {{ if .Values.modules.rabbitmq.include }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: rabbitmq-config - labels: - fateMoudle: rabbitmq -{{ include "fate.labels" . | indent 4 }} -data: - enabled_plugins: | - [rabbitmq_federation_management,rabbitmq_federation]. ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -90,33 +79,4 @@ spec: name: rabbitmq-config - name: rabbitmq-data emptyDir: {} ---- -apiVersion: v1 -kind: Service -metadata: - name: rabbitmq - labels: - fateMoudle: rabbitmq -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-rabbitmq" - port: 5672 - targetPort: 5672 - {{- if eq .Values.modules.rabbitmq.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.rabbitmq.nodePort }} - {{- end }} - protocol: TCP - - name: "tcp-rabbitmq1" - port: 15672 - targetPort: 15672 - protocol: TCP - type: {{ .Values.modules.rabbitmq.type }} - {{- if .Values.modules.rabbitmq.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.rabbitmq.loadBalancerIP }}" - {{- end }} - selector: - fateMoudle: rabbitmq -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml new file mode 100644 index 000000000..12edd9c71 --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml @@ -0,0 +1,43 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.rabbitmq.include }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: rabbitmq + labels: + fateMoudle: rabbitmq +{{ include "fate.labels" . | indent 4 }} +{{- if .Values.ingress.rabbitmq.annotations }} + annotations: +{{ toYaml .Values.ingress.rabbitmq.annotations | indent 4 }} +{{- end }} +spec: + rules: + {{- range .Values.ingress.rabbitmq.hosts }} + - host: {{ .name }} + http: + paths: + - path: {{ default "/" .path }} + pathType: Prefix + backend: + service: + name: rabbitmq + port: + number: 15672 + {{- end }} +{{- if .Values.ingress.rabbitmq.tls }} + tls: +{{ toYaml .Values.ingress.rabbitmq.tls | indent 4 }} +{{- end }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/rabbitmq/service.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/service.yaml new file mode 100644 index 000000000..d161a168f --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/service.yaml @@ -0,0 +1,41 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.rabbitmq.include }} +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq + labels: + fateMoudle: rabbitmq +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-rabbitmq" + port: 5672 + targetPort: 5672 + {{- if eq .Values.modules.rabbitmq.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.rabbitmq.nodePort }} + {{- end }} + protocol: TCP + - name: "tcp-rabbitmq1" + port: 15672 + targetPort: 15672 + protocol: TCP + type: {{ .Values.modules.rabbitmq.type }} + {{- if .Values.modules.rabbitmq.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.rabbitmq.loadBalancerIP }}" + {{- end }} + selector: + fateMoudle: rabbitmq +{{ include "fate.matchLabels" . | indent 4 }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/spark-worker.yaml b/helm-charts/FATE/templates/backends/spark/spark/configmap.yaml similarity index 67% rename from helm-charts/FATE/templates/spark-worker.yaml rename to helm-charts/FATE/templates/backends/spark/spark/configmap.yaml index 3d804e3a8..8ec16b28f 100644 --- a/helm-charts/FATE/templates/spark-worker.yaml +++ b/helm-charts/FATE/templates/backends/spark/spark/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -166,85 +166,4 @@ data: host: 127.0.0.1 port: 8001 federatedId: 0 - ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: spark-worker - labels: - fateMoudle: spark-worker -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: {{ default 2 .Values.modules.spark.worker.replicas }} - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: spark-worker -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: spark-worker -{{ include "fate.labels" . | indent 8 }} - spec: - containers: - - name: spark-worker - image: {{ if .Values.modules.spark.worker.Image }}{{ .Values.modules.spark.worker.Image }}{{ else }}{{ .Values.image.registry }}/spark-worker{{ end }}:{{ default .Values.image.tag .Values.modules.spark.worker.ImageTag }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.modules.spark.worker.resources }} - resources: - {{- range $key, $val := .Values.modules.spark.worker.resources }} - {{ $key }}: -{{ toYaml $val | indent 14 }} - {{- end }} - {{- end }} - volumeMounts: - - mountPath: /data/projects/fate/conf/ - name: spark-worker-confs - ports: - - containerPort: 8081 - {{- with .Values.modules.spark.worker.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.spark.worker.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.spark.worker.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - restartPolicy: Always - volumes: - - name: spark-worker-confs - configMap: - name: spark-worker-config ---- -apiVersion: v1 -kind: Service -metadata: - name: spark-worker-1 - labels: - fateMoudle: spark-worker -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-spark" - port: 8081 - targetPort: 8081 - protocol: TCP - type: {{ .Values.modules.spark.worker.type }} - clusterIP: None - selector: - fateMoudle: spark-worker -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/spark-master.yaml b/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml similarity index 56% rename from helm-charts/FATE/templates/spark-master.yaml rename to helm-charts/FATE/templates/backends/spark/spark/deployment.yaml index 881704bb2..49af20d70 100644 --- a/helm-charts/FATE/templates/spark-master.yaml +++ b/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -65,60 +65,63 @@ spec: serviceAccountName: {{ template "serviceAccountName" . }} restartPolicy: Always --- -apiVersion: v1 -kind: Service -metadata: - name: spark-master - labels: - fateMoudle: spark-master -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: web-ui - protocol: TCP - port: 8080 - targetPort: 8080 - - name: master - protocol: TCP - port: 7077 - targetPort: 7077 - - name: master-rest - protocol: TCP - port: 6066 - targetPort: 6066 - type: ClusterIP - clusterIP: None - selector: - fateMoudle: spark-master -{{ include "fate.matchLabels" . | indent 4 }} ---- -apiVersion: v1 -kind: Service +apiVersion: apps/v1 +kind: Deployment metadata: - name: spark-client + name: spark-worker labels: - fateMoudle: spark-master + fateMoudle: spark-worker {{ include "fate.labels" . | indent 4 }} spec: - ports: - - name: web-ui - protocol: TCP - port: 8080 - targetPort: 8080 - - name: master - protocol: TCP - port: 7077 - targetPort: 7077 - {{- if eq .Values.modules.spark.master.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.spark.master.nodePort }} - {{- end }} - - name: master-rest - protocol: TCP - port: 6066 - targetPort: 6066 - type: {{ .Values.modules.spark.master.type }} - # clusterIP: None + replicas: {{ default 2 .Values.modules.spark.worker.replicas }} + strategy: + type: Recreate selector: - fateMoudle: spark-master -{{ include "fate.matchLabels" . | indent 4 }} -{{ end }} + matchLabels: + fateMoudle: spark-worker +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: spark-worker +{{ include "fate.labels" . | indent 8 }} + spec: + containers: + - name: spark-worker + image: {{ if .Values.modules.spark.worker.Image }}{{ .Values.modules.spark.worker.Image }}{{ else }}{{ .Values.image.registry }}/spark-worker{{ end }}:{{ default .Values.image.tag .Values.modules.spark.worker.ImageTag }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.modules.spark.worker.resources }} + resources: + {{- range $key, $val := .Values.modules.spark.worker.resources }} + {{ $key }}: +{{ toYaml $val | indent 14 }} + {{- end }} + {{- end }} + volumeMounts: + - mountPath: /data/projects/fate/conf/ + name: spark-worker-confs + ports: + - containerPort: 8081 + {{- with .Values.modules.spark.worker.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.spark.worker.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.spark.worker.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + restartPolicy: Always + volumes: + - name: spark-worker-confs + configMap: + name: spark-worker-config +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml b/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml new file mode 100644 index 000000000..49545dd2f --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml @@ -0,0 +1,43 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.spark.include }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: spark + labels: + fateMoudle: spark +{{ include "fate.labels" . | indent 4 }} +{{- if .Values.ingress.spark.annotations }} + annotations: +{{ toYaml .Values.ingress.spark.annotations | indent 4 }} +{{- end }} +spec: + rules: + {{- range .Values.ingress.spark.hosts }} + - host: {{ .name }} + http: + paths: + - path: {{ default "/" .path }} + pathType: Prefix + backend: + service: + name: spark-master + port: + number: 8080 + {{- end }} +{{- if .Values.ingress.spark.tls }} + tls: +{{ toYaml .Values.ingress.spark.tls | indent 4 }} +{{- end }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/backends/spark/spark/service.yaml b/helm-charts/FATE/templates/backends/spark/spark/service.yaml new file mode 100644 index 000000000..8430c771b --- /dev/null +++ b/helm-charts/FATE/templates/backends/spark/spark/service.yaml @@ -0,0 +1,89 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.spark.include }} +apiVersion: v1 +kind: Service +metadata: + name: spark-master + labels: + fateMoudle: spark-master +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: web-ui + protocol: TCP + port: 8080 + targetPort: 8080 + - name: master + protocol: TCP + port: 7077 + targetPort: 7077 + - name: master-rest + protocol: TCP + port: 6066 + targetPort: 6066 + type: ClusterIP + clusterIP: None + selector: + fateMoudle: spark-master +{{ include "fate.matchLabels" . | indent 4 }} +--- +apiVersion: v1 +kind: Service +metadata: + name: spark-client + labels: + fateMoudle: spark-master +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: web-ui + protocol: TCP + port: 8080 + targetPort: 8080 + - name: master + protocol: TCP + port: 7077 + targetPort: 7077 + {{- if eq .Values.modules.spark.master.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.spark.master.nodePort }} + {{- end }} + - name: master-rest + protocol: TCP + port: 6066 + targetPort: 6066 + type: {{ .Values.modules.spark.master.type }} + # clusterIP: None + selector: + fateMoudle: spark-master +{{ include "fate.matchLabels" . | indent 4 }} +--- +apiVersion: v1 +kind: Service +metadata: + name: spark-worker-1 + labels: + fateMoudle: spark-worker +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-spark" + port: 8081 + targetPort: 8081 + protocol: TCP + type: {{ .Values.modules.spark.worker.type }} + clusterIP: None + selector: + fateMoudle: spark-worker +{{ include "fate.matchLabels" . | indent 4 }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/client.yaml b/helm-charts/FATE/templates/core/client/deployment.yaml similarity index 71% rename from helm-charts/FATE/templates/client.yaml rename to helm-charts/FATE/templates/core/client/deployment.yaml index 761218e74..dba52f897 100644 --- a/helm-charts/FATE/templates/client.yaml +++ b/helm-charts/FATE/templates/core/client/deployment.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2021 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -77,45 +77,4 @@ spec: persistentVolumeClaim: claimName: {{ .Values.modules.client.existingClaim | default "client-data" }} {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: notebook - labels: - fateMoudle: client -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-notebook" - port: 20000 - targetPort: 20000 - protocol: TCP - type: {{ .Values.modules.client.type }} - selector: - fateMoudle: client -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{- if and .Values.persistence.enabled (not .Values.modules.client.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: client-data - labels: - fateMoudle: client -{{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.client.accessMode }} - resources: - requests: - storage: {{ .Values.modules.client.size }} - {{- if .Values.modules.client.storageClass }} - {{- if eq "-" .Values.modules.client.storageClass }} - storageClassName: "" - {{- else }} - storageClassName: {{ .Values.modules.client.storageClass }} - {{- end }} - {{- end }} -{{- end }} -{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/client/ingress.yaml b/helm-charts/FATE/templates/core/client/ingress.yaml new file mode 100644 index 000000000..be920243e --- /dev/null +++ b/helm-charts/FATE/templates/core/client/ingress.yaml @@ -0,0 +1,43 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.client.include }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: client + labels: + fateMoudle: client +{{ include "fate.labels" . | indent 4 }} + {{- if .Values.ingress.client.annotations }} + annotations: +{{ toYaml .Values.ingress.client.annotations | indent 4 }} + {{- end }} +spec: + rules: + {{- range .Values.ingress.client.hosts }} + - host: {{ .name }} + http: + paths: + - path: {{ default "/" .path }} + pathType: Prefix + backend: + service: + name: notebook + port: + number: 20000 + {{- end }} + {{- if .Values.ingress.client.tls }} + tls: +{{ toYaml .Values.ingress.client.tls | indent 4 }} + {{- end }} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/client/istio.yaml b/helm-charts/FATE/templates/core/client/istio.yaml new file mode 100644 index 000000000..a678d61fe --- /dev/null +++ b/helm-charts/FATE/templates/core/client/istio.yaml @@ -0,0 +1,34 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.istio.enabled }} +{{ if .Values.modules.client.include }} +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: notebook + labels: +{{ include "fate.labels" . | indent 4 }} +spec: + hosts: + {{- range .Values.ingress.client.hosts }} + - {{ .name }} + {{- end }} + gateways: + - {{ .Values.partyName }}-gateway + http: + - route: + - destination: + host: notebook + port: + number: 20000 +{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/client/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/core/client/persistentvolumeclaim.yaml new file mode 100644 index 000000000..d13d640d7 --- /dev/null +++ b/helm-charts/FATE/templates/core/client/persistentvolumeclaim.yaml @@ -0,0 +1,35 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.client.include }} +{{- if and .Values.persistence.enabled (not .Values.modules.client.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: client-data + labels: + fateMoudle: client +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.client.accessMode }} + resources: + requests: + storage: {{ .Values.modules.client.size }} + {{- if .Values.modules.client.storageClass }} + {{- if eq "-" .Values.modules.client.storageClass }} + storageClassName: "" + {{- else }} + storageClassName: {{ .Values.modules.client.storageClass }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/client/service.yaml b/helm-charts/FATE/templates/core/client/service.yaml new file mode 100644 index 000000000..072c9b1fd --- /dev/null +++ b/helm-charts/FATE/templates/core/client/service.yaml @@ -0,0 +1,30 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.client.include }} +apiVersion: v1 +kind: Service +metadata: + name: notebook + labels: + fateMoudle: client +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-notebook" + port: 20000 + targetPort: 20000 + protocol: TCP + type: {{ .Values.modules.client.type }} + selector: + fateMoudle: client +{{ include "fate.matchLabels" . | indent 4 }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateboard/configmap.yaml b/helm-charts/FATE/templates/core/fateboard/configmap.yaml new file mode 100644 index 000000000..63cea12f2 --- /dev/null +++ b/helm-charts/FATE/templates/core/fateboard/configmap.yaml @@ -0,0 +1,50 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.fateboard.include }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: fateboard-config + labels: + fateMoudle: fateboard +{{ include "fate.labels" . | indent 4 }} +data: + application.properties: | + server.port=8080 + fateflow.url=http://{{ if .Values.istio.enabled }}127.0.0.1{{ else }}fateflow{{ end }}:9380 + spring.datasource.driver-Class-Name=com.mysql.cj.jdbc.Driver + spring.http.encoding.charset=UTF-8 + spring.http.encoding.enabled=true + server.tomcat.uri-encoding=UTF-8 + fateboard.datasource.jdbc-url=jdbc:mysql://{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}:{{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }}/{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8 + fateboard.datasource.username={{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }} + fateboard.datasource.password={{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }} + server.tomcat.max-threads=1000 + server.tomcat.max-connections=20000 + spring.servlet.multipart.max-file-size=10MB + spring.servlet.multipart.max-request-size=100MB + spring.datasource.druid.filter.config.enabled=false + spring.datasource.druid.web-stat-filter.enabled=false + spring.datasource.druid.stat-view-servlet.enabled=false + server.compression.enabled=true + server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain + server.board.login.username={{ .Values.modules.fateboard.username }} + server.board.login.password={{ .Values.modules.fateboard.password }} + #server.ssl.key-store=classpath: + #server.ssl.key-store-password= + #server.ssl.key-password= + #server.ssl.key-alias= + spring.session.store-type=jdbc + spring.session.jdbc.initialize-schema=always + #HTTP_APP_KEY= + #HTTP_SECRET_KEY= +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateboard/ingress.yaml b/helm-charts/FATE/templates/core/fateboard/ingress.yaml new file mode 100644 index 000000000..cf82bff5d --- /dev/null +++ b/helm-charts/FATE/templates/core/fateboard/ingress.yaml @@ -0,0 +1,43 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.fateboard.include }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: fateboard + labels: + fateMoudle: fateboard +{{ include "fate.labels" . | indent 4 }} +{{- if .Values.ingress.fateboard.annotations }} + annotations: +{{ toYaml .Values.ingress.fateboard.annotations | indent 4 }} +{{- end }} +spec: + rules: + {{- range .Values.ingress.fateboard.hosts }} + - host: {{ .name }} + http: + paths: + - path: {{ default "/" .path }} + pathType: Prefix + backend: + service: + name: fateboard + port: + number: 8080 + {{- end }} + {{- if .Values.ingress.fateboard.tls }} + tls: +{{ toYaml .Values.ingress.fateboard.tls | indent 4 }} + {{- end }} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateboard/istio.yaml b/helm-charts/FATE/templates/core/fateboard/istio.yaml new file mode 100644 index 000000000..5158000dd --- /dev/null +++ b/helm-charts/FATE/templates/core/fateboard/istio.yaml @@ -0,0 +1,34 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.istio.enabled }} +{{ if .Values.modules.fateboard.include }} +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: fateboard + labels: +{{ include "fate.labels" . | indent 4 }} +spec: + hosts: + {{- range .Values.ingress.fateboard.hosts }} + - {{ .name }} + {{- end }} + gateways: + - fate-9999-gateway + http: + - route: + - destination: + host: fateboard + port: + number: 8080 +{{ end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateboard/service.yaml b/helm-charts/FATE/templates/core/fateboard/service.yaml new file mode 100644 index 000000000..5059f5bc0 --- /dev/null +++ b/helm-charts/FATE/templates/core/fateboard/service.yaml @@ -0,0 +1,30 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- if .Values.modules.fateboard.include }} +apiVersion: v1 +kind: Service +metadata: + name: fateboard + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-fateboard" + port: 8080 + targetPort: 8080 + protocol: TCP + type: {{ .Values.modules.fateboard.type }} + selector: + fateMoudle: python +{{ include "fate.matchLabels" . | indent 4 }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateflow/configmap.yaml b/helm-charts/FATE/templates/core/fateflow/configmap.yaml new file mode 100644 index 000000000..41aec9ecc --- /dev/null +++ b/helm-charts/FATE/templates/core/fateflow/configmap.yaml @@ -0,0 +1,300 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.python.include }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: python-config + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +data: + spark-defaults.conf: | + spark.master {{ if eq .Values.modules.python.backend "spark_local_pulsar" }}local[*]{{ else }}{{ .Values.modules.python.spark.master | default "spark://spark-master:7077"}}{{ end }} + spark.driver.host {{ .Values.modules.python.spark.driverHost | default "fateflow" }} + {{- if .Values.modules.python.spark.driverStartPort }} + spark.driver.port {{ .Values.modules.python.spark.driverStartPort }} + {{- end }} + + {{- if .Values.modules.python.spark.portMaxRetries }} + spark.port.maxRetries {{ .Values.modules.python.spark.portMaxRetries }} + {{- end }} + + {{- if .Values.modules.python.spark.blockManagerStartPort }} + spark.blockManager.port {{ .Values.modules.python.spark.blockManagerStartPort }} + {{- end }} + + {{- if .Values.modules.python.spark.blockManagerStartPort }} + spark.driver.bindAddress 0.0.0.0 + {{- end }} + + {{- if .Values.modules.python.spark.pysparkPython }} + spark.pyspark.python {{ .Values.modules.python.spark.pysparkPython }} + spark.pyspark.driver.python python + {{- end }} + service_conf.yaml: | + use_registry: {{ .Values.modules.serving.useRegistry | default false }} + use_deserialize_safe_module: false + dependent_distribution: false + encrypt_password: false + encrypt_module: fate_arch.common.encrypt_utils#pwdecrypt + private_key: + fateflow: + # you must set real ip address, 127.0.0.1 and 0.0.0.0 is not supported + host: {{ if .Values.istio.enabled }}127.0.0.1{{ else }}fateflow{{ end }} + http_port: 9380 + grpc_port: 9360 + # http_app_key: + # http_secret_key: + # support rollsite/nginx/fateflow as a coordination proxy + # rollsite support fate on eggroll, use grpc protocol + # nginx support fate on eggroll and fate on spark, use http or grpc protocol, default is http + # fateflow support fate on eggroll and fate on spark, use http protocol, but not support exchange network mode + + # format(proxy: rollsite) means rollsite use the rollsite configuration of fate_one_eggroll and nginx use the nginx configuration of fate_one_spark + # you also can customize the config like this(set fateflow of the opposite party as proxy): + # proxy: + # name: fateflow + # host: xx + # http_port: xx + # grpc_port: xx + {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" "spark_local_pulsar" }} + proxy: nginx + {{- else }} + proxy: rollsite + {{- end }} + # support default/http/grpc + protocol: default + # It can also be specified in the job configuration using the federated_status_collect_type parameter + default_federated_status_collect_type: PULL + database: + name: '{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}' + user: '{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}' + passwd: '{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}' + host: '{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}' + port: {{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }} + max_connections: 100 + stale_timeout: 30 + zookeeper: + hosts: + - "serving-zookeeper:2181" + # use_acl: false + # user: fate + # password: fate + # engine services + default_engines: + {{- if eq .Values.modules.python.backend "spark_pulsar" }} + computing: spark + federation: pulsar + storage: hdfs + {{- else if eq .Values.modules.python.backend "spark_rabbitmq" }} + computing: spark + federation: rabbitmq + storage: hdfs + {{- else if eq .Values.modules.python.backend "spark_local_pulsar" }} + computing: spark + federation: pulsar + storage: localfs + {{- else }} + computing: eggroll + federation: eggroll + storage: eggroll + {{- end }} + fate_on_standalone: + standalone: + cores_per_node: 20 + nodes: 1 + fate_on_eggroll: + clustermanager: + cores_per_node: {{ .Values.modules.python.clustermanager.cores_per_node | default 16 }} + nodes: {{ .Values.modules.python.clustermanager.nodes | default 2 }} + rollsite: + host: {{ .Values.modules.rollsite.ip }} + port: 9370 + fate_on_spark: + spark: + # default use SPARK_HOME environment variable + home: /data/projects/spark-2.4.1-bin-hadoop2.7/ + cores_per_node: {{ .Values.modules.python.spark.cores_per_node }} + nodes: {{ .Values.modules.python.spark.nodes }} + linkis_spark: + cores_per_node: 20 + nodes: 2 + host: 127.0.0.1 + port: 9001 + token_code: MLSS + python_path: /data/projects/fate/python + hive: + host: 127.0.0.1 + port: 10000 + auth_mechanism: + username: + password: + linkis_hive: + host: 127.0.0.1 + port: 9001 + hdfs: + name_node: {{ .Values.modules.python.hdfs.name_node | default "hdfs://namenode:9000" }} + # default / + path_prefix: {{ .Values.modules.python.hdfs.path_prefix }} + rabbitmq: + host: {{ .Values.modules.python.rabbitmq.host }} + mng_port: {{ .Values.modules.python.rabbitmq.mng_port }} + port: {{ .Values.modules.python.rabbitmq.port }} + user: {{ .Values.modules.python.rabbitmq.user }} + password: {{ .Values.modules.python.rabbitmq.password }} + # default conf/rabbitmq_route_table.yaml + route_table: conf/rabbitmq_route_table/rabbitmq_route_table.yaml + pulsar: + host: {{ .Values.modules.python.pulsar.host }} + port: {{ .Values.modules.python.pulsar.port }} + mng_port: {{ .Values.modules.python.pulsar.mng_port }} + topic_ttl: 3 + # default conf/pulsar_route_table.yaml + route_table: conf/pulsar_route_table/pulsar_route_table.yaml + nginx: + host: {{ .Values.modules.python.nginx.host }} + http_port: {{ .Values.modules.python.nginx.http_port }} + grpc_port: {{ .Values.modules.python.nginx.grpc_port }} + fateboard: + host: fateboard + port: 8080 + # on API `/model/load` and `/model/load/do` + # automatic upload models to the model store if it exists locally but does not exist in the model storage + # or download models from the model store if it does not exist locally but exists in the model storage + # this config will not affect API `/model/store` or `/model/restore` + enable_model_store: false + model_store_address: + storage: mysql + name: {{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }} + host: '{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}' + port: {{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }} + user: '{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}' + passwd: '{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}' + max_connections: 10 + stale_timeout: 10 + {{- with .Values.modules.serving }} + servings: + hosts: + {{- if and .ip .port}} + - '{{ .ip }}:{{ .port }}' + {{- else }} + - '' + {{- end }} + {{- if and .useRegistry .zookeeper }} + zookeeper: +{{ toYaml .zookeeper | indent 6 }} + {{- end }} + {{- end }} + transfer_conf.yaml: | + paths: # dir or path + - "python/federatedml/transfer_variable/auth_conf" + component_registry.json: | + { + "components": { + }, + "providers": { + }, + "default_settings": { + "fate_flow":{ + "default_version_key": "FATEFlow" + }, + "fate": { + "default_version_key": "FATE" + }, + "class_path": { + "interface": "components.components.Components", + "feature_instance": "feature.instance.Instance", + "feature_vector": "feature.sparse_vector.SparseVector", + "model": "protobuf.generated", + "model_migrate": "protobuf.model_migrate.model_migrate", + "homo_model_convert": "protobuf.homo_model_convert.homo_model_convert" + } + } + } + job_default_config.yaml: | + # component provider, relative path to get_fate_python_directory + default_component_provider_path: federatedml + + # resource + total_cores_overweight_percent: 1 # 1 means no overweight + total_memory_overweight_percent: 1 # 1 means no overweight + task_parallelism: 1 + task_cores: 4 + task_memory: 0 # mb + max_cores_percent_per_job: 1 # 1 means total + + # scheduling + job_timeout: 259200 # s + remote_request_timeout: 30000 # ms + federated_command_trys: 3 + end_status_job_scheduling_time_limit: 300000 # ms + end_status_job_scheduling_updates: 1 + auto_retries: 0 + auto_retry_delay: 1 #seconds + # It can also be specified in the job configuration using the federated_status_collect_type parameter + federated_status_collect_type: PUSH + + # upload + upload_max_bytes: 4194304000 # bytes + + #component output + output_data_summary_count_limit: 100 +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: pulsar-route-table + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +data: + pulsar_route_table.yaml: | + {{- with .Values.modules.pulsar.exchange }} + default: + proxy: "{{ .ip }}:{{ .port }}" + domain: "{{ .domain }}" + {{- end }} + {{- if .Values.modules.pulsar.route_table }} + {{- range $key, $val := .Values.modules.pulsar.route_table }} + {{ $key }}: +{{ toYaml . | indent 6 }} + {{- end }} + {{- else }} + {{ .Values.partyId }}: + host: pulsar + port: 6650 + sslPort: 6651 + proxy: "" + {{- end}} +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: rabbitmq-route-table + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +data: + rabbitmq_route_table.yaml: | + {{- if .Values.modules.rabbitmq.route_table }} + {{- range $key, $val := .Values.modules.rabbitmq.route_table }} + {{ $key }}: +{{ toYaml . | indent 6 }} + {{- end }} + {{- else }} + {{ .Values.partyId }}: + host: rabbitmq + port: 5672 + {{- end}} + +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateflow/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/core/fateflow/persistentvolumeclaim.yaml new file mode 100644 index 000000000..3b8d39b86 --- /dev/null +++ b/helm-charts/FATE/templates/core/fateflow/persistentvolumeclaim.yaml @@ -0,0 +1,34 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +{{- if and .Values.persistence.enabled (not .Values.modules.python.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: python-data + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.python.accessMode }} + resources: + requests: + storage: {{ .Values.modules.python.size }} + {{- if .Values.modules.python.storageClass }} + {{- if eq "-" .Values.modules.python.storageClass }} + storageClassName: "" + {{- else }} + storageClassName: {{ .Values.modules.python.storageClass }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/fateflow/service.yaml b/helm-charts/FATE/templates/core/fateflow/service.yaml new file mode 100644 index 000000000..e2d7bce37 --- /dev/null +++ b/helm-charts/FATE/templates/core/fateflow/service.yaml @@ -0,0 +1,102 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.python.include }} +apiVersion: v1 +kind: Service +metadata: + name: fateflow + labels: + fateMoudle: fateflow +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-grpc" + port: 9360 + targetPort: 9360 + protocol: TCP + - name: "tcp-http" + port: 9380 + targetPort: 9380 + protocol: TCP + type: ClusterIP + clusterIP: None + selector: + fateMoudle: python +{{ include "fate.matchLabels" . | indent 4 }} +--- +apiVersion: v1 +kind: Service +metadata: + name: fateflow-client + labels: + fateMoudle: fateflow +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-grpc" + port: 9360 + targetPort: 9360 + {{- if eq .Values.modules.python.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.python.grpcNodePort }} + {{- end }} + protocol: TCP + - name: "tcp-http" + port: 9380 + targetPort: 9380 + {{- if eq .Values.modules.python.type "NodePort" "LoadBalancer" }} + nodePort: {{ .Values.modules.python.httpNodePort }} + {{- end }} + protocol: TCP + type: {{ .Values.modules.python.type }} + + {{- if .Values.modules.python.loadBalancerIP }} + loadBalancerIP: "{{ .Values.modules.python.loadBalancerIP }}" + {{- end }} + + selector: + fateMoudle: python +{{ include "fate.matchLabels" . | indent 4 }} +--- +{{- if and .Values.modules.python.spark.portMaxRetries (ne (print .Values.modules.python.spark.driverHost) "fateflow") }} +apiVersion: v1 +kind: Service +metadata: + name: fateflow-sparkdriver + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + {{ $spark := .Values.modules.python.spark }} + {{- range .Values.modules.python.spark.portMaxRetries | int | until }} + - name: "spark-driver-port-{{ . }}" + port: {{ $spark.driverStartPort | int | add . }} + targetPort: {{ $spark.driverStartPort | int | add . }} + {{- if eq $spark.driverHostType "NodePort" "LoadBalancer" }} + nodePort: {{ $spark.driverStartPort | int | add . }} + {{- end }} + protocol: TCP + - name: "spark-block-manager-port-{{ . }}" + port: {{ $spark.blockManagerStartPort | int | add . }} + targetPort: {{ $spark.blockManagerStartPort | int | add . }} + {{- if eq $spark.driverHostType "NodePort" "LoadBalancer" }} + nodePort: {{ $spark.blockManagerStartPort | int | add . }} + {{- end }} + protocol: TCP + {{- end }} + type: {{ .Values.modules.python.spark.driverHostType }} + selector: + fateMoudle: python +{{ include "fate.matchLabels" . | indent 4 }} +--- +{{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/istio.yaml b/helm-charts/FATE/templates/core/istio.yaml similarity index 52% rename from helm-charts/FATE/templates/istio.yaml rename to helm-charts/FATE/templates/core/istio.yaml index 1d6d388c9..8aa0f853c 100644 --- a/helm-charts/FATE/templates/istio.yaml +++ b/helm-charts/FATE/templates/core/istio.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -8,6 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License + {{ if .Values.istio.enabled }} apiVersion: networking.istio.io/v1alpha3 kind: Gateway @@ -25,44 +26,4 @@ spec: protocol: HTTP hosts: - "*" -{{ if .Values.modules.fateboard.include }} ---- -apiVersion: networking.istio.io/v1alpha3 -kind: VirtualService -metadata: - name: fateboard - labels: -{{ include "fate.labels" . | indent 4 }} -spec: - hosts: - - {{ .Values.host.fateboard }} - gateways: - - fate-9999-gateway - http: - - route: - - destination: - host: fateboard - port: - number: 8080 -{{ end }} -{{ if .Values.modules.client.include }} ---- -apiVersion: networking.istio.io/v1alpha3 -kind: VirtualService -metadata: - name: notebook - labels: -{{ include "fate.labels" . | indent 4 }} -spec: - hosts: - - {{ .Values.host.client }} - gateways: - - {{ .Values.partyName }}-gateway - http: - - route: - - destination: - host: notebook - port: - number: 20000 -{{ end }} {{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/mysql-module.yaml b/helm-charts/FATE/templates/core/mysql/configmap.yaml similarity index 67% rename from helm-charts/FATE/templates/mysql-module.yaml rename to helm-charts/FATE/templates/core/mysql/configmap.yaml index 8188e7707..db11b54bb 100644 --- a/helm-charts/FATE/templates/mysql-module.yaml +++ b/helm-charts/FATE/templates/core/mysql/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright 2019-2020 VMware, Inc. +# Copyright 2019-2022 VMware, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -43,7 +43,7 @@ data: `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; - CREATE UNIQUE INDEX `idx_u_store_loinsert-node.sqlcator_ns_n` ON `store_locator` (`namespace`(120), `name`(640)); + CREATE UNIQUE INDEX `idx_u_store_locator_ns_n` ON `store_locator` (`namespace`(120), `name`(640)); CREATE INDEX `idx_store_locator_st` ON `store_locator` (`store_type`(255)); CREATE INDEX `idx_store_locator_ns` ON `store_locator` (`namespace`(767)); CREATE INDEX `idx_store_locator_n` ON `store_locator` (`name`(767)); @@ -155,122 +155,4 @@ data: select * from server_node; {{- end }} --- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: mysql - labels: - fateMoudle: mysql -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: mysql -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: mysql -{{ include "fate.labels" . | indent 8 }} - spec: - containers: - {{- if .Values.image.isThridParty }} - - image: {{ .Values.image.registry }}/mysql:8.0.28 - {{- else }} - - image: mysql:8.0.28 - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - name: mysql - env: - - name: MYSQL_ALLOW_EMPTY_PASSWORD - value: "1" - - name: MYSQL_DATABASE - value: {{ .Values.modules.mysql.database | quote }} - - name: MYSQL_USER - value: {{ .Values.modules.mysql.user | quote }} - - name: MYSQL_PASSWORD - value: {{ .Values.modules.mysql.password | quote }} - - name: user - value: root - ports: - - containerPort: 3306 - volumeMounts: - - name: mysql-confs - mountPath: /docker-entrypoint-initdb.d/ - - name: data - mountPath: /var/lib/mysql - subPath: {{ .Values.modules.mysql.subPath }} - {{- with .Values.modules.mysql.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.mysql.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.mysql.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - volumes: - - name: mysql-confs - configMap: - name: mysql-config - {{- if not .Values.persistence.enabled }} - - name: data - emptyDir: {} - {{- else }} - - name: data - persistentVolumeClaim: - claimName: {{ .Values.modules.mysql.existingClaim | default "mysql-data" }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: mysql - labels: - fateMoudle: mysql -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-mysql" - port: 3306 - targetPort: 3306 - protocol: TCP - type: {{ .Values.modules.mysql.type }} - selector: - fateMoudle: mysql -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{- if and .Values.persistence.enabled (not .Values.modules.mysql.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: mysql-data - labels: - fateMoudle: mysql -{{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.mysql.accessMode }} - resources: - requests: - storage: {{ .Values.modules.mysql.size }} - {{- if .Values.modules.mysql.storageClass }} - {{- if eq "-" .Values.modules.mysql.storageClass }} - storageClassName: "" - {{- else }} - storageClassName: {{ .Values.modules.mysql.storageClass }} - {{- end }} - {{- end }} -{{- end }} -{{ end }} \ No newline at end of file +{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/mysql/deployment.yaml b/helm-charts/FATE/templates/core/mysql/deployment.yaml new file mode 100644 index 000000000..3be1a0829 --- /dev/null +++ b/helm-charts/FATE/templates/core/mysql/deployment.yaml @@ -0,0 +1,91 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.mysql.include }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql + labels: + fateMoudle: mysql +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: mysql +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: mysql +{{ include "fate.labels" . | indent 8 }} + spec: + containers: + {{- if .Values.image.isThridParty }} + - image: {{ .Values.image.registry }}/mysql:8.0.28 + {{- else }} + - image: mysql:8.0.28 + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + name: mysql + env: + - name: MYSQL_ALLOW_EMPTY_PASSWORD + value: "1" + - name: MYSQL_DATABASE + value: {{ .Values.modules.mysql.database | quote }} + - name: MYSQL_USER + value: {{ .Values.modules.mysql.user | quote }} + - name: MYSQL_PASSWORD + value: {{ .Values.modules.mysql.password | quote }} + - name: user + value: root + ports: + - containerPort: 3306 + volumeMounts: + - name: mysql-confs + mountPath: /docker-entrypoint-initdb.d/ + - name: data + mountPath: /var/lib/mysql + subPath: {{ .Values.modules.mysql.subPath }} + {{- with .Values.modules.mysql.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.mysql.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.mysql.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + serviceAccountName: {{ template "serviceAccountName" . }} + volumes: + - name: mysql-confs + configMap: + name: mysql-config + {{- if not .Values.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + - name: data + persistentVolumeClaim: + claimName: {{ .Values.modules.mysql.existingClaim | default "mysql-data" }} + {{- end }} +--- +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/mysql/persistentvolumeclaim.yaml b/helm-charts/FATE/templates/core/mysql/persistentvolumeclaim.yaml new file mode 100644 index 000000000..7299ff18d --- /dev/null +++ b/helm-charts/FATE/templates/core/mysql/persistentvolumeclaim.yaml @@ -0,0 +1,35 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.mysql.include }} +{{- if and .Values.persistence.enabled (not .Values.modules.mysql.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: mysql-data + labels: + fateMoudle: mysql +{{ include "fate.labels" . | indent 4 }} +spec: + accessModes: + - {{ .Values.modules.mysql.accessMode }} + resources: + requests: + storage: {{ .Values.modules.mysql.size }} + {{- if .Values.modules.mysql.storageClass }} + {{- if eq "-" .Values.modules.mysql.storageClass }} + storageClassName: "" + {{- else }} + storageClassName: {{ .Values.modules.mysql.storageClass }} + {{- end }} + {{- end }} +{{- end }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/mysql/service.yaml b/helm-charts/FATE/templates/core/mysql/service.yaml new file mode 100644 index 000000000..22da1527c --- /dev/null +++ b/helm-charts/FATE/templates/core/mysql/service.yaml @@ -0,0 +1,30 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.mysql.include }} +apiVersion: v1 +kind: Service +metadata: + name: mysql + labels: + fateMoudle: mysql +{{ include "fate.labels" . | indent 4 }} +spec: + ports: + - name: "tcp-mysql" + port: 3306 + targetPort: 3306 + protocol: TCP + type: {{ .Values.modules.mysql.type }} + selector: + fateMoudle: mysql +{{ include "fate.matchLabels" . | indent 4 }} +{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/core/python-spark.yaml b/helm-charts/FATE/templates/core/python-spark.yaml new file mode 100644 index 000000000..bda83fb47 --- /dev/null +++ b/helm-charts/FATE/templates/core/python-spark.yaml @@ -0,0 +1,232 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{ if .Values.modules.python.include }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: python + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 4 }} +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + fateMoudle: python +{{ include "fate.matchLabels" . | indent 6 }} + template: + metadata: + labels: + fateMoudle: python +{{ include "fate.labels" . | indent 8 }} + spec: + {{- if .Values.istio.enabled }} + {{- else }} + initContainers: + {{- if .Values.image.isThridParty }} + - image: {{ .Values.image.registry }}/mysql:8 + {{- else }} + - image: mysql:8 + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + name: ping-mysql + env: + - name: MYSQL_DATABASE + value: "{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}" + - name: MYSQL_USER + value: "{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}" + - name: MYSQL_PASSWORD + value: "{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}" + - name: MYSQL_HOST + value: "{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}" + - name: MYSQL_PORT + value: "{{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" | }}" + command: + - /bin/bash + - -c + - | + set -x + function checkMySQL(){ + checkMySQLCount=0 + while true ; do + checkMySQLCount=$[checkMySQLCount+1] + echo "Waiting for mysql started. check count: $checkMySQLCount" + sleep 2 + + state=`mysqladmin ping -h ${MYSQL_HOST} --port=${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD}| awk '{print $3}'` + if [ "$state" == "alive" ]; then + echo "mysql server has been already started." + break + fi + done + } + echo "Waiting for mysql started..." + checkMySQL + {{- end }} + containers: + - name: python + {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" "spark_local_pulsar" }} + image: {{ .Values.image.registry }}/python-spark:{{ .Values.image.tag }} + {{- else }} + image: {{ .Values.image.registry }}/{{ if .Values.modules.python.enabledNN }}python-nn{{ else }}python{{ end }}:{{ .Values.image.tag }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.modules.python.resources}} + resources: + {{- range $key, $val := .Values.modules.python.resources }} + {{ $key }}: +{{ toYaml $val | indent 14 }} + {{- end }} + {{- end }} + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: FATE_LOG_LEVEL + value: {{ .Values.modules.python.logLevel }} + - name: PYTHONPATH + value: "$PYTHONPATH:/data/projects/fate/fate/python:/data/projects/fate/eggroll/python:/data/projects/fate/fateflow/python:/data/projects/fate/fate/python/fate_client" + - name: FATE_PROJECT_BASE + value: "/data/projects/fate" + {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" }} + - name: FATE_FLOW_UPLOAD_MAX_NUM + value: "1000000" + - name: FATE_FLOW_UPLOAD_MAX_BYTES + value: "104868093952" + {{- end }} + ports: + - containerPort: 9360 + - containerPort: 9380 + command: + - /bin/bash + - -c + - | + set -x + mkdir -p /data/projects/fate/conf/ + cp /data/projects/fate/conf-tmp/transfer_conf.yaml /data/projects/fate/conf/transfer_conf.yaml + cp /data/projects/fate/conf-tmp/service_conf.yaml /data/projects/fate/conf/service_conf.yaml + cp /data/projects/fate/conf-tmp/component_registry.json /data/projects/fate/conf/component_registry.json + cp /data/projects/fate/conf-tmp/job_default_config.yaml /data/projects/fate/conf/job_default_config.yaml + # fix fateflow conf must use IP + sed -i "s/host: fateflow/host: ${POD_IP}/g" /data/projects/fate/conf/service_conf.yaml + + cp /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults-template.conf /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults.conf + sed -i "s/fateflow/${POD_IP}/g" /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults.conf + + # logs + mkdir -p /data/projects/fate/fateflow/logs/fate_flow/ + touch /data/projects/fate/fateflow/logs/fate_flow/INFO.log + ln -sf /dev/stdout /data/projects/fate/fateflow/logs/fate_flow/INFO.log + + sleep 5 && python fateflow/python/fate_flow/fate_flow_server.py + volumeMounts: + {{- if eq .Values.modules.python.backend "eggroll" }} + - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties + name: eggroll-confs + subPath: eggroll.properties + {{- end }} + - name: python-data + mountPath: /data/projects/fate/fateflow/logs + subPath: logs + - mountPath: /data/projects/fate/conf-tmp/ + name: python-confs + - mountPath: /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults-template.conf + name: python-confs + subPath: spark-defaults.conf + {{- if eq .Values.modules.python.backend "spark_rabbitmq" }} + - mountPath: /data/projects/fate/conf/rabbitmq_route_table + name: rabbitmq-route-table + {{- end }} + {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_local_pulsar" }} + - mountPath: /data/projects/fate/conf/pulsar_route_table + name: pulsar-route-table + {{- end }} + # TODO add mountPath of job and model-cache + - mountPath: /data/projects/fate/jobs + name: python-data + subPath: jobs + - mountPath: /data/projects/fate/model_local_cache + name: python-data + subPath: model-local-cache + {{- if .Values.modules.fateboard.include }} + - image: {{ .Values.image.registry }}/fateboard:{{ .Values.image.tag }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + name: fateboard + ports: + - containerPort: 8080 + volumeMounts: + - mountPath: /data/projects/fate/fateboard/conf/application.properties + name: fateboard-confs + subPath: application.properties + - name: python-data + mountPath: /data/projects/fate/fateflow/logs + subPath: logs + {{- end }} + {{- with .Values.modules.python.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.python.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.modules.python.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.image.imagePullSecrets }} + imagePullSecrets: +{{ toYaml . | indent 6 }} + {{- end }} + {{- if .Values.modules.python.serviceAccountName }} + serviceAccountName: {{ .Values.modules.python.serviceAccountName }} + {{- else }} + serviceAccountName: {{ template "serviceAccountName" . }} + {{- end }} + restartPolicy: Always + volumes: + {{- if eq .Values.modules.python.backend "eggroll" }} + - name: eggroll-confs + configMap: + name: eggroll-config + {{- end }} + - name: python-confs + configMap: + name: python-config + {{- if eq .Values.modules.python.backend "spark_rabbitmq" }} + - name: rabbitmq-route-table + configMap: + name: rabbitmq-route-table + {{- end }} + {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_local_pulsar" }} + - name: pulsar-route-table + configMap: + name: pulsar-route-table + {{- end }} + {{- if .Values.modules.fateboard.include }} + - name: fateboard-confs + configMap: + name: fateboard-config + {{- end }} + {{- if not .Values.persistence.enabled }} + - name: python-data + emptyDir: {} + {{- else }} + - name: python-data + persistentVolumeClaim: + claimName: {{ .Values.modules.python.existingClaim | default "python-data" }} + {{- end }} + +{{ end }} diff --git a/helm-charts/FATE/templates/hdfs-nn.yaml b/helm-charts/FATE/templates/hdfs-nn.yaml deleted file mode 100644 index b446c75c6..000000000 --- a/helm-charts/FATE/templates/hdfs-nn.yaml +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 2019-2020 VMware, Inc. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -{{ if .Values.modules.hdfs.include }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: namenode-config - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 4 }} -data: - core-site.xml: | - - - fs.default.name - hdfs://0.0.0.0:9000 - - ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: namenode-env - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 4 }} -data: - CORE_CONF_fs_defaultFS: "hdfs://namenode:9000" - CORE_CONF_hadoop_http_staticuser_user: "root" - CORE_CONF_hadoop_proxyuser_hue_hosts: "*" - CORE_CONF_hadoop_proxyuser_hue_groups: "*" - CORE_CONF_io_compression_codecs: org.apache.hadoop.io.compress.SnappyCodec - HDFS_CONF_dfs_webhdfs_enabled: 'true' - HDFS_CONF_dfs_permissions_enabled: 'false' - HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check: 'false' - YARN_CONF_yarn_log___aggregation___enable: 'true' - YARN_CONF_yarn_log_server_url: "http://historyserver:8188/applicationhistory/logs/" - YARN_CONF_yarn_resourcemanager_recovery_enabled: 'true' - YARN_CONF_yarn_resourcemanager_store_class: org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore - YARN_CONF_yarn_resourcemanager_scheduler_class: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler - YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___mb: '8192' - YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___vcores: '4' - YARN_CONF_yarn_resourcemanager_fs_state___store_uri: /rmstate - YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled: 'true' - YARN_CONF_yarn_resourcemanager_hostname: resourcemanager - YARN_CONF_yarn_resourcemanager_address: resourcemanager:8032 - YARN_CONF_yarn_resourcemanager_scheduler_address: resourcemanager:8030 - YARN_CONF_yarn_resourcemanager_resource__tracker_address: resourcemanager:8031 - YARN_CONF_yarn_timeline___service_enabled: 'true' - YARN_CONF_yarn_timeline___service_generic___application___history_enabled: 'true' - YARN_CONF_yarn_timeline___service_hostname: historyserver - YARN_CONF_mapreduce_map_output_compress: 'true' - YARN_CONF_mapred_map_output_compress_codec: org.apache.hadoopac.io.compress.SnappyCodec - YARN_CONF_yarn_nodemanager_resource_memory___mb: '16384' - YARN_CONF_yarn_nodemanager_resource_cpu___vcores: '8' - YARN_CONF_yarn_nodemanager_disk___health___checker_max___disk___utilization___per___disk___percentage: '98.5' - YARN_CONF_yarn_nodemanager_remote___app___log___dir: /app-logs - YARN_CONF_yarn_nodemanager_aux___services: mapreduce_shuffle - MAPRED_CONF_mapreduce_framework_name: yarn - MAPRED_CONF_mapred_child_java_opts: '-Xmx4096m' - MAPRED_CONF_mapreduce_map_memory_mb: '4096' - MAPRED_CONF_mapreduce_reduce_memory_mb: '8192' - MAPRED_CONF_mapreduce_map_java_opts: '-Xmx3072m' - MAPRED_CONF_mapreduce_reduce_java_opts: '-Xmx6144m' - MAPRED_CONF_yarn_app_mapreduce_am_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ - MAPRED_CONF_mapreduce_map_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ - MAPRED_CONF_mapreduce_reduce_env: HADOOP_MAPRED_HOME=/opt/hadoop-3.2.1/ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: namenode - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: namenode -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 8 }} - spec: - {{ if .Values.persistence.enabled }} - initContainers: - - name: delete-lost-found - image: busybox - command: ["sh", "-c", "rm -rf /hadoop/dfs/name/lost+found"] - volumeMounts: - - name: dfs - mountPath: /hadoop/dfs/name - {{ end }} - containers: - - name: namenode - image: {{ .Values.image.registry }}/hadoop-namenode:2.0.0-hadoop2.7.4-java8 - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: CLUSTER_NAME - value: fate - envFrom: - - configMapRef: - name: namenode-env - ports: - - containerPort: 9000 - - containerPort: 9870 - - containerPort: 50070 - volumeMounts: - - mountPath: /etc/hadoop/core-site.xml - subPath: core-site.xml - name: namenode-confs - - name: dfs - mountPath: /hadoop/dfs/name - {{- with .Values.modules.hdfs.namenode.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.hdfs.namenode.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.hdfs.namenode.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" . }} - restartPolicy: Always - volumes: - - name: namenode-confs - configMap: - name: namenode-config - - name: dfs - {{ if .Values.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ .Values.modules.hdfs.namenode.existingClaim | default "namenode-data" }} - {{ else }} - emptyDir: {} - {{ end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: namenode - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-9000" - port: 9000 - targetPort: 9000 - protocol: TCP - {{- if eq .Values.modules.hdfs.namenode.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.hdfs.namenode.nodePort }} - {{- end }} - - name: "tcp-9870" - port: 9870 - targetPort: 9870 - protocol: TCP - - name: "tcp-50070" - port: 50070 - targetPort: 50070 - protocol: TCP - type: {{ .Values.modules.hdfs.namenode.type }} - selector: - fateMoudle: namenode -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{ if and .Values.persistence.enabled (not .Values.modules.hdfs.namenode.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: namenode-data - labels: - fateMoudle: namenode -{{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.hdfs.namenode.accessMode }} - resources: - requests: - storage: {{ .Values.modules.hdfs.namenode.size }} - {{ if .Values.modules.hdfs.namenode.storageClass }} - {{ if eq "-" .Values.modules.hdfs.namenode.storageClass }} - storageClassName: "" - {{ else }} - storageClassName: {{ .Values.modules.hdfs.namenode.storageClass }} - {{ end }} - {{ end }} -{{ end }} -{{ end }} diff --git a/helm-charts/FATE/templates/ingress.yaml b/helm-charts/FATE/templates/ingress.yaml deleted file mode 100644 index 12ca27e22..000000000 --- a/helm-charts/FATE/templates/ingress.yaml +++ /dev/null @@ -1,177 +0,0 @@ -# Copyright 2019-2020 VMware, Inc. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -{{ if .Values.istio.enabled }} -{{ else }} -{{ if .Values.modules.fateboard.include }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: fateboard - labels: - fateMoudle: fateboard -{{ include "fate.labels" . | indent 4 }} -{{- if .Values.ingress.fateboard.annotations }} - annotations: -{{ toYaml .Values.ingress.fateboard.annotations | indent 4 }} -{{- end }} -spec: - rules: - {{- range .Values.ingress.fateboard.hosts }} - - host: {{ .name }} - http: - paths: - - path: {{ default "/" .path }} - pathType: Prefix - backend: - service: - name: fateboard - port: - number: 8080 - {{- end }} -{{- if .Values.ingress.fateboard.tls }} - tls: -{{ toYaml .Values.ingress.fateboard.tls | indent 4 }} -{{- end }} ---- -{{ end }} - -{{ if .Values.modules.client.include }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: client - labels: - fateMoudle: client -{{ include "fate.labels" . | indent 4 }} -{{- if .Values.ingress.client.annotations }} - annotations: -{{ toYaml .Values.ingress.client.annotations | indent 4 }} -{{- end }} -spec: - rules: - {{- range .Values.ingress.client.hosts }} - - host: {{ .name }} - http: - paths: - - path: {{ default "/" .path }} - pathType: Prefix - backend: - service: - name: notebook - port: - number: 20000 - {{- end }} -{{- if .Values.ingress.client.tls }} - tls: -{{ toYaml .Values.ingress.client.tls | indent 4 }} -{{- end }} ---- -{{ end }} - -{{ if .Values.modules.spark.include }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: spark - labels: - fateMoudle: spark -{{ include "fate.labels" . | indent 4 }} -{{- if .Values.ingress.spark.annotations }} - annotations: -{{ toYaml .Values.ingress.spark.annotations | indent 4 }} -{{- end }} -spec: - rules: - {{- range .Values.ingress.spark.hosts }} - - host: {{ .name }} - http: - paths: - - path: {{ default "/" .path }} - pathType: Prefix - backend: - service: - name: spark-master - port: - number: 8080 - {{- end }} -{{- if .Values.ingress.spark.tls }} - tls: -{{ toYaml .Values.ingress.spark.tls | indent 4 }} -{{- end }} ---- -{{ end }} - -{{ if .Values.modules.rabbitmq.include }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: rabbitmq - labels: - fateMoudle: rabbitmq -{{ include "fate.labels" . | indent 4 }} -{{- if .Values.ingress.rabbitmq.annotations }} - annotations: -{{ toYaml .Values.ingress.rabbitmq.annotations | indent 4 }} -{{- end }} -spec: - rules: - {{- range .Values.ingress.rabbitmq.hosts }} - - host: {{ .name }} - http: - paths: - - path: {{ default "/" .path }} - pathType: Prefix - backend: - service: - name: rabbitmq - port: - number: 15672 - {{- end }} -{{- if .Values.ingress.rabbitmq.tls }} - tls: -{{ toYaml .Values.ingress.rabbitmq.tls | indent 4 }} -{{- end }} ---- -{{ end }} - -{{ if .Values.modules.pulsar.include }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: pulsar - labels: - fateMoudle: pulsar -{{ include "fate.labels" . | indent 4 }} -{{- if .Values.ingress.pulsar.annotations }} - annotations: -{{ toYaml .Values.ingress.pulsar.annotations | indent 4 }} -{{- end }} -spec: - rules: - {{- range .Values.ingress.pulsar.hosts }} - - host: {{ .name }} - http: - paths: - - path: {{ default "/" .path }} - pathType: Prefix - backend: - service: - name: pulsar - port: - number: 8080 - {{- end }} -{{- if .Values.ingress.pulsar.tls }} - tls: -{{ toYaml .Values.ingress.pulsar.tls | indent 4 }} -{{- end }} ---- -{{ end }} -{{ end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/nodemanager-module.yaml b/helm-charts/FATE/templates/nodemanager-module.yaml deleted file mode 100644 index a8536821e..000000000 --- a/helm-charts/FATE/templates/nodemanager-module.yaml +++ /dev/null @@ -1,250 +0,0 @@ -# Copyright 2019-2020 VMware, Inc. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -{{- if .Values.modules.nodemanager.include }} -{{- $root := . -}} -{{- range $nodemanager := .Values.modules.nodemanager.list }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: {{ $nodemanager.name }}-config - labels: - fateMoudle: {{ $nodemanager.name }} -{{ include "fate.labels" $root | indent 4 }} -data: - eggroll.properties: | - [eggroll] - eggroll.resourcemanager.clustermanager.jdbc.driver.class.name=com.mysql.cj.jdbc.Driver - eggroll.resourcemanager.clustermanager.jdbc.url=jdbc:mysql://{{ $root.Values.modules.mysql.ip }}:{{ $root.Values.modules.mysql.port }}/{{ $root.Values.modules.mysql.mysql_database }}?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true - eggroll.resourcemanager.clustermanager.jdbc.username={{ $root.Values.modules.mysql.mysql_user }} - eggroll.resourcemanager.clustermanager.jdbc.password={{ $root.Values.modules.mysql.mysql_password }} - - eggroll.data.dir=data/ - eggroll.logs.dir=logs/ - eggroll.resourcemanager.clustermanager.host=clustermanager - eggroll.resourcemanager.clustermanager.port=4670 - eggroll.resourcemanager.nodemanager.port=4671 - eggroll.resourcemanager.process.tag={{ $root.Values.partyId }} - - eggroll.bootstrap.root.script=bin/eggroll_boot.sh - - eggroll.resourcemanager.bootstrap.egg_pair.exepath=bin/roll_pair/egg_pair_bootstrap.sh - eggroll.resourcemanager.bootstrap.egg_pair.venv= - eggroll.resourcemanager.bootstrap.egg_pair.pythonpath=/data/projects/fate/python:/data/projects/fate/eggroll/python - eggroll.resourcemanager.bootstrap.egg_pair.filepath=python/eggroll/roll_pair/egg_pair.py - eggroll.resourcemanager.bootstrap.egg_pair.ld_library_path= - - eggroll.resourcemanager.bootstrap.egg_frame.exepath=bin/roll_pair/roll_pair_master_bootstrap.sh - eggroll.resourcemanager.bootstrap.egg_frame.javahome=/usr/lib/jvm/java-1.8.0-openjdk - eggroll.resourcemanager.bootstrap.egg_frame.classpath=conf/:lib/* - eggroll.resourcemanager.bootstrap.egg_frame.mainclass=com.webank.eggroll.rollframe.EggFrameBootstrap - eggroll.resourcemanager.bootstrap.egg_frame.jvm.options= - - eggroll.core.grpc.channel.keepalive.timeout.sec=20 - - # roll_frame - arrow.enable_unsafe_memory_access=true - - # hadoop - hadoop.fs.defaultFS=file:/// - - # hadoop HA mode - hadoop.dfs.nameservices= - hadoop.dfs.namenode.rpc-address.nn1= - hadoop.dfs.namenode.rpc-address.nn2= - - # session - eggroll.session.processors.per.node={{ $nodemanager.sessionProcessorsPerNode }} - eggroll.session.start.timeout.ms=180000 - - # rollpair - eggroll.rollpair.transferpair.sendbuf.size=250000 - - # rollsite - eggroll.rollsite.coordinator={{ $root.Values.partyName }} - eggroll.rollsite.host=rollsite - eggroll.rollsite.port=9370 - eggroll.rollsite.party.id={{ $root.Values.partyId }} - eggroll.rollsite.route.table.path=conf/route_table/route_table.json - eggroll.rollsite.route.table.key= - eggroll.rollsite.route.table.whitelist=127.0.0.1 - eggroll.rollsite.jvm.options=-XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:logs/eggroll/rollsite.gc.log - - eggroll.rollsite.push.max.retry=3 - eggroll.rollsite.push.long.retry=2 - eggroll.rollsite.push.batches.per.stream=10 - eggroll.rollsite.adapter.sendbuf.size=100000 - fluent.conf: | - - @type tail - path /data/projects/fate/eggroll/logs/*/*.* - exclude_path ["/data/projects/fate/eggroll/logs/eggroll/*", "/data/projects/fate/eggroll/logs/log.pos"] - pos_file /data/projects/fate/eggroll/logs/log.pos - tag eggroll - multiline_flush_interval 2s - refresh_interval 5s - - @type none - - - - - @type stdout - ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ $nodemanager.name }} - labels: - fateMoudle: {{ $nodemanager.name }} - app: nodemanager -{{ include "fate.labels" $root | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: {{ $nodemanager.name }} -{{ include "fate.matchLabels" $root | indent 6 }} - template: - metadata: - labels: - fateMoudle: {{ $nodemanager.name }} - app: nodemanager -{{ include "fate.labels" $root | indent 8 }} - spec: - containers: - - name: {{ $nodemanager.name }}-eggrollpair - {{- if $root.Values.image.isThridParty }} - image: {{ $root.Values.image.registry }}/fluentd:v1.12 - {{- else }} - image: fluent/fluentd:v1.12 - {{- end }} - volumeMounts: - - name: eggroll-log - mountPath: /data/projects/fate/eggroll/logs/ - - name: fluentd-conf - subPath: fluent.conf - mountPath: /fluentd/etc/fluent.conf - - image: {{ $root.Values.image.registry }}/eggroll:{{ $root.Values.image.tag }} - imagePullPolicy: {{ $root.Values.image.pullPolicy }} - name: {{ $nodemanager.name }} - command: - - bash - - -c - - | - set -x - mkdir -p /data/projects/fate/eggroll/logs/eggroll/ - touch /data/projects/fate/eggroll/logs/eggroll/eggroll-audit.log - ln -sf /dev/stdout /data/projects/fate/eggroll/logs/eggroll/eggroll-audit.log - touch /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.log - ln -sf /dev/stdout /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.log - touch /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.err.log - ln -sf /dev/stderr /data/projects/fate/eggroll/logs/eggroll/eggroll.jvm.err.log - /tini -- java -Dlog4j.configurationFile=$${EGGROLL_HOME}/conf/log4j2.properties -cp $${EGGROLL_HOME}/lib/*: com.webank.eggroll.core.Bootstrap --bootstraps com.webank.eggroll.core.resourcemanager.NodeManagerBootstrap -c $${EGGROLL_HOME}/conf/eggroll.properties -p 4671 -s 'EGGROLL_DEAMON' - ports: - - containerPort: 4671 - volumeMounts: - - name: eggroll-log - mountPath: /data/projects/fate/eggroll/logs/ - - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties - name: nodemanager-confs - subPath: eggroll.properties - - mountPath: /data/projects/fate/fate/conf/ - name: python-confs - - name: data-dir - mountPath: /data/projects/fate/eggroll/data - subPath: {{ $nodemanager.subPath }} - {{- with $nodemanager.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with $nodemanager.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with $nodemanager.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with $root.Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} - serviceAccountName: {{ template "serviceAccountName" $root }} - restartPolicy: Always - volumes: - - name: eggroll-log - emptyDir: {} - - name: fluentd-conf - configMap: - name: {{ $nodemanager.name }}-config - - name: nodemanager-confs - configMap: - name: {{ $nodemanager.name }}-config - - name: python-confs - configMap: - name: python-config - {{- if not $root.Values.persistence.enabled }} - - name: data-dir - emptyDir: {} - {{- else }} - - name: data-dir - persistentVolumeClaim: - claimName: {{ $nodemanager.existingClaim | default (printf "%s-data" $nodemanager.name) }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - fateMoudle: {{ $nodemanager.name }} -{{ include "fate.labels" $root | indent 4 }} - name: {{ $nodemanager.name }} -spec: - ports: - - name: "tcp-nodemanager" - port: 4671 - targetPort: 4671 - protocol: TCP - clusterIP: None - selector: - fateMoudle: {{ $nodemanager.name }} -{{ include "fate.matchLabels" $root | indent 4 }} ---- -{{- if and $root.Values.persistence.enabled (not $nodemanager.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ $nodemanager.name }}-data - labels: - fateMoudle: {{ $nodemanager.name }} -{{ include "fate.labels" $root | indent 4 }} -spec: - accessModes: - - {{ $nodemanager.accessMode }} - resources: - requests: - storage: {{ $nodemanager.size }} - {{- if $nodemanager.storageClass }} - {{- if eq "-" $nodemanager.storageClass }} - storageClassName: "" - {{- else }} - storageClassName: {{ $nodemanager.storageClass }} - {{- end }} - {{- end }} -{{- end }} - ---- -{{- end }} -{{- end }} \ No newline at end of file diff --git a/helm-charts/FATE/templates/psp.yaml b/helm-charts/FATE/templates/psp.yaml index fbd76dc5a..30c3dfb3c 100644 --- a/helm-charts/FATE/templates/psp.yaml +++ b/helm-charts/FATE/templates/psp.yaml @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + {{- if .Values.podSecurityPolicy.enabled -}} apiVersion: policy/v1beta1 kind: PodSecurityPolicy diff --git a/helm-charts/FATE/templates/python-spark.yaml b/helm-charts/FATE/templates/python-spark.yaml deleted file mode 100644 index 12e0125dd..000000000 --- a/helm-charts/FATE/templates/python-spark.yaml +++ /dev/null @@ -1,670 +0,0 @@ -# Copyright 2019-2020 VMware, Inc. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -{{ if .Values.modules.python.include }} -kind: ConfigMap -apiVersion: v1 -metadata: - name: python-config - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -data: - spark-defaults.conf: | - spark.master {{ if eq .Values.modules.python.backend "spark_local_pulsar" }}local[*]{{ else }}{{ .Values.modules.python.spark.master | default "spark://spark-master:7077"}}{{ end }} - spark.driver.host {{ .Values.modules.python.spark.driverHost | default "fateflow" }} - {{- if .Values.modules.python.spark.driverStartPort }} - spark.driver.port {{ .Values.modules.python.spark.driverStartPort }} - {{- end }} - - {{- if .Values.modules.python.spark.portMaxRetries }} - spark.port.maxRetries {{ .Values.modules.python.spark.portMaxRetries }} - {{- end }} - - {{- if .Values.modules.python.spark.blockManagerStartPort }} - spark.blockManager.port {{ .Values.modules.python.spark.blockManagerStartPort }} - {{- end }} - - {{- if .Values.modules.python.spark.blockManagerStartPort }} - spark.driver.bindAddress 0.0.0.0 - {{- end }} - - {{- if .Values.modules.python.spark.pysparkPython }} - spark.pyspark.python {{ .Values.modules.python.spark.pysparkPython }} - spark.pyspark.driver.python python - {{- end }} - service_conf.yaml: | - use_registry: {{ .Values.modules.serving.useRegistry | default false }} - use_deserialize_safe_module: false - dependent_distribution: false - encrypt_password: false - encrypt_module: fate_arch.common.encrypt_utils#pwdecrypt - private_key: - fateflow: - # you must set real ip address, 127.0.0.1 and 0.0.0.0 is not supported - host: {{ if .Values.istio.enabled }}127.0.0.1{{ else }}fateflow{{ end }} - http_port: 9380 - grpc_port: 9360 - # http_app_key: - # http_secret_key: - # support rollsite/nginx/fateflow as a coordination proxy - # rollsite support fate on eggroll, use grpc protocol - # nginx support fate on eggroll and fate on spark, use http or grpc protocol, default is http - # fateflow support fate on eggroll and fate on spark, use http protocol, but not support exchange network mode - - # format(proxy: rollsite) means rollsite use the rollsite configuration of fate_one_eggroll and nginx use the nginx configuration of fate_one_spark - # you also can customize the config like this(set fateflow of the opposite party as proxy): - # proxy: - # name: fateflow - # host: xx - # http_port: xx - # grpc_port: xx - {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" "spark_local_pulsar" }} - proxy: nginx - {{- else }} - proxy: rollsite - {{- end }} - # support default/http/grpc - protocol: default - # It can also be specified in the job configuration using the federated_status_collect_type parameter - default_federated_status_collect_type: PULL - database: - name: '{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}' - user: '{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}' - passwd: '{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}' - host: '{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}' - port: {{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }} - max_connections: 100 - stale_timeout: 30 - zookeeper: - hosts: - - "serving-zookeeper:2181" - # use_acl: false - # user: fate - # password: fate - # engine services - default_engines: - {{- if eq .Values.modules.python.backend "spark_pulsar" }} - computing: spark - federation: pulsar - storage: hdfs - {{- else if eq .Values.modules.python.backend "spark_rabbitmq" }} - computing: spark - federation: rabbitmq - storage: hdfs - {{- else if eq .Values.modules.python.backend "spark_local_pulsar" }} - computing: spark - federation: pulsar - storage: localfs - {{- else }} - computing: eggroll - federation: eggroll - storage: eggroll - {{- end }} - fate_on_standalone: - standalone: - cores_per_node: 20 - nodes: 1 - fate_on_eggroll: - clustermanager: - cores_per_node: {{ .Values.modules.python.clustermanager.cores_per_node | default 16 }} - nodes: {{ .Values.modules.python.clustermanager.nodes | default 2 }} - rollsite: - host: {{ .Values.modules.rollsite.ip }} - port: 9370 - fate_on_spark: - spark: - # default use SPARK_HOME environment variable - home: /data/projects/spark-2.4.1-bin-hadoop2.7/ - cores_per_node: {{ .Values.modules.python.spark.cores_per_node }} - nodes: {{ .Values.modules.python.spark.nodes }} - linkis_spark: - cores_per_node: 20 - nodes: 2 - host: 127.0.0.1 - port: 9001 - token_code: MLSS - python_path: /data/projects/fate/python - hive: - host: 127.0.0.1 - port: 10000 - auth_mechanism: - username: - password: - linkis_hive: - host: 127.0.0.1 - port: 9001 - hdfs: - name_node: {{ .Values.modules.python.hdfs.name_node | default "hdfs://namenode:9000" }} - # default / - path_prefix: {{ .Values.modules.python.hdfs.path_prefix }} - rabbitmq: - host: {{ .Values.modules.python.rabbitmq.host }} - mng_port: {{ .Values.modules.python.rabbitmq.mng_port }} - port: {{ .Values.modules.python.rabbitmq.port }} - user: {{ .Values.modules.python.rabbitmq.user }} - password: {{ .Values.modules.python.rabbitmq.password }} - # default conf/rabbitmq_route_table.yaml - route_table: conf/rabbitmq_route_table/rabbitmq_route_table.yaml - pulsar: - host: {{ .Values.modules.python.pulsar.host }} - port: {{ .Values.modules.python.pulsar.port }} - mng_port: {{ .Values.modules.python.pulsar.mng_port }} - topic_ttl: 3 - # default conf/pulsar_route_table.yaml - route_table: conf/pulsar_route_table/pulsar_route_table.yaml - nginx: - host: {{ .Values.modules.python.nginx.host }} - http_port: {{ .Values.modules.python.nginx.http_port }} - grpc_port: {{ .Values.modules.python.nginx.grpc_port }} - fateboard: - host: fateboard - port: 8080 - # on API `/model/load` and `/model/load/do` - # automatic upload models to the model store if it exists locally but does not exist in the model storage - # or download models from the model store if it does not exist locally but exists in the model storage - # this config will not affect API `/model/store` or `/model/restore` - enable_model_store: false - model_store_address: - storage: mysql - name: {{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }} - host: '{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}' - port: {{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }} - user: '{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}' - passwd: '{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}' - max_connections: 10 - stale_timeout: 10 - {{- with .Values.modules.serving }} - servings: - hosts: - {{- if and .ip .port}} - - '{{ .ip }}:{{ .port }}' - {{- else }} - - '' - {{- end }} - {{- if and .useRegistry .zookeeper }} - zookeeper: -{{ toYaml .zookeeper | indent 6 }} - {{- end }} - {{- end }} - transfer_conf.yaml: | - paths: # dir or path - - "python/federatedml/transfer_variable/auth_conf" - component_registry.json: | - { - "components": { - }, - "providers": { - }, - "default_settings": { - "fate_flow":{ - "default_version_key": "FATEFlow" - }, - "fate": { - "default_version_key": "FATE" - }, - "class_path": { - "interface": "components.components.Components", - "feature_instance": "feature.instance.Instance", - "feature_vector": "feature.sparse_vector.SparseVector", - "model": "protobuf.generated", - "model_migrate": "protobuf.model_migrate.model_migrate", - "homo_model_convert": "protobuf.homo_model_convert.homo_model_convert" - } - } - } - job_default_config.yaml: | - # component provider, relative path to get_fate_python_directory - default_component_provider_path: federatedml - - # resource - total_cores_overweight_percent: 1 # 1 means no overweight - total_memory_overweight_percent: 1 # 1 means no overweight - task_parallelism: 1 - task_cores: 4 - task_memory: 0 # mb - max_cores_percent_per_job: 1 # 1 means total - - # scheduling - job_timeout: 259200 # s - remote_request_timeout: 30000 # ms - federated_command_trys: 3 - end_status_job_scheduling_time_limit: 300000 # ms - end_status_job_scheduling_updates: 1 - auto_retries: 0 - auto_retry_delay: 1 #seconds - # It can also be specified in the job configuration using the federated_status_collect_type parameter - federated_status_collect_type: PUSH - - # upload - upload_max_bytes: 4194304000 # bytes - - #component output - output_data_summary_count_limit: 100 ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: fateboard-config - labels: - fateMoudle: fateboard -{{ include "fate.labels" . | indent 4 }} -data: - application.properties: | - server.port=8080 - fateflow.url=http://{{ if .Values.istio.enabled }}127.0.0.1{{ else }}fateflow{{ end }}:9380 - spring.datasource.driver-Class-Name=com.mysql.cj.jdbc.Driver - spring.http.encoding.charset=UTF-8 - spring.http.encoding.enabled=true - server.tomcat.uri-encoding=UTF-8 - fateboard.datasource.jdbc-url=jdbc:mysql://{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}:{{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" }}/{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8 - fateboard.datasource.username={{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }} - fateboard.datasource.password={{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }} - server.tomcat.max-threads=1000 - server.tomcat.max-connections=20000 - spring.servlet.multipart.max-file-size=10MB - spring.servlet.multipart.max-request-size=100MB - spring.datasource.druid.filter.config.enabled=false - spring.datasource.druid.web-stat-filter.enabled=false - spring.datasource.druid.stat-view-servlet.enabled=false - server.compression.enabled=true - server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain - server.board.login.username={{ .Values.modules.fateboard.username }} - server.board.login.password={{ .Values.modules.fateboard.password }} - #server.ssl.key-store=classpath: - #server.ssl.key-store-password= - #server.ssl.key-password= - #server.ssl.key-alias= - spring.session.store-type=jdbc - spring.session.jdbc.initialize-schema=always - #HTTP_APP_KEY= - #HTTP_SECRET_KEY= ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: pulsar-route-table - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -data: - pulsar_route_table.yaml: | - {{- with .Values.modules.pulsar.exchange }} - default: - proxy: "{{ .ip }}:{{ .port }}" - domain: "{{ .domain }}" - {{- end }} -{{- if .Values.modules.pulsar.route_table }} -{{- range $key, $val := .Values.modules.pulsar.route_table }} - {{ $key }}: -{{ toYaml . | indent 6 }} -{{- end }} -{{- else }} - {{ .Values.partyId }}: - host: pulsar - port: 6650 - sslPort: 6651 - proxy: "" -{{- end}} ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: rabbitmq-route-table - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -data: - rabbitmq_route_table.yaml: | -{{- if .Values.modules.rabbitmq.route_table }} -{{- range $key, $val := .Values.modules.rabbitmq.route_table }} - {{ $key }}: -{{ toYaml . | indent 6 }} -{{- end }} -{{- else }} - {{ .Values.partyId }}: - host: rabbitmq - port: 5672 -{{- end}} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: python - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - fateMoudle: python -{{ include "fate.matchLabels" . | indent 6 }} - template: - metadata: - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 8 }} - spec: - {{- if .Values.istio.enabled }} - {{- else }} - initContainers: - {{- if .Values.image.isThridParty }} - - image: {{ .Values.image.registry }}/mysql:8 - {{- else }} - - image: mysql:8 - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - name: ping-mysql - env: - - name: MYSQL_DATABASE - value: "{{ .Values.externalMysqlDatabase | default .Values.modules.mysql.database | default "eggroll_meta" }}" - - name: MYSQL_USER - value: "{{ .Values.externalMysqlUser | default .Values.modules.mysql.user | default "fate" }}" - - name: MYSQL_PASSWORD - value: "{{ .Values.externalMysqlPassword | default .Values.modules.mysql.password | default "fate_dev" }}" - - name: MYSQL_HOST - value: "{{ .Values.externalMysqlIp | default .Values.modules.mysql.ip | default "mysql" }}" - - name: MYSQL_PORT - value: "{{ .Values.externalMysqlPort | default .Values.modules.mysql.port | default "3306" | }}" - command: - - /bin/bash - - -c - - | - set -x - function checkMySQL(){ - checkMySQLCount=0 - while true ; do - checkMySQLCount=$[checkMySQLCount+1] - echo "Waiting for mysql started. check count: $checkMySQLCount" - sleep 2 - - state=`mysqladmin ping -h ${MYSQL_HOST} --port=${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD}| awk '{print $3}'` - if [ "$state" == "alive" ]; then - echo "mysql server has been already started." - break - fi - done - } - echo "Waiting for mysql started..." - checkMySQL - {{- end }} - containers: - - name: python - {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" "spark_local_pulsar" }} - image: {{ .Values.image.registry }}/python-spark:{{ .Values.image.tag }} - {{- else }} - image: {{ .Values.image.registry }}/{{ if .Values.modules.python.enabledNN }}python-nn{{ else }}python{{ end }}:{{ .Values.image.tag }} - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.modules.python.resources}} - resources: - {{- range $key, $val := .Values.modules.python.resources }} - {{ $key }}: -{{ toYaml $val | indent 14 }} - {{- end }} - {{- end }} - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: FATE_LOG_LEVEL - value: {{ .Values.modules.python.logLevel }} - - name: PYTHONPATH - value: "$PYTHONPATH:/data/projects/fate/fate/python:/data/projects/fate/eggroll/python:/data/projects/fate/fateflow/python:/data/projects/fate/fate/python/fate_client" - - name: FATE_PROJECT_BASE - value: "/data/projects/fate" - {{- if eq .Values.modules.python.backend "spark_pulsar" "spark_rabbitmq" }} - - name: FATE_FLOW_UPLOAD_MAX_NUM - value: "1000000" - - name: FATE_FLOW_UPLOAD_MAX_BYTES - value: "104868093952" - {{- end }} - ports: - - containerPort: 9360 - - containerPort: 9380 - command: - - /bin/bash - - -c - - | - set -x - mkdir -p /data/projects/fate/conf/ - cp /data/projects/fate/conf-tmp/transfer_conf.yaml /data/projects/fate/conf/transfer_conf.yaml - cp /data/projects/fate/conf-tmp/service_conf.yaml /data/projects/fate/conf/service_conf.yaml - cp /data/projects/fate/conf-tmp/component_registry.json /data/projects/fate/conf/component_registry.json - cp /data/projects/fate/conf-tmp/job_default_config.yaml /data/projects/fate/conf/job_default_config.yaml - # fix fateflow conf must use IP - sed -i "s/host: fateflow/host: ${POD_IP}/g" /data/projects/fate/conf/service_conf.yaml - - cp /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults-template.conf /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults.conf - sed -i "s/fateflow/${POD_IP}/g" /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults.conf - - sleep 5 && python fateflow/python/fate_flow/fate_flow_server.py - volumeMounts: - - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties - name: eggroll-confs - subPath: eggroll.properties - - name: python-data - mountPath: /data/projects/fate/fateflow/logs - subPath: logs - - mountPath: /data/projects/fate/conf-tmp/ - name: python-confs - - mountPath: /data/projects/spark-2.4.1-bin-hadoop2.7/conf/spark-defaults-template.conf - name: python-confs - subPath: spark-defaults.conf - - mountPath: /data/projects/fate/conf/rabbitmq_route_table - name: rabbitmq-route-table - - mountPath: /data/projects/fate/conf/pulsar_route_table - name: pulsar-route-table - # TODO add mountPath of job and model-cache - - mountPath: /data/projects/fate/jobs - name: python-data - subPath: jobs - - mountPath: /data/projects/fate/model_local_cache - name: python-data - subPath: model-local-cache - {{- if .Values.modules.fateboard.include }} - - image: {{ .Values.image.registry }}/fateboard:{{ .Values.image.tag }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - name: fateboard - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /data/projects/fate/fateboard/conf/application.properties - name: fateboard-confs - subPath: application.properties - - name: python-data - mountPath: /data/projects/fate/fateflow/logs - subPath: logs - {{- end }} - {{- with .Values.modules.python.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.python.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.modules.python.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.image.imagePullSecrets }} - imagePullSecrets: -{{ toYaml . | indent 6 }} - {{- end }} -{{- if .Values.modules.python.serviceAccountName }} - serviceAccountName: {{ .Values.modules.python.serviceAccountName }} -{{- else }} - serviceAccountName: {{ template "serviceAccountName" . }} -{{- end }} - restartPolicy: Always - volumes: - - name: eggroll-confs - configMap: - name: eggroll-config - - name: python-confs - configMap: - name: python-config - - name: rabbitmq-route-table - configMap: - name: rabbitmq-route-table - - name: pulsar-route-table - configMap: - name: pulsar-route-table - - name: fateboard-confs - configMap: - name: fateboard-config - {{- if not .Values.persistence.enabled }} - - name: python-data - emptyDir: {} - {{- else }} - - name: python-data - persistentVolumeClaim: - claimName: {{ .Values.modules.python.existingClaim | default "python-data" }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: fateflow - labels: - fateMoudle: fateflow -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-grpc" - port: 9360 - targetPort: 9360 - protocol: TCP - - name: "tcp-http" - port: 9380 - targetPort: 9380 - protocol: TCP - type: ClusterIP - clusterIP: None - selector: - fateMoudle: python -{{ include "fate.matchLabels" . | indent 4 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: fateflow-client - labels: - fateMoudle: fateflow -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-grpc" - port: 9360 - targetPort: 9360 - {{- if eq .Values.modules.python.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.python.grpcNodePort }} - {{- end }} - protocol: TCP - - name: "tcp-http" - port: 9380 - targetPort: 9380 - {{- if eq .Values.modules.python.type "NodePort" "LoadBalancer" }} - nodePort: {{ .Values.modules.python.httpNodePort }} - {{- end }} - protocol: TCP - type: {{ .Values.modules.python.type }} - - {{- if .Values.modules.python.loadBalancerIP }} - loadBalancerIP: "{{ .Values.modules.python.loadBalancerIP }}" - {{- end }} - - selector: - fateMoudle: python -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{- if and .Values.modules.python.spark.portMaxRetries (ne (print .Values.modules.python.spark.driverHost) "fateflow") }} -apiVersion: v1 -kind: Service -metadata: - name: fateflow-sparkdriver - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - {{ $spark := .Values.modules.python.spark }} - {{- range .Values.modules.python.spark.portMaxRetries | int | until }} - - name: "spark-driver-port-{{ . }}" - port: {{ $spark.driverStartPort | int | add . }} - targetPort: {{ $spark.driverStartPort | int | add . }} - {{- if eq $spark.driverHostType "NodePort" "LoadBalancer" }} - nodePort: {{ $spark.driverStartPort | int | add . }} - {{- end }} - protocol: TCP - - name: "spark-block-manager-port-{{ . }}" - port: {{ $spark.blockManagerStartPort | int | add . }} - targetPort: {{ $spark.blockManagerStartPort | int | add . }} - {{- if eq $spark.driverHostType "NodePort" "LoadBalancer" }} - nodePort: {{ $spark.blockManagerStartPort | int | add . }} - {{- end }} - protocol: TCP - {{- end }} - type: {{ .Values.modules.python.spark.driverHostType }} - selector: - fateMoudle: python -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{- end }} - -{{- if .Values.modules.fateboard.include }} -apiVersion: v1 -kind: Service -metadata: - name: fateboard - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -spec: - ports: - - name: "tcp-fateboard" - port: 8080 - targetPort: 8080 - protocol: TCP - type: {{ .Values.modules.fateboard.type }} - selector: - fateMoudle: python -{{ include "fate.matchLabels" . | indent 4 }} ---- -{{- end }} -{{- if and .Values.persistence.enabled (not .Values.modules.python.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: python-data - labels: - fateMoudle: python -{{ include "fate.labels" . | indent 4 }} -spec: - accessModes: - - {{ .Values.modules.python.accessMode }} - resources: - requests: - storage: {{ .Values.modules.python.size }} - {{- if .Values.modules.python.storageClass }} - {{- if eq "-" .Values.modules.python.storageClass }} - storageClassName: "" - {{- else }} - storageClassName: {{ .Values.modules.python.storageClass }} - {{- end }} - {{- end }} -{{- end }} -{{ end }} diff --git a/helm-charts/FATE/templates/role.yaml b/helm-charts/FATE/templates/role.yaml index bc32aac6f..aa038761e 100644 --- a/helm-charts/FATE/templates/role.yaml +++ b/helm-charts/FATE/templates/role.yaml @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + {{- if .Values.podSecurityPolicy.enabled -}} apiVersion: rbac.authorization.k8s.io/v1 kind: Role diff --git a/helm-charts/FATE/templates/rolebinding.yaml b/helm-charts/FATE/templates/rolebinding.yaml index 04cd276aa..217dec72c 100644 --- a/helm-charts/FATE/templates/rolebinding.yaml +++ b/helm-charts/FATE/templates/rolebinding.yaml @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + {{- if .Values.podSecurityPolicy.enabled -}} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/helm-charts/FATE/templates/serviceaccount.yaml b/helm-charts/FATE/templates/serviceaccount.yaml index da81ad95a..d03e186c2 100644 --- a/helm-charts/FATE/templates/serviceaccount.yaml +++ b/helm-charts/FATE/templates/serviceaccount.yaml @@ -1,3 +1,14 @@ +# Copyright 2019-2022 VMware, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + {{- if .Values.podSecurityPolicy.enabled -}} apiVersion: v1 kind: ServiceAccount diff --git a/helm-charts/FATE/values-template-example.yaml b/helm-charts/FATE/values-template-example.yaml index d385e2b7a..4a7778de4 100644 --- a/helm-charts/FATE/values-template-example.yaml +++ b/helm-charts/FATE/values-template-example.yaml @@ -1,7 +1,7 @@ name: fate-9999 namespace: fate-9999 chartName: fate -chartVersion: v1.7.2 +chartVersion: v1.7.2-a partyId: 9999 registry: "" imageTag: "1.7.2-release" diff --git a/helm-charts/Images_list.md b/helm-charts/Images_list.md new file mode 100644 index 000000000..971d357fd --- /dev/null +++ b/helm-charts/Images_list.md @@ -0,0 +1,38 @@ +All images required to deploy the chart are recorded here. + + + +FATE: + +- federatedai/python-spark:${version-tag} +- mysql:8 +- federatedai/fateboard:${version-tag} +- federatedai/client:${version-tag} +- federatedai/eggroll:${version-tag} +- fluent/fluentd:v1.12 +- federatedai/spark-master:${version-tag} +- federatedai/spark-worker:${version-tag} +- hadoop-datanode:2.0.0-hadoop2.7.4-java8 +- hadoop-namenode:2.0.0-hadoop2.7.4-java8 +- nginx:1.17 +- federatedai/nginx:${version-tag} +- rabbitmq:3.8.3-management +- pulsar:2.7.0 + + + +FATE-Serving + +- federatedai/serving-server:${version-tag} +- federatedai/serving-proxy:${version-tag} +- redis:5 +- federatedai/serving-admin:${version-tag} +- bitnami/zookeeper:3.7.0 + + + +FATE-Exchange + +- federatedai/eggroll:${version-tag} +- federatedai/trafficserver +- federatedai/nginx \ No newline at end of file From 6dc140be9e18f2f3ac95129ce968a4dafd6cb9a4 Mon Sep 17 00:00:00 2001 From: ChenLong Ma Date: Sun, 20 Mar 2022 01:11:20 +0800 Subject: [PATCH 02/15] Fix the FATE task failure caused by not setting fateflow loglevel (#559) Signed-off-by: owlet42 --- .../FATE/templates/core/python-spark.yaml | 2 + k8s-deploy/examples/config.sh | 100 +++++++++--------- .../cluster-spark-local-pulsar.yaml | 1 + .../party-10000/cluster-spark-pulsar.yaml | 1 + .../party-10000/cluster-spark-rabbitmq.yaml | 1 + k8s-deploy/examples/party-10000/cluster.yaml | 1 + .../cluster-spark-local-pulsar.yaml | 1 + .../party-9999/cluster-spark-pulsar.yaml | 1 + .../party-9999/cluster-spark-rabbitmq.yaml | 1 + k8s-deploy/examples/party-9999/cluster.yaml | 1 + k8s-deploy/examples/party-9999/toy-test.sh | 39 ------- 11 files changed, 60 insertions(+), 89 deletions(-) delete mode 100644 k8s-deploy/examples/party-9999/toy-test.sh diff --git a/helm-charts/FATE/templates/core/python-spark.yaml b/helm-charts/FATE/templates/core/python-spark.yaml index bda83fb47..7347b821d 100644 --- a/helm-charts/FATE/templates/core/python-spark.yaml +++ b/helm-charts/FATE/templates/core/python-spark.yaml @@ -94,8 +94,10 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP + {{- if .Values.modules.python.logLevel }} - name: FATE_LOG_LEVEL value: {{ .Values.modules.python.logLevel }} + {{- end }} - name: PYTHONPATH value: "$PYTHONPATH:/data/projects/fate/fate/python:/data/projects/fate/eggroll/python:/data/projects/fate/fateflow/python:/data/projects/fate/fate/python/fate_client" - name: FATE_PROJECT_BASE diff --git a/k8s-deploy/examples/config.sh b/k8s-deploy/examples/config.sh index 25a1b45cd..9603a4693 100644 --- a/k8s-deploy/examples/config.sh +++ b/k8s-deploy/examples/config.sh @@ -11,73 +11,73 @@ echo ${party_10000_IP} echo ${party_exchange_IP} # 9999 config -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-9999/cluster.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_serving_chartVersion}/g" ./party-9999/cluster-serving.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-9999/cluster-spark-rabbitmq.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-9999/cluster-spark-pulsar.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" party-9999/cluster.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_serving_chartVersion}/g" ./party-9999/cluster-serving.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-9999/cluster-spark-rabbitmq.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-9999/cluster-spark-pulsar.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_serving_imageTAG}/g" ./party-9999/cluster-serving.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster-spark-rabbitmq.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster-spark-pulsar.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_serving_imageTAG}/g" ./party-9999/cluster-serving.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster-spark-rabbitmq.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-9999/cluster-spark-pulsar.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-serving.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-serving.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-9999/cluster-spark-pulsar.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-serving.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-serving.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-9999/cluster-spark-pulsar.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-serving.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-serving.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-9999/cluster-spark-pulsar.yaml # 10000 config -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_serving_chartVersion}/g" ./party-10000/cluster-serving.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster-spark-rabbitmq.yaml -sed -i "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster-spark-pulsar.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_serving_chartVersion}/g" ./party-10000/cluster-serving.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster-spark-rabbitmq.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${fate_chartVersion}/g" ./party-10000/cluster-spark-pulsar.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_serving_imageTAG}/g" ./party-10000/cluster-serving.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster-spark-rabbitmq.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster-spark-pulsar.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_serving_imageTAG}/g" ./party-10000/cluster-serving.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster-spark-rabbitmq.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-10000/cluster-spark-pulsar.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-serving.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-serving.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-10000/cluster-spark-pulsar.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-serving.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-serving.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-10000/cluster-spark-pulsar.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-serving.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-spark-pulsar.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-serving.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-spark-rabbitmq.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-10000/cluster-spark-pulsar.yaml # exchange config -sed -i "s/chartVersion: .*/chartVersion: ${chartVersion}/g" ./party-exchange/rollsite.yaml -sed -i "s/chartVersion: .*/chartVersion: ${chartVersion}/g" ./party-exchange/trafficServer.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${chartVersion}/g" ./party-exchange/rollsite.yaml +sed -i "" "s/chartVersion: .*/chartVersion: ${chartVersion}/g" ./party-exchange/trafficServer.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-exchange/rollsite.yaml -sed -i "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-exchange/trafficServer.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-exchange/rollsite.yaml +sed -i "" "s/imageTag: .*/imageTag: ${fate_imageTAG}/g" ./party-exchange/trafficServer.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-exchange/rollsite.yaml -sed -i "s/192.168.9.1/${party_9999_IP}/g" ./party-exchange/trafficServer.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-exchange/rollsite.yaml +sed -i "" "s/192.168.9.1/${party_9999_IP}/g" ./party-exchange/trafficServer.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-exchange/rollsite.yaml -sed -i "s/192.168.10.1/${party_10000_IP}/g" ./party-exchange/trafficServer.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-exchange/rollsite.yaml +sed -i "" "s/192.168.10.1/${party_10000_IP}/g" ./party-exchange/trafficServer.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-exchange/rollsite.yaml -sed -i "s/192.168.0.1/${party_exchange_IP}/g" ./party-exchange/trafficServer.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-exchange/rollsite.yaml +sed -i "" "s/192.168.0.1/${party_exchange_IP}/g" ./party-exchange/trafficServer.yaml diff --git a/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml b/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml index b95b196a5..7b1416338 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml @@ -49,6 +49,7 @@ python: type: NodePort httpNodePort: 30107 grpcNodePort: 30102 + logLevel: INFO servingIp: 192.168.10.1 servingPort: 30105 diff --git a/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml b/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml index 8bb3aa910..ec962fc62 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml @@ -51,6 +51,7 @@ python: type: NodePort httpNodePort: 30107 grpcNodePort: 30102 + logLevel: INFO servingIp: 192.168.10.1 servingPort: 30105 diff --git a/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml b/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml index e6c65e904..2697ccf35 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml @@ -51,6 +51,7 @@ python: type: NodePort httpNodePort: 30107 grpcNodePort: 30102 + logLevel: INFO servingIp: 192.168.10.1 servingPort: 30105 diff --git a/k8s-deploy/examples/party-10000/cluster.yaml b/k8s-deploy/examples/party-10000/cluster.yaml index 11af5322d..2c6705a71 100644 --- a/k8s-deploy/examples/party-10000/cluster.yaml +++ b/k8s-deploy/examples/party-10000/cluster.yaml @@ -48,6 +48,7 @@ python: type: NodePort httpNodePort: 30107 grpcNodePort: 30102 + logLevel: INFO servingIp: 192.168.10.1 servingPort: 30105 diff --git a/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml b/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml index 017525484..a435735f1 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml @@ -49,6 +49,7 @@ python: type: NodePort httpNodePort: 30097 grpcNodePort: 30092 + logLevel: INFO servingIp: 192.168.9.1 servingPort: 30095 diff --git a/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml b/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml index cdfe28827..d2ae589a0 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml @@ -51,6 +51,7 @@ python: type: NodePort httpNodePort: 30097 grpcNodePort: 30092 + logLevel: INFO servingIp: 192.168.9.1 servingPort: 30095 diff --git a/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml b/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml index ff62bb225..f094a5415 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml @@ -51,6 +51,7 @@ python: type: NodePort httpNodePort: 30097 grpcNodePort: 30092 + logLevel: INFO servingIp: 192.168.9.1 servingPort: 30095 diff --git a/k8s-deploy/examples/party-9999/cluster.yaml b/k8s-deploy/examples/party-9999/cluster.yaml index 8d6e21828..cf4d21b75 100644 --- a/k8s-deploy/examples/party-9999/cluster.yaml +++ b/k8s-deploy/examples/party-9999/cluster.yaml @@ -48,6 +48,7 @@ python: type: NodePort httpNodePort: 30097 grpcNodePort: 30092 + logLevel: INFO servingIp: 192.168.9.1 servingPort: 30095 diff --git a/k8s-deploy/examples/party-9999/toy-test.sh b/k8s-deploy/examples/party-9999/toy-test.sh deleted file mode 100644 index 74899562d..000000000 --- a/k8s-deploy/examples/party-9999/toy-test.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - - - -kubectl exec -n fate-9999 -it svc/fateflow -c python -- bash -cd ../examples/toy_example/ -python run_toy_example.py 9999 10000 1 - - -# party Id 9999 - -kubectl -n fate-9999 exec -it svc/fateboard -c python -- bash - - -cd ../examples/toy_example/ -sed -i 's/ "backend": 0,/ "backend": 0,"spark_run": { "total-executor-cores": 12 },/g' toy_example_conf.json -sed -i 's/"partition": 48,/"partition": 4,/g' toy_example_conf.json -python run_toy_example.py 9999 10000 1 -b 1 - - - - -# serving - -kubectl -n fate-10000 exec -it svc/fateboard -c python -- bash - -cd fate_flow; -sed -i "s/\"work_mode\": .*/\"work_mode\": 1,/g" examples/upload_host.json; -sed -i "s/\"backend\": .*/\"backend\": 1,/g" examples/upload_host.json; -python fate_flow_client.py -f upload -c examples/upload_host.json - - -kubectl exec -it svc/fateflow -n fate-9999 -c python -- bash - - -cd fate_flow; -sed -i "s/\"work_mode\": .*/\"work_mode\": 1,/g" examples/upload_guest.json; -sed -i "s/\"backend\": .*/\"backend\": 1,/g" examples/upload_guest.json; -python fate_flow_client.py -f upload -c examples/upload_guest.json From 7475eedcfb23f118378452172eacb87b01b1344f Mon Sep 17 00:00:00 2001 From: ChenLong Ma Date: Sun, 20 Mar 2022 01:12:54 +0800 Subject: [PATCH 03/15] Fix getting "the server could not find the requested resource" when using `kubefate describe` (#553) * fix kubefate bug in k8s v1.22+ kubefate cluster describe got "the server could not find the requested resource" because k8s API 'networkingv1beta1' is deprecated Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * Add version for bug Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * fix Deployment resources in special states are not recognized. When the pod is in ImagePullBackOff Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * fix swag api error Signed-off-by: owlet42 * update go.mod Signed-off-by: owlet42 Co-authored-by: Layne Peng --- k8s-deploy/Makefile | 6 +- k8s-deploy/docs/docs.go | 78 +++++++- k8s-deploy/docs/swagger.json | 68 +++++++ k8s-deploy/docs/swagger.yaml | 43 ++++- k8s-deploy/go.mod | 67 ++++--- k8s-deploy/go.sum | 248 ++++++++++++++++--------- k8s-deploy/kubefate.yaml | 2 +- k8s-deploy/pkg/api/user.go | 2 +- k8s-deploy/pkg/api/version.go | 2 +- k8s-deploy/pkg/service/info.go | 5 + k8s-deploy/pkg/service/kube/ingress.go | 14 +- k8s-deploy/pkg/service/kube_deploy.go | 20 +- k8s-deploy/pkg/service/kube_ingress.go | 5 - 13 files changed, 403 insertions(+), 157 deletions(-) diff --git a/k8s-deploy/Makefile b/k8s-deploy/Makefile index 17db76bc2..8b166d04c 100644 --- a/k8s-deploy/Makefile +++ b/k8s-deploy/Makefile @@ -1,5 +1,5 @@ NAME ?= federatedai/kubefate -VERSION ?= v1.4.3 +VERSION ?= v1.4.4 IMG ?= ${NAME}:${VERSION} ifeq (,$(shell go env GOBIN)) @@ -63,7 +63,7 @@ vet: go vet ./... # Generate swag API file swag: swag-bin - $(SWAG_BIN) init --parseDependency --parseInternal -g pkg/api/service.go + $(SWAG_BIN) init --parseDependency --parseInternal --parseDepth 1 -g pkg/api/service.go package: kubefate-without-swag mkdir -p tmp/kubefate; @@ -85,7 +85,7 @@ ifeq (, $(shell which swag)) SWAG_BIN_TMP_DIR=$$(mktemp -d) ;\ cd $$SWAG_BIN_TMP_DIR ;\ go mod init tmp ;\ - go install github.com/swaggo/swag/cmd/swag@latest ;\ + go install github.com/swaggo/swag/cmd/swag@v1.8.0 ;\ rm -rf $$SWAG_BIN_TMP_DIR ;\ } SWAG_BIN=$(GOBIN)/swag diff --git a/k8s-deploy/docs/docs.go b/k8s-deploy/docs/docs.go index a476886be..73fe8c218 100644 --- a/k8s-deploy/docs/docs.go +++ b/k8s-deploy/docs/docs.go @@ -4,7 +4,7 @@ package docs import "github.com/swaggo/swag" -const docTemplate_swagger = `{ +const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { @@ -1502,6 +1502,74 @@ const docTemplate_swagger = `{ }, "/user/{userId}": { "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Get user by userId", + "parameters": [ + { + "type": "string", + "description": "User", + "name": "userId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Authentication header", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/api.JSONResult" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/modules.User" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + }, + "401": { + "description": "Unauthorized operation", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + } + } + }, + "delete": { "security": [ { "ApiKeyAuth": [] @@ -1975,8 +2043,8 @@ const docTemplate_swagger = `{ } }` -// SwaggerInfo_swagger holds exported Swagger Info so clients can modify it -var SwaggerInfo_swagger = &swag.Spec{ +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ Version: "v1", Host: "", BasePath: "/v1", @@ -1984,9 +2052,9 @@ var SwaggerInfo_swagger = &swag.Spec{ Title: "KubeFATE service API", Description: "This is a KubeFATE.", InfoInstanceName: "swagger", - SwaggerTemplate: docTemplate_swagger, + SwaggerTemplate: docTemplate, } func init() { - swag.Register(SwaggerInfo_swagger.InstanceName(), SwaggerInfo_swagger) + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) } diff --git a/k8s-deploy/docs/swagger.json b/k8s-deploy/docs/swagger.json index 63d8d9df6..d059357ce 100644 --- a/k8s-deploy/docs/swagger.json +++ b/k8s-deploy/docs/swagger.json @@ -1494,6 +1494,74 @@ }, "/user/{userId}": { "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Get user by userId", + "parameters": [ + { + "type": "string", + "description": "User", + "name": "userId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Authentication header", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/api.JSONResult" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/modules.User" + } + } + } + ] + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + }, + "401": { + "description": "Unauthorized operation", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/api.JSONERRORResult" + } + } + } + }, + "delete": { "security": [ { "ApiKeyAuth": [] diff --git a/k8s-deploy/docs/swagger.yaml b/k8s-deploy/docs/swagger.yaml index 0af899f4f..81ab4a968 100644 --- a/k8s-deploy/docs/swagger.yaml +++ b/k8s-deploy/docs/swagger.yaml @@ -1116,7 +1116,7 @@ paths: tags: - User /user/{userId}: - get: + delete: parameters: - description: User in: path @@ -1152,6 +1152,47 @@ paths: summary: Delete user by userId tags: - User + get: + parameters: + - description: User + in: path + name: userId + required: true + type: string + - description: Authentication header + in: header + name: Authorization + required: true + type: string + produces: + - application/json + responses: + "200": + description: Success + schema: + allOf: + - $ref: '#/definitions/api.JSONResult' + - properties: + data: + $ref: '#/definitions/modules.User' + type: object + "400": + description: Bad Request + schema: + $ref: '#/definitions/api.JSONERRORResult' + "401": + description: Unauthorized operation + schema: + $ref: '#/definitions/api.JSONERRORResult' + "500": + description: Internal server error + schema: + $ref: '#/definitions/api.JSONERRORResult' + security: + - ApiKeyAuth: [] + summary: Get user by userId + tags: + - User /user/login: post: consumes: diff --git a/k8s-deploy/go.mod b/k8s-deploy/go.mod index cfa483859..49124c888 100644 --- a/k8s-deploy/go.mod +++ b/k8s-deploy/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( github.com/Masterminds/sprig/v3 v3.2.2 github.com/appleboy/gin-jwt/v2 v2.8.0 - github.com/gin-contrib/logger v0.2.1 + github.com/gin-contrib/logger v0.2.2 github.com/gin-gonic/gin v1.7.7 github.com/gofrs/flock v0.8.1 github.com/gosuri/uitable v0.0.4 @@ -17,19 +17,19 @@ require ( github.com/spf13/viper v1.10.1 github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2 github.com/swaggo/gin-swagger v1.4.1 - github.com/swaggo/swag v1.7.9 + github.com/swaggo/swag v1.8.0 github.com/urfave/cli/v2 v2.3.0 - golang.org/x/crypto v0.0.0-20220208050332-20e1d8d225ab - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd + golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 + golang.org/x/net v0.0.0-20220225172249-27dd8689420f gopkg.in/yaml.v2 v2.4.0 - gorm.io/driver/mysql v1.2.3 - gorm.io/driver/sqlite v1.2.6 - gorm.io/gorm v1.22.5 + gorm.io/driver/mysql v1.3.2 + gorm.io/driver/sqlite v1.3.1 + gorm.io/gorm v1.23.2 helm.sh/helm/v3 v3.8.0 - k8s.io/api v0.23.3 - k8s.io/apimachinery v0.23.3 - k8s.io/cli-runtime v0.23.3 - k8s.io/client-go v0.23.3 + k8s.io/api v0.23.4 + k8s.io/apimachinery v0.23.4 + k8s.io/cli-runtime v0.23.4 + k8s.io/client-go v0.23.4 sigs.k8s.io/yaml v1.3.0 ) @@ -41,19 +41,18 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/squirrel v1.5.2 // indirect - github.com/Microsoft/hcsshim v0.9.2 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect - github.com/containerd/containerd v1.5.9 // indirect + github.com/containerd/containerd v1.6.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/cli v20.10.12+incompatible // indirect - github.com/docker/distribution v2.8.0+incompatible // indirect + github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker v20.10.12+incompatible // indirect github.com/docker/docker-credential-helpers v0.6.4 // indirect github.com/docker/go-connections v0.4.0 // indirect @@ -73,11 +72,11 @@ require ( github.com/go-openapi/swag v0.21.1 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-playground/validator/v10 v10.10.0 // indirect + github.com/go-playground/validator/v10 v10.10.1 // indirect github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect + github.com/golang-jwt/jwt/v4 v4.3.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/go-cmp v0.5.7 // indirect @@ -95,19 +94,19 @@ require ( github.com/jinzhu/now v1.1.4 // indirect github.com/jmoiron/sqlx v1.3.4 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.14.2 // indirect + github.com/klauspost/compress v1.15.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/lib/pq v1.10.4 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect - github.com/magiconair/properties v1.8.5 // indirect + github.com/magiconair/properties v1.8.6 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect - github.com/mattn/go-sqlite3 v1.14.11 // indirect + github.com/mattn/go-sqlite3 v1.14.12 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -131,7 +130,7 @@ require ( github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/rubenv/sql-migrate v1.1.0 // indirect + github.com/rubenv/sql-migrate v1.1.1 // indirect github.com/russross/blackfriday v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect @@ -143,36 +142,36 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.7.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect - github.com/ugorji/go/codec v1.2.6 // indirect + github.com/ugorji/go/codec v1.2.7 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xlab/treeprint v1.1.0 // indirect - go.starlark.net v0.0.0-20220203230714-bb14e151c28f // indirect - golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect + go.starlark.net v0.0.0-20220302181546-5411bad688d1 // indirect + golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220207234003-57398862261d // indirect + golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect + golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect golang.org/x/tools v0.1.9 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220207185906-7721543eae58 // indirect - google.golang.org/grpc v1.44.0 // indirect + google.golang.org/genproto v0.0.0-20220308174144-ae0e22291548 // indirect + google.golang.org/grpc v1.45.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.66.3 // indirect + gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - k8s.io/apiextensions-apiserver v0.23.3 // indirect - k8s.io/apiserver v0.23.3 // indirect - k8s.io/component-base v0.23.3 // indirect + k8s.io/apiextensions-apiserver v0.23.4 // indirect + k8s.io/apiserver v0.23.4 // indirect + k8s.io/component-base v0.23.4 // indirect k8s.io/klog/v2 v2.40.1 // indirect k8s.io/kube-openapi v0.0.0-20220124234850-424119656bbf // indirect - k8s.io/kubectl v0.23.3 // indirect - k8s.io/utils v0.0.0-20220127004650-9b3446523e65 // indirect + k8s.io/kubectl v0.23.4 // indirect + k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect oras.land/oras-go v1.1.0 // indirect sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect - sigs.k8s.io/kustomize/api v0.11.1 // indirect + sigs.k8s.io/kustomize/api v0.11.2 // indirect sigs.k8s.io/kustomize/kyaml v0.13.3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect ) diff --git a/k8s-deploy/go.sum b/k8s-deploy/go.sum index 3b89018ac..7d50fbc35 100644 --- a/k8s-deploy/go.sum +++ b/k8s-deploy/go.sum @@ -1,4 +1,5 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -51,6 +52,7 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v56.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -117,6 +119,7 @@ github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg3 github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= @@ -143,6 +146,7 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/appleboy/gin-jwt/v2 v2.8.0 h1:Glo7cb9eBR+hj8Y7WzgfkOlqCaNLjP+RV4dNO3fpdps= @@ -170,7 +174,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= @@ -181,6 +184,7 @@ github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= @@ -188,6 +192,7 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= @@ -201,6 +206,7 @@ github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41 github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -209,6 +215,7 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -240,13 +247,15 @@ github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4S github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= +github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -262,25 +271,28 @@ github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09Zvgq github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/containerd v1.5.9 h1:rs6Xg1gtIxaeyG+Smsb/0xaSDu1VgFhOCKBXxMxbsF4= +github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= +github.com/containerd/containerd v1.6.1 h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o= +github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= @@ -290,6 +302,7 @@ github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= @@ -299,12 +312,10 @@ github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDG github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= @@ -314,16 +325,20 @@ github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNR github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -370,8 +385,8 @@ github.com/docker/cli v20.10.12+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hH github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.8.0+incompatible h1:l9EaZDICImO1ngI+uTifW+ZYvvz7fKISBAKpg+MbWbY= -github.com/docker/distribution v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U= @@ -441,8 +456,8 @@ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2H github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.3 h1:etUaeesHhEORpZMp18zoOhepboiWnFtXrBZxszWUn4k= github.com/gin-contrib/gzip v0.0.3/go.mod h1:YxxswVZIqOvcHEQpsSn+QF5guQtO1dCfy0shBPy4jFc= -github.com/gin-contrib/logger v0.2.1 h1:Wu9JyQRuv4a7ZgqNlcbTC+RpElIwAueyv/wrFUIm6pE= -github.com/gin-contrib/logger v0.2.1/go.mod h1:6uKBteCGZF6VtxSfO1MKWl7aEu1sPSOhwCEAFPFxnnI= +github.com/gin-contrib/logger v0.2.2 h1:xIoUvRdmfID02X09wfq7wuWmevBTdMK1T6TQjbv5r+4= +github.com/gin-contrib/logger v0.2.2/go.mod h1:6uKBteCGZF6VtxSfO1MKWl7aEu1sPSOhwCEAFPFxnnI= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -466,9 +481,13 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= @@ -502,19 +521,23 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= -github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.10.1 h1:uA0+amWMiglNZKZ9FJRKUAe9U3RX91eVn1JYXMWt7ig= +github.com/go-playground/validator/v10 v10.10.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/logger v1.0.3 h1:YaXOTHNPCvkqqA7w05A4v0k2tCdpr+sgFlgINbQ6gqc= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobuffalo/logger v1.0.3/go.mod h1:SoeejUwldiS7ZsyCBphOGURmWdwUFXs0J7TCjEhjKxM= -github.com/gobuffalo/packd v1.0.0 h1:6ERZvJHfe24rfFmA9OaoKBdC7+c9sydrytMg8SdFGBM= +github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= +github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= github.com/gobuffalo/packd v1.0.0/go.mod h1:6VTc4htmJRFB7u1m/4LeMTWjFoYrUiBkU9Fdec9hrhI= -github.com/gobuffalo/packr/v2 v2.8.1 h1:tkQpju6i3EtMXJ9uoF5GT6kB+LMTimDWD8Xvbz6zDVA= +github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= +github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= github.com/gobuffalo/packr/v2 v2.8.1/go.mod h1:c/PLlOuTU+p3SybaJATW3H6lX/iK7xEz5OeMf+NnJpg= +github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY= +github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -522,12 +545,12 @@ github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblf github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0 h1:zgVt4UpGxcqVOw97aRGxT4svlcmdK35fynLNctY32zI= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -537,8 +560,9 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -672,6 +696,7 @@ github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyN github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= @@ -683,6 +708,7 @@ github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iP github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -721,11 +747,11 @@ github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas= github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -751,8 +777,9 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/karrick/godirwalk v1.15.8 h1:7+rWAZPn9zuRxaIqqT8Ohs2Q2Ac0msBqwRdxNCr2VVs= github.com/karrick/godirwalk v1.15.8/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= +github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= +github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -760,8 +787,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.14.2 h1:S0OHlFk/Gbon/yauFJ4FfJJF5V0fc5HbBTJazi28pRw= -github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U= +github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -798,8 +825,9 @@ github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -840,8 +868,8 @@ github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lL github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.11 h1:gt+cp9c0XGqe9S/wAHTL3n/7MqY+siPWgWJgqdsFrzQ= -github.com/mattn/go-sqlite3 v1.14.11/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= +github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -882,7 +910,9 @@ github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2J github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= @@ -910,8 +940,9 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= @@ -925,8 +956,10 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -934,8 +967,9 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -944,6 +978,7 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= @@ -951,20 +986,19 @@ github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59P github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/opencontainers/selinux v1.8.2 h1:c4ca10UMgRcvZ6h0K4HtS15UaVSBEaE+iln2LVpAuGc= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE= github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= @@ -1023,6 +1057,7 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1054,8 +1089,8 @@ github.com/rs/zerolog v1.23.0/go.mod h1:6c7hFfxPOy7TacJc4Fcdi24/J0NKYGzjG8FWRI91 github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= github.com/rubenv/sql-migrate v0.0.0-20210614095031-55d5740dbbcc/go.mod h1:HFLT6i9iR4QBOF5rdCyjddC9t59ArqWJV2xx+jwcCMo= -github.com/rubenv/sql-migrate v1.1.0 h1:Ib7Q31lUTsryEGKQGpzjq6hL/imvmMof7kDV4b7gVlc= -github.com/rubenv/sql-migrate v1.1.0/go.mod h1:XsKV+aiWNJpTDKtG1hh0C5hP+S6VQNcWwhLhqCLKJFk= +github.com/rubenv/sql-migrate v1.1.1 h1:haR5Hn8hbW9/SpAICrXoZqXnywS7Q5WijwkQENPeNWY= +github.com/rubenv/sql-migrate v1.1.1/go.mod h1:/7TZymwxN8VWumcIxw1jjHEcR1djpdkMHQPT4FWdnbQ= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= @@ -1064,13 +1099,16 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1146,8 +1184,9 @@ github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2 h1:+iNTcqQJy0OZ5jk6a5 github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w= github.com/swaggo/gin-swagger v1.4.1 h1:F2vJndw+Q+ZBOlsC6CaodqXJV3ZOf6hpg/4Y6MEx5BM= github.com/swaggo/gin-swagger v1.4.1/go.mod h1:hmJ1vPn+XjUvnbzjCdUAxVqgraxELxk8x5zAsjCE5mg= -github.com/swaggo/swag v1.7.9 h1:6vCG5mm43ebDzGlZPMGYrYI4zKFfOr5kicQX8qjeDwc= github.com/swaggo/swag v1.7.9/go.mod h1:gZ+TJ2w/Ve1RwQsA2IRoSOTidHz6DX+PIG8GWvbnoLU= +github.com/swaggo/swag v1.8.0 h1:80NNhvpJcuItNpBDqgJwDuKlMmaZ/OATOzhG3bhcM3w= +github.com/swaggo/swag v1.8.0/go.mod h1:gZ+TJ2w/Ve1RwQsA2IRoSOTidHz6DX+PIG8GWvbnoLU= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1162,13 +1201,14 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E= -github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= +github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= -github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= +github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1179,9 +1219,11 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -1238,23 +1280,33 @@ go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= -go.starlark.net v0.0.0-20220203230714-bb14e151c28f h1:aW4TkS39/naJa9wPSbIXtZUQOlvuUh8gxCsLRrJoByU= -go.starlark.net v0.0.0-20220203230714-bb14e151c28f/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +go.starlark.net v0.0.0-20220302181546-5411bad688d1 h1:i0Sz4b+qJi5xwOaFZqZ+RNHkIpaKLDofei/Glt+PMNc= +go.starlark.net v0.0.0-20220302181546-5411bad688d1/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -1279,15 +1331,16 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220208050332-20e1d8d225ab h1:lnZ4LoV0UMdibeCUfIB2a4uFwRu491WX/VB2reB8xNc= -golang.org/x/crypto v0.0.0-20220208050332-20e1d8d225ab/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70 h1:syTAU9FwmvzEoIYMqcPHOcVm4H3U5u90WsvuYgwpETU= +golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1379,7 +1432,9 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1387,9 +1442,11 @@ golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1407,8 +1464,9 @@ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a h1:qfl7ob3DIEs3Ml9oLuPwY2N04gymzAW04WsUQHIClgM= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1499,6 +1557,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1526,19 +1585,24 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220207234003-57398862261d h1:Bm7BNOQt2Qv7ZqysjeLjgCBanX+88Z/OtdvsrEv1Djc= -golang.org/x/sys v0.0.0-20220207234003-57398862261d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1560,8 +1624,8 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M= -golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 h1:M73Iuj3xbbb9Uk1DYhzydthsj6oOd6l9bpuFcNoUvTs= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1621,6 +1685,7 @@ golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4X golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1756,8 +1821,8 @@ google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207185906-7721543eae58 h1:i67FGOy2/zGfhE3YgHdrOrcFbOBhqdcRoBrsDqSQrOI= -google.golang.org/genproto v0.0.0-20220207185906-7721543eae58/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220308174144-ae0e22291548 h1:J5ZNG1QIdstOl8aaUoFoQJfp04FKTsFV+jwkBHEchqs= +google.golang.org/genproto v0.0.0-20220308174144-ae0e22291548/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1790,8 +1855,9 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1826,8 +1892,8 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.3 h1:jRskFVxYaMGAMUbN0UZ7niA9gzL9B49DOqE78vg0k3w= -gopkg.in/ini.v1 v1.66.3/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= +gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -1849,14 +1915,13 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/mysql v1.2.3 h1:cZqzlOfg5Kf1VIdLC1D9hT6Cy9BgxhExLj/2tIgUe7Y= -gorm.io/driver/mysql v1.2.3/go.mod h1:qsiz+XcAyMrS6QY+X3M9R6b/lKM1imKmcuK9kac5LTo= -gorm.io/driver/sqlite v1.2.6 h1:SStaH/b+280M7C8vXeZLz/zo9cLQmIGwwj3cSj7p6l4= -gorm.io/driver/sqlite v1.2.6/go.mod h1:gyoX0vHiiwi0g49tv+x2E7l8ksauLK0U/gShcdUsjWY= -gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= -gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk= -gorm.io/gorm v1.22.5 h1:lYREBgc02Be/5lSCTuysZZDb6ffL2qrat6fg9CFbvXU= -gorm.io/gorm v1.22.5/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/driver/mysql v1.3.2 h1:QJryWiqQ91EvZ0jZL48NOpdlPdMjdip1hQ8bTgo4H7I= +gorm.io/driver/mysql v1.3.2/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U= +gorm.io/driver/sqlite v1.3.1 h1:bwfE+zTEWklBYoEodIOIBwuWHpnx52Z9zJFW5F33WLk= +gorm.io/driver/sqlite v1.3.1/go.mod h1:wJx0hJspfycZ6myN38x1O/AqLtNS6c5o9TndewFbELg= +gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.2 h1:xmq9QRMWL8HTJyhAUBXy8FqIIQCYESeKfJL4DoGKiWQ= +gorm.io/gorm v1.23.2/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= @@ -1874,48 +1939,55 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.23.1/go.mod h1:WfXnOnwSqNtG62Y1CdjoMxh7r7u9QXGCkA1u0na2jgo= -k8s.io/api v0.23.3 h1:KNrME8KHGr12Ozjf8ytOewKzZh6hl/hHUZeHddT3a38= -k8s.io/api v0.23.3/go.mod h1:w258XdGyvCmnBj/vGzQMj6kzdufJZVUwEM1U2fRJwSQ= +k8s.io/api v0.23.4 h1:85gnfXQOWbJa1SiWGpE9EEtHs0UVvDyIsSMpEtl2D4E= +k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= k8s.io/apiextensions-apiserver v0.23.1/go.mod h1:0qz4fPaHHsVhRApbtk3MGXNn2Q9M/cVWWhfHdY2SxiM= -k8s.io/apiextensions-apiserver v0.23.3 h1:JvPJA7hSEAqMRteveq4aj9semilAZYcJv+9HHFWfUdM= -k8s.io/apiextensions-apiserver v0.23.3/go.mod h1:/ZpRXdgKZA6DvIVPEmXDCZJN53YIQEUDF+hrpIQJL38= +k8s.io/apiextensions-apiserver v0.23.4 h1:AFDUEu/yEf0YnuZhqhIFhPLPhhcQQVuR1u3WCh0rveU= +k8s.io/apiextensions-apiserver v0.23.4/go.mod h1:TWYAKymJx7nLMxWCgWm2RYGXHrGlVZnxIlGnvtfYu+g= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.23.1/go.mod h1:SADt2Kl8/sttJ62RRsi9MIV4o8f5S3coArm0Iu3fBno= -k8s.io/apimachinery v0.23.3 h1:7IW6jxNzrXTsP0c8yXz2E5Yx/WTzVPTsHIx/2Vm0cIk= -k8s.io/apimachinery v0.23.3/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apimachinery v0.23.4 h1:fhnuMd/xUL3Cjfl64j5ULKZ1/J9n8NuQEgNL+WXWfdM= +k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= k8s.io/apiserver v0.23.1/go.mod h1:Bqt0gWbeM2NefS8CjWswwd2VNAKN6lUKR85Ft4gippY= -k8s.io/apiserver v0.23.3 h1:gWY1DmA0AdAGR/H+Q/1FtyGkFq8xqSaZOw7oLopmO8k= -k8s.io/apiserver v0.23.3/go.mod h1:3HhsTmC+Pn+Jctw+Ow0LHA4dQ4oXrQ4XJDzrVDG64T4= +k8s.io/apiserver v0.23.4 h1:zNvQlG+C/ERjuUz4p7eY/0IWHaMixRSBoxgmyIdwo9Y= +k8s.io/apiserver v0.23.4/go.mod h1:A6l/ZcNtxGfPSqbFDoxxOjEjSKBaQmE+UTveOmMkpNc= k8s.io/cli-runtime v0.23.1/go.mod h1:r9r8H/qfXo9w+69vwUL7LokKlLRKW5D6A8vUKCx+YL0= -k8s.io/cli-runtime v0.23.3 h1:aJiediw+uUbxkfO6BNulcAMTUoU9Om43g3R7rIkYqcw= -k8s.io/cli-runtime v0.23.3/go.mod h1:yA00O5pDqnjkBh8fkuugBbfIfjB1nOpz+aYLotbnOfc= +k8s.io/cli-runtime v0.23.4 h1:C3AFQmo4TK4dlVPLOI62gtHEHu0OfA2Cp4UVRZ1JXns= +k8s.io/cli-runtime v0.23.4/go.mod h1:7KywUNTUibmHPqmpDFuRO1kc9RhsufHv2lkjCm2YZyM= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.23.1/go.mod h1:6QSI8fEuqD4zgFK0xbdwfB/PthBsIxCJMa3s17WlcO0= -k8s.io/client-go v0.23.3 h1:23QYUmCQ/W6hW78xIwm3XqZrrKZM+LWDqW2zfo+szJs= -k8s.io/client-go v0.23.3/go.mod h1:47oMd+YvAOqZM7pcQ6neJtBiFH7alOyfunYN48VsmwE= +k8s.io/client-go v0.23.4 h1:YVWvPeerA2gpUudLelvsolzH7c2sFoXXR5wM/sWqNFU= +k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/code-generator v0.23.1/go.mod h1:V7yn6VNTCWW8GqodYCESVo95fuiEg713S8B7WacWZDA= -k8s.io/code-generator v0.23.3/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= +k8s.io/code-generator v0.23.4/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= k8s.io/component-base v0.23.1/go.mod h1:6llmap8QtJIXGDd4uIWJhAq0Op8AtQo6bDW2RrNMTeo= -k8s.io/component-base v0.23.3 h1:q+epprVdylgecijVGVdf4MbizEL2feW4ssd7cdo6LVY= -k8s.io/component-base v0.23.3/go.mod h1:1Smc4C60rWG7d3HjSYpIwEbySQ3YWg0uzH5a2AtaTLg= +k8s.io/component-base v0.23.4 h1:SziYh48+QKxK+ykJ3Ejqd98XdZIseVBG7sBaNLPqy6M= +k8s.io/component-base v0.23.4/go.mod h1:8o3Gg8i2vnUXGPOwciiYlkSaZT+p+7gA9Scoz8y4W4E= k8s.io/component-helpers v0.23.1/go.mod h1:ZK24U+2oXnBPcas2KolLigVVN9g5zOzaHLkHiQMFGr0= -k8s.io/component-helpers v0.23.3/go.mod h1:SH+W/WPTaTenbWyDEeY7iytAQiMh45aqKxkvlqQ57cg= +k8s.io/component-helpers v0.23.4/go.mod h1:1Pl7L4zukZ054ElzRbvmZ1FJIU8roBXFOeRFu8zipa4= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= @@ -1923,27 +1995,30 @@ k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAE k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4= k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20220124234850-424119656bbf h1:M9XBsiMslw2lb2ZzglC0TOkBPK5NQi0/noUrdnoFwUg= k8s.io/kube-openapi v0.0.0-20220124234850-424119656bbf/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kubectl v0.23.1/go.mod h1:Ui7dJKdUludF8yWAOSN7JZEkOuYixX5yF6E6NjoukKE= -k8s.io/kubectl v0.23.3 h1:gJsF7cahkWDPYlNvYKK+OrBZLAJUBzCym+Zsi+dfi1E= -k8s.io/kubectl v0.23.3/go.mod h1:VBeeXNgLhSabu4/k0O7Q0YujgnA3+CLTUE0RcmF73yY= +k8s.io/kubectl v0.23.4 h1:mAa+zEOlyZieecEy+xSrhjkpMcukYyHWzcNdX28dzMY= +k8s.io/kubectl v0.23.4/go.mod h1:Dgb0Rvx/8JKS/C2EuvsNiQc6RZnX0SbHJVG3XUzH6ok= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/metrics v0.23.1/go.mod h1:qXvsM1KANrc+ZZeFwj6Phvf0NLiC+d3RwcsLcdGc+xs= -k8s.io/metrics v0.23.3/go.mod h1:Ut8TvkbsO4oMVeUzaTArvPrcw9QRFLs2XNzUlORjdYE= +k8s.io/metrics v0.23.4/go.mod h1:cl6sY9BdVT3DubbpqnkPIKi6mn/F2ltkU4yH1tEJ3Bo= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220127004650-9b3446523e65 h1:ONWS0Wgdg5wRiQIAui7L/023aC9+IxrIrydY7l8llsE= -k8s.io/utils v0.0.0-20220127004650-9b3446523e65/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= oras.land/oras-go v1.1.0 h1:tfWM1RT7PzUwWphqHU6ptPU3ZhwVnSw/9nEGf519rYg= oras.land/oras-go v1.1.0/go.mod h1:1A7vR/0KknT2UkJVWh+xMi95I/AhK8ZrxrnUSmXN0bQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= @@ -1951,14 +2026,15 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.27/go.mod h1:tq2nT0Kx7W+/f2JVE+zxYtUhdjuELJkVpNz+x/QN5R4= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= -sigs.k8s.io/kustomize/api v0.11.1 h1:/Vutu+gAqVo8skw1xCZrsZD39SN4Adg+z7FrSTw9pds= -sigs.k8s.io/kustomize/api v0.11.1/go.mod h1:GZuhith5YcqxIDe0GnRJNx5xxPTjlwaLTt/e+ChUtJA= +sigs.k8s.io/kustomize/api v0.11.2 h1:6YvCJHFDwsLwAX7zNHBxMZi3k7dGIXI8G9l0saYQI0E= +sigs.k8s.io/kustomize/api v0.11.2/go.mod h1:GZuhith5YcqxIDe0GnRJNx5xxPTjlwaLTt/e+ChUtJA= sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= diff --git a/k8s-deploy/kubefate.yaml b/k8s-deploy/kubefate.yaml index 83d173bb2..1ae22fc50 100644 --- a/k8s-deploy/kubefate.yaml +++ b/k8s-deploy/kubefate.yaml @@ -19,7 +19,7 @@ spec: spec: serviceAccountName: kubefate-admin containers: - - image: federatedai/kubefate:v1.4.3 + - image: federatedai/kubefate:v1.4.4 imagePullPolicy: IfNotPresent name: kubefate env: diff --git a/k8s-deploy/pkg/api/user.go b/k8s-deploy/pkg/api/user.go index 2757b95cb..1da16ccfc 100644 --- a/k8s-deploy/pkg/api/user.go +++ b/k8s-deploy/pkg/api/user.go @@ -240,7 +240,7 @@ func getUserFindByUUID(uuid string) (modules.User, error) { // @Failure 400 {object} JSONERRORResult "Bad Request" // @Failure 401 {object} JSONERRORResult "Unauthorized operation" // @Failure 500 {object} JSONERRORResult "Internal server error" -// @Router /user/{userId} [get] +// @Router /user/{userId} [delete] // @Param Authorization header string true "Authentication header" // @Security ApiKeyAuth func (*User) deleteUser(c *gin.Context) { diff --git a/k8s-deploy/pkg/api/version.go b/k8s-deploy/pkg/api/version.go index 0cde7c42b..2aff0369c 100644 --- a/k8s-deploy/pkg/api/version.go +++ b/k8s-deploy/pkg/api/version.go @@ -20,7 +20,7 @@ import ( ) // ServiceVersion code release version -const ServiceVersion = "v1.4.3" +const ServiceVersion = "v1.4.4" // Version API struct type Version struct { diff --git a/k8s-deploy/pkg/service/info.go b/k8s-deploy/pkg/service/info.go index 71f35f467..a8151140e 100644 --- a/k8s-deploy/pkg/service/info.go +++ b/k8s-deploy/pkg/service/info.go @@ -21,20 +21,24 @@ import "github.com/rs/zerolog/log" func GetClusterInfo(name, namespace string) (map[string]interface{}, error) { ip, err := GetNodeIP() if err != nil { + log.Error().Str("func", "GetNodeIP()").Err(err).Msg("GetNodeIP error") return nil, err } port, err := GetProxySvcNodePorts(name, getDefaultNamespace(namespace)) if err != nil { + log.Error().Str("func", "GetProxySvcNodePorts()").Err(err).Msg("GetProxySvcNodePorts error") return nil, err } containerList, err := GetPodContainersStatus(name, getDefaultNamespace(namespace)) if err != nil { + log.Error().Str("func", "GetPodContainersStatus()").Err(err).Msg("GetPodContainersStatus error") return nil, err } deploymentList, err := GetClusterDeployStatus(name, getDefaultNamespace(namespace)) if err != nil { + log.Error().Str("func", "GetClusterDeployStatus()").Err(err).Msg("GetClusterDeployStatus error") return nil, err } @@ -45,6 +49,7 @@ func GetClusterInfo(name, namespace string) (map[string]interface{}, error) { ingressURLList, err := GetIngressURLList(name, getDefaultNamespace(namespace)) if err != nil { + log.Error().Str("func", "GetIngressURLList()").Err(err).Msg("GetIngressURLList error") return nil, err } diff --git a/k8s-deploy/pkg/service/kube/ingress.go b/k8s-deploy/pkg/service/kube/ingress.go index c2392b95f..33aa2b1e8 100644 --- a/k8s-deploy/pkg/service/kube/ingress.go +++ b/k8s-deploy/pkg/service/kube/ingress.go @@ -18,23 +18,23 @@ package kube import ( "context" - networkingv1beta1 "k8s.io/api/networking/v1beta1" + networkingv1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // Ingress interface type Ingress interface { - GetIngress(ingressName, namespace string) (*networkingv1beta1.Ingress, error) - GetIngresses(namespace, labelSelector string) (*networkingv1beta1.IngressList, error) + GetIngress(ingressName, namespace string) (*networkingv1.Ingress, error) + GetIngresses(namespace, labelSelector string) (*networkingv1.IngressList, error) } // GetIngress is get a Ingress -func (e *Kube) GetIngress(ingressName, namespace string) (*networkingv1beta1.Ingress, error) { - ingress, err := e.client.NetworkingV1beta1().Ingresses(namespace).Get(context.Background(), ingressName, metav1.GetOptions{}) +func (e *Kube) GetIngress(ingressName, namespace string) (*networkingv1.Ingress, error) { + ingress, err := e.client.NetworkingV1().Ingresses(namespace).Get(context.Background(), ingressName, metav1.GetOptions{}) return ingress, err } // GetIngresses is get list of Ingress -func (e *Kube) GetIngresses(namespace, labelSelector string) (*networkingv1beta1.IngressList, error) { - return e.client.NetworkingV1beta1().Ingresses(namespace).List(e.ctx, metav1.ListOptions{LabelSelector: labelSelector}) +func (e *Kube) GetIngresses(namespace, labelSelector string) (*networkingv1.IngressList, error) { + return e.client.NetworkingV1().Ingresses(namespace).List(e.ctx, metav1.ListOptions{LabelSelector: labelSelector}) } diff --git a/k8s-deploy/pkg/service/kube_deploy.go b/k8s-deploy/pkg/service/kube_deploy.go index e66443196..321836fc1 100644 --- a/k8s-deploy/pkg/service/kube_deploy.go +++ b/k8s-deploy/pkg/service/kube_deploy.go @@ -72,34 +72,31 @@ func CheckDeploys(deploys *v1.DeploymentList) bool { } // GetDeployStatus GetDeployStatus -func GetDeployStatus(deploy *v1.Deployment) (string, string, error) { +func GetDeployStatus(deploy *v1.Deployment) (string, string) { for _, v := range deploy.Status.Conditions { if v.Type == v1.DeploymentAvailable && v.Status == corev1.ConditionTrue { - return fmt.Sprint(v1.DeploymentAvailable), v.Message, nil + return fmt.Sprint(v1.DeploymentAvailable), v.Message } } for _, v := range deploy.Status.Conditions { if v.Type == v1.DeploymentProgressing && v.Status == corev1.ConditionTrue { - return fmt.Sprint(v1.DeploymentProgressing), v.Message, nil + return fmt.Sprint(v1.DeploymentProgressing), v.Message } } for _, v := range deploy.Status.Conditions { if v.Type == v1.DeploymentReplicaFailure && v.Status == corev1.ConditionTrue { - return fmt.Sprint(v1.DeploymentReplicaFailure), v.Message, nil + return fmt.Sprint(v1.DeploymentReplicaFailure), v.Message } } - return "", "", fmt.Errorf("Deployment of '%s' not type, please try again", deploy.Name) + return "Undefined", fmt.Sprintf("please use kubectl cli check deploy status of %s", deploy.Name) } //GetDeploymentStatus GetDeploymentStatus func GetDeploymentStatusInfo(deploys *v1.DeploymentList) (map[string]string, error) { status := make(map[string]string) for _, v := range deploys.Items { - Type, message, err := GetDeployStatus(&v) - if err != nil { - return nil, err - } + Type, message := GetDeployStatus(&v) status[v.Name] = fmt.Sprintf("%s, %s", Type, message) } return status, nil @@ -108,10 +105,7 @@ func GetDeploymentStatusInfo(deploys *v1.DeploymentList) (map[string]string, err func GetDeploymentStatus(deploys *v1.DeploymentList) (map[string]string, error) { status := make(map[string]string) for _, v := range deploys.Items { - Type, _, err := GetDeployStatus(&v) - if err != nil { - return nil, err - } + Type, _ := GetDeployStatus(&v) status[v.Name] = fmt.Sprintf("%s", Type) } return status, nil diff --git a/k8s-deploy/pkg/service/kube_ingress.go b/k8s-deploy/pkg/service/kube_ingress.go index 95c87db41..c4646d2af 100644 --- a/k8s-deploy/pkg/service/kube_ingress.go +++ b/k8s-deploy/pkg/service/kube_ingress.go @@ -15,17 +15,12 @@ package service -import ( - "fmt" -) - // GetIngressURLList is Get Ingress Url list func GetIngressURLList(name, namespace string) ([]string, error) { var urls []string labelSelector := getLabelSelector(namespace, name) ingressList, err := KubeClient.GetIngresses(namespace, labelSelector) if err != nil { - fmt.Println(err) return nil, err } for _, ingress := range ingressList.Items { From 2dfe5a674f6664adbbbbacf0febe8c3874091a5c Mon Sep 17 00:00:00 2001 From: owlet42 Date: Wed, 16 Mar 2022 11:42:01 +0800 Subject: [PATCH 04/15] add liveness and readiness of kubefate service Signed-off-by: owlet42 --- k8s-deploy/kubefate.yaml | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/k8s-deploy/kubefate.yaml b/k8s-deploy/kubefate.yaml index 1ae22fc50..cf4d61d98 100644 --- a/k8s-deploy/kubefate.yaml +++ b/k8s-deploy/kubefate.yaml @@ -72,6 +72,39 @@ spec: requests: memory: 512Mi cpu: "0.5" + livenessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 30 + periodSeconds: 10 restartPolicy: Always --- apiVersion: apps/v1 @@ -125,6 +158,26 @@ spec: volumeMounts: - name: mariadb-data mountPath: /var/lib/mysql + livenessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 restartPolicy: Always volumes: - name: mariadb-data From 65b7fb93a931e42a1bf961df67c3fdc1a61f21f5 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Fri, 25 Mar 2022 13:52:46 +0800 Subject: [PATCH 05/15] add 'liveness' 'readiness' and 'startup' for FATE chart Signed-off-by: owlet42 --- .../eggroll/clustermanager/deployment.yaml | 21 ++++++ .../eggroll/nodemanager/deployment.yaml | 21 ++++++ .../backends/eggroll/rollsite/deployment.yaml | 21 ++++++ .../backends/spark/hdfs/deployment.yaml | 62 ++++++++++++++++- .../backends/spark/hdfs/service.yaml | 6 +- .../backends/spark/nginx/deployment.yaml | 39 ++++++++++- .../backends/spark/pulsar/deployment.yaml | 33 ++++++++++ .../backends/spark/rabbitmq/deployment.yaml | 33 ++++++++++ .../backends/spark/spark/deployment.yaml | 66 +++++++++++++++++++ .../templates/core/client/deployment.yaml | 33 ++++++++++ .../FATE/templates/core/mysql/deployment.yaml | 27 ++++++++ .../FATE/templates/core/python-spark.yaml | 60 ++++++++++++++++- helm-charts/Images_list.md | 8 +-- 13 files changed, 418 insertions(+), 12 deletions(-) diff --git a/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml b/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml index 30071ee2c..e708c4942 100644 --- a/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/clustermanager/deployment.yaml @@ -53,6 +53,27 @@ spec: java -Dlog4j.configurationFile=$${EGGROLL_HOME}/conf/log4j2.properties -cp $${EGGROLL_HOME}/lib/*: com.webank.eggroll.core.Bootstrap --bootstraps com.webank.eggroll.core.resourcemanager.ClusterManagerBootstrap -c $${EGGROLL_HOME}/conf/eggroll.properties -p 4670 -s 'EGGROLL_DEAMON' ports: - containerPort: 4670 + livenessProbe: + tcpSocket: + port: 4670 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + tcpSocket: + port: 4670 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + tcpSocket: + port: 4670 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties name: eggroll-confs diff --git a/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml b/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml index cd5268a21..f0a274b4d 100644 --- a/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/nodemanager/deployment.yaml @@ -67,6 +67,27 @@ spec: /tini -- java -Dlog4j.configurationFile=$${EGGROLL_HOME}/conf/log4j2.properties -cp $${EGGROLL_HOME}/lib/*: com.webank.eggroll.core.Bootstrap --bootstraps com.webank.eggroll.core.resourcemanager.NodeManagerBootstrap -c $${EGGROLL_HOME}/conf/eggroll.properties -p 4671 -s 'EGGROLL_DEAMON' ports: - containerPort: 4671 + livenessProbe: + tcpSocket: + port: 4671 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + tcpSocket: + port: 4671 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + tcpSocket: + port: 4671 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - name: eggroll-log mountPath: /data/projects/fate/eggroll/logs/ diff --git a/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml b/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml index 89531dad0..0dc2210b8 100644 --- a/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml +++ b/helm-charts/FATE/templates/backends/eggroll/rollsite/deployment.yaml @@ -57,6 +57,27 @@ spec: java -Dlog4j.configurationFile=$${EGGROLL_HOME}/conf/log4j2.properties -cp $${EGGROLL_HOME}/lib/*:$${EGGROLL_HOME}/conf/ com.webank.eggroll.rollsite.EggSiteBootstrap -c $${EGGROLL_HOME}/conf/eggroll.properties ports: - containerPort: 9370 + livenessProbe: + tcpSocket: + port: 9370 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + tcpSocket: + port: 9370 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + tcpSocket: + port: 9370 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /data/projects/fate/eggroll/conf/route_table/ name: rollsite-confs diff --git a/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml index 9c52b2507..938bed3c7 100644 --- a/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml +++ b/helm-charts/FATE/templates/backends/spark/hdfs/deployment.yaml @@ -54,6 +54,36 @@ spec: - containerPort: 9000 - containerPort: 9870 - containerPort: 50070 + livenessProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50070 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50070 + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50070 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /etc/hadoop/core-site.xml subPath: core-site.xml @@ -124,7 +154,37 @@ spec: ports: - containerPort: 9000 - containerPort: 9870 - - containerPort: 50070 + - containerPort: 50075 + livenessProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50075 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50075 + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + exec: + command: + - /bin/bash + - -c + - curl -f localhost:50075 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - name: dfs mountPath: /hadoop/dfs/data diff --git a/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml b/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml index d3c8ec8ec..9922b02e6 100644 --- a/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml +++ b/helm-charts/FATE/templates/backends/spark/hdfs/service.yaml @@ -27,9 +27,9 @@ spec: port: 9870 targetPort: 9870 protocol: TCP - - name: "tcp-50070" - port: 50070 - targetPort: 50070 + - name: "tcp-50075" + port: 50075 + targetPort: 50075 protocol: TCP type: {{ .Values.modules.hdfs.datanode.type }} selector: diff --git a/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml b/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml index 230c5e3a4..1f97865e8 100644 --- a/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml +++ b/helm-charts/FATE/templates/backends/spark/nginx/deployment.yaml @@ -43,8 +43,43 @@ spec: echo "change path of route_table.yaml success!" openresty -g 'daemon off;' ports: - - containerPort: 9300 - - containerPort: 9310 + - name: http-port + containerPort: 9300 + - name: grpc-port + containerPort: 9310 + livenessProbe: + httpGet: + path: /test + port: 9302 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /test + port: 9302 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: /test + port: 9302 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /data/projects/fate/proxy/nginx/conf/nginx.conf name: nginx-confs diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml index 6e2da0c24..9f3a0a06c 100644 --- a/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml +++ b/helm-charts/FATE/templates/backends/spark/pulsar/deployment.yaml @@ -45,6 +45,39 @@ spec: - containerPort: 6651 - containerPort: 8080 - containerPort: 8081 + livenessProbe: + tcpSocket: + {{- if .Values.modules.pulsar.exchange }} + port: 8081 + {{- else }} + port: 8080 + {{- end }} + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + tcpSocket: + {{- if .Values.modules.pulsar.exchange }} + port: 8081 + {{- else }} + port: 8080 + {{- end }} + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + tcpSocket: + {{- if .Values.modules.pulsar.exchange }} + port: 8081 + {{- else }} + port: 8080 + {{- end }} + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /pulsar/conf/standalone.conf name: pulsar-confs diff --git a/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml index 76c875cf3..cfed8b0d9 100644 --- a/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/deployment.yaml @@ -49,6 +49,39 @@ spec: ports: - containerPort: 5672 - containerPort: 15672 + livenessProbe: + httpGet: + path: / + port: 15672 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 15672 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 15672 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /etc/rabbitmq/enabled_plugins name: rabbitmq-confs diff --git a/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml b/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml index 49af20d70..c0e314e27 100644 --- a/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml +++ b/helm-charts/FATE/templates/backends/spark/spark/deployment.yaml @@ -46,6 +46,39 @@ spec: - containerPort: 8080 - containerPort: 7077 - containerPort: 6066 + livenessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 12 + periodSeconds: 10 {{- with .Values.modules.spark.master.nodeSelector }} nodeSelector: {{ toYaml . | indent 8 }} @@ -102,6 +135,39 @@ spec: name: spark-worker-confs ports: - containerPort: 8081 + livenessProbe: + httpGet: + path: / + port: 8081 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 8081 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 8081 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 12 + periodSeconds: 10 {{- with .Values.modules.spark.worker.nodeSelector }} nodeSelector: {{ toYaml . | indent 8 }} diff --git a/helm-charts/FATE/templates/core/client/deployment.yaml b/helm-charts/FATE/templates/core/client/deployment.yaml index dba52f897..fcc546d4c 100644 --- a/helm-charts/FATE/templates/core/client/deployment.yaml +++ b/helm-charts/FATE/templates/core/client/deployment.yaml @@ -46,6 +46,39 @@ spec: value: "{{.Values.modules.serving.ip}}:{{.Values.modules.serving.port}}" ports: - containerPort: 20000 + livenessProbe: + httpGet: + path: / + port: 20000 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 20000 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 20000 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /data/projects/fate/persistence/ name: persistence diff --git a/helm-charts/FATE/templates/core/mysql/deployment.yaml b/helm-charts/FATE/templates/core/mysql/deployment.yaml index 3be1a0829..a0b1c98fe 100644 --- a/helm-charts/FATE/templates/core/mysql/deployment.yaml +++ b/helm-charts/FATE/templates/core/mysql/deployment.yaml @@ -52,6 +52,33 @@ spec: value: root ports: - containerPort: 3306 + livenessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + exec: + command: + - mysqladmin + - ping + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - name: mysql-confs mountPath: /docker-entrypoint-initdb.d/ diff --git a/helm-charts/FATE/templates/core/python-spark.yaml b/helm-charts/FATE/templates/core/python-spark.yaml index 7347b821d..5ac999ef3 100644 --- a/helm-charts/FATE/templates/core/python-spark.yaml +++ b/helm-charts/FATE/templates/core/python-spark.yaml @@ -109,8 +109,10 @@ spec: value: "104868093952" {{- end }} ports: - - containerPort: 9360 - - containerPort: 9380 + - name: grpc-port + containerPort: 9360 + - name: http-port + containerPort: 9380 command: - /bin/bash - -c @@ -133,6 +135,27 @@ spec: ln -sf /dev/stdout /data/projects/fate/fateflow/logs/fate_flow/INFO.log sleep 5 && python fateflow/python/fate_flow/fate_flow_server.py + livenessProbe: + tcpSocket: + port: 9380 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + tcpSocket: + port: 9380 + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + tcpSocket: + port: 9380 + failureThreshold: 12 + periodSeconds: 10 volumeMounts: {{- if eq .Values.modules.python.backend "eggroll" }} - mountPath: /data/projects/fate/eggroll/conf/eggroll.properties @@ -168,6 +191,39 @@ spec: name: fateboard ports: - containerPort: 8080 + livenessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: livenessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: readinessProbe + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: 8080 + httpHeaders: + - name: X-Custom-Header + value: startupProbe + failureThreshold: 12 + periodSeconds: 10 volumeMounts: - mountPath: /data/projects/fate/fateboard/conf/application.properties name: fateboard-confs diff --git a/helm-charts/Images_list.md b/helm-charts/Images_list.md index 971d357fd..3f378e0a7 100644 --- a/helm-charts/Images_list.md +++ b/helm-charts/Images_list.md @@ -12,12 +12,12 @@ FATE: - fluent/fluentd:v1.12 - federatedai/spark-master:${version-tag} - federatedai/spark-worker:${version-tag} -- hadoop-datanode:2.0.0-hadoop2.7.4-java8 -- hadoop-namenode:2.0.0-hadoop2.7.4-java8 +- federatedai/hadoop-datanode:2.0.0-hadoop2.7.4-java8 +- federatedai/hadoop-namenode:2.0.0-hadoop2.7.4-java8 - nginx:1.17 - federatedai/nginx:${version-tag} -- rabbitmq:3.8.3-management -- pulsar:2.7.0 +- federatedai/rabbitmq:3.8.3-management +- federatedai/pulsar:2.7.0 From ddcc39434c00212f7665b2b63c74d27c41615889 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Fri, 25 Mar 2022 15:44:30 +0800 Subject: [PATCH 06/15] add healthcheck for docker-compose python Signed-off-by: owlet42 --- docker-deploy/training_template/docker-compose-eggroll.yml | 6 ++++++ .../training_template/docker-compose-spark-slim.yml | 6 ++++++ docker-deploy/training_template/docker-compose-spark.yml | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/docker-deploy/training_template/docker-compose-eggroll.yml b/docker-deploy/training_template/docker-compose-eggroll.yml index 3f3c47612..03c18429a 100644 --- a/docker-deploy/training_template/docker-compose-eggroll.yml +++ b/docker-deploy/training_template/docker-compose-eggroll.yml @@ -117,6 +117,12 @@ services: networks: fate-network: ipv4_address: 192.167.0.100 + healthcheck: + test: ["CMD", "curl", "-f", "-X POST", "http://192.167.0.100:9380/v1/version/get"] + interval: 1m30s + timeout: 10s + retries: 3 + start_period: 40s command: - "/bin/bash" - "-c" diff --git a/docker-deploy/training_template/docker-compose-spark-slim.yml b/docker-deploy/training_template/docker-compose-spark-slim.yml index 70d0402f4..734a922f0 100644 --- a/docker-deploy/training_template/docker-compose-spark-slim.yml +++ b/docker-deploy/training_template/docker-compose-spark-slim.yml @@ -71,6 +71,12 @@ services: networks: fate-network: ipv4_address: 192.167.0.100 + healthcheck: + test: ["CMD", "curl", "-f", "-X POST", "http://192.167.0.100:9380/v1/version/get"] + interval: 1m30s + timeout: 10s + retries: 3 + start_period: 40s command: - "/bin/bash" - "-c" diff --git a/docker-deploy/training_template/docker-compose-spark.yml b/docker-deploy/training_template/docker-compose-spark.yml index 66e2a2577..1eec33416 100644 --- a/docker-deploy/training_template/docker-compose-spark.yml +++ b/docker-deploy/training_template/docker-compose-spark.yml @@ -70,6 +70,12 @@ services: networks: fate-network: ipv4_address: 192.167.0.100 + healthcheck: + test: ["CMD", "curl", "-f", "-X POST", "http://192.167.0.100:9380/v1/version/get"] + interval: 1m30s + timeout: 10s + retries: 3 + start_period: 40s command: - "/bin/bash" - "-c" From 1d43fd957918d4a218c8c9f9c303d8b447b1e53d Mon Sep 17 00:00:00 2001 From: Chen Date: Tue, 29 Mar 2022 15:04:29 +0800 Subject: [PATCH 07/15] Use the ingress class to map an ingress to an ingress controller (#571) * Remove the annotation for the ingress, and introduce the ingress class resource Signed-off-by: Chen Jing * Fix the FATE task failure caused by not setting fateflow loglevel (#559) Signed-off-by: owlet42 Signed-off-by: Chen Jing * Fix getting "the server could not find the requested resource" when using `kubefate describe` (#553) * fix kubefate bug in k8s v1.22+ kubefate cluster describe got "the server could not find the requested resource" because k8s API 'networkingv1beta1' is deprecated Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * Add version for bug Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * fix Deployment resources in special states are not recognized. When the pod is in ImagePullBackOff Signed-off-by: ChenLong Ma Signed-off-by: owlet42 * fix swag api error Signed-off-by: owlet42 * update go.mod Signed-off-by: owlet42 Co-authored-by: Layne Peng Signed-off-by: Chen Jing * Support customize the ingress controller for fate services Signed-off-by: Chen Jing * add liveness and readiness of kubefate service Signed-off-by: owlet42 Signed-off-by: Chen Jing * add 'liveness' 'readiness' and 'startup' for FATE chart Signed-off-by: owlet42 Signed-off-by: Chen Jing * add healthcheck for docker-compose python Signed-off-by: owlet42 Signed-off-by: Chen Jing * Do not define the ingressclass for the customers Signed-off-by: Chen Jing * Set the default ingress class to nginx Signed-off-by: Chen Jing * Fix a little issue about the ingress class name Signed-off-by: Chen Jing Co-authored-by: ChenLong Ma Co-authored-by: Layne Peng --- .../backends/spark/pulsar/ingress.yaml | 1 + .../backends/spark/rabbitmq/ingress.yaml | 1 + .../backends/spark/spark/ingress.yaml | 1 + .../FATE/templates/core/client/ingress.yaml | 1 + .../templates/core/fateboard/ingress.yaml | 1 + helm-charts/FATE/values-template-example.yaml | 4 ++-- helm-charts/FATE/values-template.yaml | 22 ++++++++++--------- helm-charts/FATE/values.yaml | 20 +++++++++-------- k8s-deploy/.gitignore | 1 + k8s-deploy/cluster-spark-pulsar.yaml | 19 +++++----------- k8s-deploy/cluster-spark-rabbitmq.yaml | 11 +--------- k8s-deploy/cluster-spark-slim.yaml | 11 +--------- k8s-deploy/cluster.yaml | 13 ++--------- .../cluster-spark-local-pulsar.yaml | 9 +------- .../party-10000/cluster-spark-pulsar.yaml | 9 +------- .../party-10000/cluster-spark-rabbitmq.yaml | 9 +------- k8s-deploy/examples/party-10000/cluster.yaml | 5 +---- .../cluster-spark-local-pulsar.yaml | 9 +------- .../party-9999/cluster-spark-pulsar.yaml | 9 +------- .../party-9999/cluster-spark-rabbitmq.yaml | 9 +------- k8s-deploy/examples/party-9999/cluster.yaml | 7 ++---- k8s-deploy/kubefate.yaml | 7 +++--- 22 files changed, 52 insertions(+), 127 deletions(-) create mode 100644 k8s-deploy/.gitignore diff --git a/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml b/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml index 6f513d694..6b10d44fb 100644 --- a/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml +++ b/helm-charts/FATE/templates/backends/spark/pulsar/ingress.yaml @@ -22,6 +22,7 @@ metadata: {{ toYaml .Values.ingress.pulsar.annotations | indent 4 }} {{- end }} spec: + ingressClassName: {{ .Values.ingressClassName }} rules: {{- range .Values.ingress.pulsar.hosts }} - host: {{ .name }} diff --git a/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml b/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml index 12edd9c71..91d2988cd 100644 --- a/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml +++ b/helm-charts/FATE/templates/backends/spark/rabbitmq/ingress.yaml @@ -22,6 +22,7 @@ metadata: {{ toYaml .Values.ingress.rabbitmq.annotations | indent 4 }} {{- end }} spec: + ingressClassName: {{ .Values.ingressClassName }} rules: {{- range .Values.ingress.rabbitmq.hosts }} - host: {{ .name }} diff --git a/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml b/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml index 49545dd2f..947bd466e 100644 --- a/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml +++ b/helm-charts/FATE/templates/backends/spark/spark/ingress.yaml @@ -22,6 +22,7 @@ metadata: {{ toYaml .Values.ingress.spark.annotations | indent 4 }} {{- end }} spec: + ingressClassName: {{ .Values.ingressClassName }} rules: {{- range .Values.ingress.spark.hosts }} - host: {{ .name }} diff --git a/helm-charts/FATE/templates/core/client/ingress.yaml b/helm-charts/FATE/templates/core/client/ingress.yaml index be920243e..d15ca015c 100644 --- a/helm-charts/FATE/templates/core/client/ingress.yaml +++ b/helm-charts/FATE/templates/core/client/ingress.yaml @@ -22,6 +22,7 @@ metadata: {{ toYaml .Values.ingress.client.annotations | indent 4 }} {{- end }} spec: + ingressClassName: {{ .Values.ingressClassName }} rules: {{- range .Values.ingress.client.hosts }} - host: {{ .name }} diff --git a/helm-charts/FATE/templates/core/fateboard/ingress.yaml b/helm-charts/FATE/templates/core/fateboard/ingress.yaml index cf82bff5d..a24e57787 100644 --- a/helm-charts/FATE/templates/core/fateboard/ingress.yaml +++ b/helm-charts/FATE/templates/core/fateboard/ingress.yaml @@ -22,6 +22,7 @@ metadata: {{ toYaml .Values.ingress.fateboard.annotations | indent 4 }} {{- end }} spec: + ingressClassName: {{ .Values.ingressClassName }} rules: {{- range .Values.ingress.fateboard.hosts }} - host: {{ .name }} diff --git a/helm-charts/FATE/values-template-example.yaml b/helm-charts/FATE/values-template-example.yaml index 4a7778de4..85cd3ac7f 100644 --- a/helm-charts/FATE/values-template-example.yaml +++ b/helm-charts/FATE/values-template-example.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - rollsite - clustermanager @@ -31,7 +32,7 @@ modules: backend: eggroll # ingress: - # fateboard: + # fateboard: # annotations: # hosts: # - name: party9999.fateboard.example.com @@ -337,4 +338,3 @@ backend: eggroll # port: 30105 # sslPort: 30109 # proxy: "" - \ No newline at end of file diff --git a/helm-charts/FATE/values-template.yaml b/helm-charts/FATE/values-template.yaml index daf546e67..24361ccbd 100644 --- a/helm-charts/FATE/values-template.yaml +++ b/helm-charts/FATE/values-template.yaml @@ -17,9 +17,9 @@ partyName: {{ .name }} {{- with .ingress }} ingress: {{- with .fateboard }} - fateboard: + fateboard: {{- with .annotations }} - annotations: + annotations: {{ toYaml . | indent 6 }} {{- end }} {{- with .hosts }} @@ -33,9 +33,9 @@ ingress: {{- end }} {{- with .client }} - client: + client: {{- with .annotations }} - annotations: + annotations: {{ toYaml . | indent 6 }} {{- end }} {{- with .hosts }} @@ -49,9 +49,9 @@ ingress: {{- end }} {{- with .spark }} - spark: + spark: {{- with .annotations }} - annotations: + annotations: {{ toYaml . | indent 6 }} {{- end }} {{- with .hosts }} @@ -65,9 +65,9 @@ ingress: {{- end }} {{- with .rabbitmq }} - rabbitmq: + rabbitmq: {{- with .annotations }} - annotations: + annotations: {{ toYaml . | indent 6 }} {{- end }} {{- with .hosts }} @@ -81,9 +81,9 @@ ingress: {{- end }} {{- with .pulsar }} - pulsar: + pulsar: {{- with .annotations }} - annotations: + annotations: {{ toYaml . | indent 6 }} {{- end }} {{- with .hosts }} @@ -108,6 +108,8 @@ podSecurityPolicy: enabled: {{ .enabled | default false }} {{- end }} +ingressClassName: {{ .ingressClassName | default "nginx"}} + exchange: {{- with .rollsite }} {{- with .exchange }} diff --git a/helm-charts/FATE/values.yaml b/helm-charts/FATE/values.yaml index de2aa5a42..e6349f7b9 100644 --- a/helm-charts/FATE/values.yaml +++ b/helm-charts/FATE/values.yaml @@ -16,9 +16,11 @@ istio: podSecurityPolicy: enabled: false +ingressClassName: nginx + ingress: - fateboard: - # annotations: + fateboard: + # annotations: hosts: - name: fateboard.example.com path: / @@ -26,25 +28,25 @@ ingress: # - secretName: my-tls-secret # hosts: # - fateboard.example.com - client: - # annotations: + client: + # annotations: hosts: - name: notebook.example.com path: / tls: [] - spark: - # annotations: + spark: + # annotations: hosts: - name: spark.example.com path: / tls: [] - rabbitmq: - # annotations: + rabbitmq: + # annotations: hosts: - name: rabbitmq.example.com path: / tls: [] - pulsar: + pulsar: # annotations: hosts: - name: pulsar.example.com diff --git a/k8s-deploy/.gitignore b/k8s-deploy/.gitignore new file mode 100644 index 000000000..5657f6ea7 --- /dev/null +++ b/k8s-deploy/.gitignore @@ -0,0 +1 @@ +vendor \ No newline at end of file diff --git a/k8s-deploy/cluster-spark-pulsar.yaml b/k8s-deploy/cluster-spark-pulsar.yaml index a01c916b3..5a4ce8661 100644 --- a/k8s-deploy/cluster-spark-pulsar.yaml +++ b/k8s-deploy/cluster-spark-pulsar.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - mysql - python @@ -29,28 +30,18 @@ backend: spark_pulsar # Specify domain name for service # ingress: # fateboard: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.fateboard.example.com - # client: - # annotations: - # kubernetes.io/ingress.class: "nginx" + # client: # hosts: # - name: party9999.notebook.example.com - # spark: - # annotations: - # kubernetes.io/ingress.class: "nginx" + # spark: # hosts: # - name: party9999.spark.example.com - # rabbitmq: - # annotations: - # kubernetes.io/ingress.class: "nginx" + # rabbitmq: # hosts: # - name: party9999.rabbitmq.example.com - # pulsar: - # annotations: - # kubernetes.io/ingress.class: "nginx" + # pulsar: # hosts: # - name: party9999.pulsar.example.com diff --git a/k8s-deploy/cluster-spark-rabbitmq.yaml b/k8s-deploy/cluster-spark-rabbitmq.yaml index 54479e49c..e51ebd743 100644 --- a/k8s-deploy/cluster-spark-rabbitmq.yaml +++ b/k8s-deploy/cluster-spark-rabbitmq.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - mysql - python @@ -29,28 +30,18 @@ backend: spark_rabbitmq # Specify domain name for service # ingress: # fateboard: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.fateboard.example.com # client: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.notebook.example.com # spark: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.spark.example.com # rabbitmq: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.rabbitmq.example.com # pulsar: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.pulsar.example.com diff --git a/k8s-deploy/cluster-spark-slim.yaml b/k8s-deploy/cluster-spark-slim.yaml index d56f274be..fcd37eb87 100644 --- a/k8s-deploy/cluster-spark-slim.yaml +++ b/k8s-deploy/cluster-spark-slim.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - mysql - python @@ -27,28 +28,18 @@ backend: spark_local_pulsar # Specify domain name for service # ingress: # fateboard: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.fateboard.example.com # client: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.notebook.example.com # spark: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.spark.example.com # rabbitmq: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.rabbitmq.example.com # pulsar: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.pulsar.example.com diff --git a/k8s-deploy/cluster.yaml b/k8s-deploy/cluster.yaml index f96a6123f..8f019ca46 100644 --- a/k8s-deploy/cluster.yaml +++ b/k8s-deploy/cluster.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - rollsite - clustermanager @@ -29,28 +30,18 @@ backend: eggroll # Specify domain name for service # ingress: # fateboard: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.fateboard.example.com # client: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.notebook.example.com # spark: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.spark.example.com # rabbitmq: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.rabbitmq.example.com # pulsar: - # annotations: - # kubernetes.io/ingress.class: "nginx" # hosts: # - name: party9999.pulsar.example.com @@ -168,4 +159,4 @@ backend: eggroll # Specify serving configuration # servingIp: 192.168.0.1 -# servingPort: 30095 \ No newline at end of file +# servingPort: 30095 diff --git a/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml b/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml index 7b1416338..ac9b9f3aa 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-local-pulsar.yaml @@ -11,6 +11,7 @@ imagePullSecrets: persistence: false istio: enabled: false +ingressClassName: nginx podSecurityPolicy: enabled: false modules: @@ -25,23 +26,15 @@ backend: spark_local_pulsar ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.spark.example.com pulsar: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.pulsar.example.com diff --git a/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml b/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml index ec962fc62..64b03237b 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-pulsar.yaml @@ -11,6 +11,7 @@ imagePullSecrets: persistence: false istio: enabled: false +ingressClassName: nginx podSecurityPolicy: enabled: false modules: @@ -27,23 +28,15 @@ backend: spark_pulsar ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.spark.example.com pulsar: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.pulsar.example.com diff --git a/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml b/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml index 2697ccf35..4acb5d82b 100644 --- a/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml +++ b/k8s-deploy/examples/party-10000/cluster-spark-rabbitmq.yaml @@ -11,6 +11,7 @@ imagePullSecrets: persistence: false istio: enabled: false +ingressClassName: nginx podSecurityPolicy: enabled: false modules: @@ -27,23 +28,15 @@ backend: spark_rabbitmq ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.spark.example.com rabbitmq: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.rabbitmq.example.com diff --git a/k8s-deploy/examples/party-10000/cluster.yaml b/k8s-deploy/examples/party-10000/cluster.yaml index 2c6705a71..c0baddd7e 100644 --- a/k8s-deploy/examples/party-10000/cluster.yaml +++ b/k8s-deploy/examples/party-10000/cluster.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - rollsite - clustermanager @@ -26,13 +27,9 @@ backend: eggroll ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party10000.notebook.example.com diff --git a/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml b/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml index a435735f1..ca7aa6f67 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-local-pulsar.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - python - mysql @@ -25,23 +26,15 @@ backend: spark_local_pulsar ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.spark.example.com pulsar: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.pulsar.example.com diff --git a/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml b/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml index d2ae589a0..953679b2d 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-pulsar.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - python - mysql @@ -27,23 +28,15 @@ backend: spark_pulsar ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.spark.example.com pulsar: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.pulsar.example.com diff --git a/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml b/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml index f094a5415..a27477e79 100644 --- a/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml +++ b/k8s-deploy/examples/party-9999/cluster-spark-rabbitmq.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - python - mysql @@ -27,23 +28,15 @@ backend: spark_rabbitmq ingress: fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.notebook.example.com spark: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.spark.example.com rabbitmq: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.rabbitmq.example.com diff --git a/k8s-deploy/examples/party-9999/cluster.yaml b/k8s-deploy/examples/party-9999/cluster.yaml index cf4d21b75..9cd94fc84 100644 --- a/k8s-deploy/examples/party-9999/cluster.yaml +++ b/k8s-deploy/examples/party-9999/cluster.yaml @@ -13,6 +13,7 @@ istio: enabled: false podSecurityPolicy: enabled: false +ingressClassName: nginx modules: - rollsite - clustermanager @@ -25,14 +26,10 @@ modules: backend: eggroll ingress: - fateboard: - annotations: - kubernetes.io/ingress.class: "nginx" + fateboard: hosts: - name: party9999.fateboard.example.com client: - annotations: - kubernetes.io/ingress.class: "nginx" hosts: - name: party9999.notebook.example.com diff --git a/k8s-deploy/kubefate.yaml b/k8s-deploy/kubefate.yaml index cf4d61d98..d7221f682 100644 --- a/k8s-deploy/kubefate.yaml +++ b/k8s-deploy/kubefate.yaml @@ -241,9 +241,8 @@ kind: Ingress metadata: name: kubefate namespace: kube-fate - annotations: - kubernetes.io/ingress.class: "nginx" spec: + ingressClassName: nginx rules: - host: example.com http: @@ -253,5 +252,5 @@ spec: backend: service: name: kubefate - port: - number: 8080 + port: + number: 8080 \ No newline at end of file From af985da7b322a3bb310d2abc246625d95e831a4e Mon Sep 17 00:00:00 2001 From: Chen Jing Date: Tue, 29 Mar 2022 16:36:14 +0800 Subject: [PATCH 08/15] Optimize the docs Signed-off-by: Chen Jing --- .../FATE_cluster_configuration.md | 233 +++++++++--------- k8s-deploy/README.md | 14 +- 2 files changed, 124 insertions(+), 123 deletions(-) diff --git a/docs/configurations/FATE_cluster_configuration.md b/docs/configurations/FATE_cluster_configuration.md index 0ec8b3011..2b8ec3a20 100644 --- a/docs/configurations/FATE_cluster_configuration.md +++ b/docs/configurations/FATE_cluster_configuration.md @@ -2,39 +2,40 @@ `cluster.yaml` declares information about the FATE cluster to be deployed, which KubeFATE CLI uses to deploy the FATE cluster. ## cluster.yaml -| Name | Type | Description | -| ------------------------- | ------------------ | ------------------------------------------------------------ | -| * name | scalars | FATE cluster name. | -| * namespace | scalars | Kubernetes namespace for FATE cluster. | -| * chartName | scalars | FATE chart name. (fate/fate-serving) | -| * chartVersion | scalars | FATE chart corresponding version. | -| * partyId | scalars | FATE cluster party id. | -| registry | scalars | Other fate images sources. | -| pullPolicy | scalars | kubernetes images pull policy | -| imagePullSecrets | sequences | The imagePullSecrets names for all deployments | -| * persistence | bool | mysql and nodemanager data persistence. | -| istio.enable | bool | enable istio | -| podSecurityPolicy.enabled | bool | if `true`, create & use Pod Security Policy resources | -| * modules | sequences | Modules to be deployed in the FATE cluster. | -| backend | set(eggroll,spark) | Configure cluster computing engine( eggroll or spark) | -| ingress | mappings | Custom domain of FATE UI component | -| rollsite | mappings | Configuration of FATE cluster `rollsite` module. | -| nodemanager | mappings | Configuration of FATE cluster `nodemanager` module. | -| python | mappings | Configuration of FATE cluster `python` module. | -| fateboard | mappings | Configuration of FATE cluster `fateboard` module. | -| client | mappings | Configuration of FATE cluster `client` module. | +| Name | Type | Description | +|---------------------------|--------------------|--------------------------------------------------------------------------------------------------------| +| * name | scalars | FATE cluster name. | +| * namespace | scalars | Kubernetes namespace for FATE cluster. | +| * chartName | scalars | FATE chart name. (fate/fate-serving) | +| * chartVersion | scalars | FATE chart corresponding version. | +| * partyId | scalars | FATE cluster party id. | +| registry | scalars | Other fate images sources. | +| pullPolicy | scalars | kubernetes images pull policy | +| imagePullSecrets | sequences | The imagePullSecrets names for all deployments | +| * persistence | bool | mysql and nodemanager data persistence. | +| istio.enable | bool | enable istio | +| podSecurityPolicy.enabled | bool | if `true`, create & use Pod Security Policy resources | +| ingressClassName | mappings | The Ingress class name, such as "nginx". | +| * modules | sequences | Modules to be deployed in the FATE cluster. | +| backend | set(eggroll,spark) | Configure cluster computing engine( eggroll or spark) | +| ingress | mappings | Custom domain of FATE UI component | +| rollsite | mappings | Configuration of FATE cluster `rollsite` module. | +| nodemanager | mappings | Configuration of FATE cluster `nodemanager` module. | +| python | mappings | Configuration of FATE cluster `python` module. | +| fateboard | mappings | Configuration of FATE cluster `fateboard` module. | +| client | mappings | Configuration of FATE cluster `client` module. | | mysql | mappings | Configuration of FATE cluster `mysql` module.
If you use your own redis, please delete this item. | -| externalMysqlIp | scalars | Access your own MySQL. | -| externalMysqlPort | scalars | Access your own MySQL. | -| externalMysqlDatabase | scalars | Access your own MySQL. | -| externalMysqlUser | scalars | Access your own MySQL. | -| externalMysqlPassword | scalars | Access your own MySQL. | -| servingIp | scalars | Serving cluster connected to fate. | -| servingPort | scalars | Serving cluster connected to fate. | -| spark | mappings | Configuration of FATE cluster `spark` module. | -| hdfs | mappings | Configuration of FATE cluster `hdfs` module. | -| nginx | mappings | Configuration of FATE cluster `nginx` module. | -| rabbitmq | mappings | Configuration of FATE cluster `rabbitmq` module. | +| externalMysqlIp | scalars | Access your own MySQL. | +| externalMysqlPort | scalars | Access your own MySQL. | +| externalMysqlDatabase | scalars | Access your own MySQL. | +| externalMysqlUser | scalars | Access your own MySQL. | +| externalMysqlPassword | scalars | Access your own MySQL. | +| servingIp | scalars | Serving cluster connected to fate. | +| servingPort | scalars | Serving cluster connected to fate. | +| spark | mappings | Configuration of FATE cluster `spark` module. | +| hdfs | mappings | Configuration of FATE cluster `hdfs` module. | +| nginx | mappings | Configuration of FATE cluster `nginx` module. | +| rabbitmq | mappings | Configuration of FATE cluster `rabbitmq` module. | @@ -57,42 +58,42 @@ ### ingress mappings -| Name | Type | Description | -| ----------------------- | ----------------- | ------------------------------------------------------------ | -| `fateboard` | mappings | Configuration of Fateboard UI domain | -| `fateboard.annotations` | mappings | The annotations used commonly for ingresses | -| `fateboard.hosts` | sequences | Set hosts list of ingress record | -| `fateboard.tls` | sequences | Set this to enable TLS on the ingress record | -| `client` | mappings | Configuration of Notebook UI domain | -| `client.annotations` | mappings | The annotations used commonly for ingresses | +| Name | Type | Description | +|-------------------------|-------------------|------------------------------------------------------------------| +| `fateboard` | mappings | Configuration of Fateboard UI domain | +| `fateboard.annotations` | mappings | The annotations used commonly for ingresses | +| `fateboard.hosts` | sequences | Set hosts list of ingress record | +| `fateboard.tls` | sequences | Set this to enable TLS on the ingress record | +| `client` | mappings | Configuration of Notebook UI domain | +| `client.annotations` | mappings | The annotations used commonly for ingresses | | `client.hosts` | sequencesmappings | Set hosts list of ingress recordConfiguration of Spark UI domain | -| `client.tls` | sequences | Set this to enable TLS on the ingress record | -| `spark` | mappings | Configuration of spark UI domain | -| `rabbitmq` | mappings | Configuration of Rabbitmq UI domain | +| `client.tls` | sequences | Set this to enable TLS on the ingress record | +| `spark` | mappings | Configuration of spark UI domain | +| `rabbitmq` | mappings | Configuration of Rabbitmq UI domain | ### rollsite mappings It is used to declare the `rollsite ` module in the FATE cluster to be deployed. -| Name | subitem | Type | Description | -| ------------ | ----------- | --------- | ------------------------------------------------------------ | -| type | | scalars | Kubernetes ServiceTypes, default is NodePort. | -| nodePort | | scalars | The port used by `proxy` module's kubernetes service, default range: 30000-32767. | +| Name | subitem | Type | Description | +|--------------|-------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| type | | scalars | Kubernetes ServiceTypes, default is NodePort. | +| nodePort | | scalars | The port used by `proxy` module's kubernetes service, default range: 30000-32767. | | partyList | | sequences | If this FATE cluster is exchange cluster, partyList is all party's sequences of all parties proxy address. If this FATE cluster is one of participants, delete this configuration item. | -| partyList | partyId | scalars | Participant FATE cluster party ID. | -| partyList | partyIp | scalars | Participant FATE cluster IP. | -| partyList | partyPort | scalars | Participant FATE cluster port. | -| exchange | | mappings | FATE cluster `exchange` module's ip and port. | -| exchange | ip | mappings | FATE cluster `exchange` module's ip. . | -| exchange | port | mappings | FATE cluster `exchange` module's port. | -| nodeSelector | | mappings | kubernetes nodeSelector. | -| polling | | | rollsite support polling | -| polling | enabled | | enable polling | -| polling | type | | polling type (server/client) | -| polling | server | | if type choose client, you need a polling server. | -| polling | clientList | | if type choose server, this rollsite serve for clientList. | -| polling | concurrency | | if type choose server, polling client concurrency. | +| partyList | partyId | scalars | Participant FATE cluster party ID. | +| partyList | partyIp | scalars | Participant FATE cluster IP. | +| partyList | partyPort | scalars | Participant FATE cluster port. | +| exchange | | mappings | FATE cluster `exchange` module's ip and port. | +| exchange | ip | mappings | FATE cluster `exchange` module's ip. . | +| exchange | port | mappings | FATE cluster `exchange` module's port. | +| nodeSelector | | mappings | kubernetes nodeSelector. | +| polling | | | rollsite support polling | +| polling | enabled | | enable polling | +| polling | type | | polling type (server/client) | +| polling | server | | if type choose client, you need a polling server. | +| polling | clientList | | if type choose server, this rollsite serve for clientList. | +| polling | concurrency | | if type choose server, polling client concurrency. | FATE cluster has two deployment modes: with exchange and without exchange. #### Exchange mode: @@ -107,48 +108,48 @@ The parties are directly connected. ### nodemanager mappings -| Name | SubItem | Type | Description | -| -------------------------- | -------------------------- | --------- | ------------------------------------------------------------ | -| count | | scalars | Number of nodes deployed nodemanager. | -| session-Processors-PerNode | | scalars | Configuration of FATE cluster `nodemanager` module. | -| list | | sequences | List of nodemanager nodes. | -| list | name | scalars | nodemanager node name. | -| list | nodeSelector | mappings | kubernetes nodeSelector. | -| list | session-Processors-PerNode | scalars | Configuration of FATE cluster `nodemanager` module. | -| list | subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | -| list | existingClaim | scalars | Use the existing PVC which must be created manually before bound. | +| Name | SubItem | Type | Description | +|----------------------------|----------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| count | | scalars | Number of nodes deployed nodemanager. | +| session-Processors-PerNode | | scalars | Configuration of FATE cluster `nodemanager` module. | +| list | | sequences | List of nodemanager nodes. | +| list | name | scalars | nodemanager node name. | +| list | nodeSelector | mappings | kubernetes nodeSelector. | +| list | session-Processors-PerNode | scalars | Configuration of FATE cluster `nodemanager` module. | +| list | subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | +| list | existingClaim | scalars | Use the existing PVC which must be created manually before bound. | | list | storageClass | scalars | Specify the "storageClass" used to provision the volume. Or the default. StorageClass will be used(the default). Set it to "-" to disable dynamic provisioning. | -| list | accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | -| list | size | scalars | Match the volume size of PVC. | +| list | accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | +| list | size | scalars | Match the volume size of PVC. | ### python mappings -| Name | Type | Description | -| --------------------- | -------- | ------------------------------------------------------------ | -| type | scalars | Kubernetes ServiceTypes, default is NodePort.
Other modules can connect to the fateflow | -| nodePort | scalars | The port used by `proxy` module's kubernetes service, default range: 30000-32767. | -| nodeSelector | mappings | kubernetes nodeSelector. | -| enabledNN | bool | If or not neural network workflow is required | -| spark | mappings | If you use your own spark, modify the configuration | -| spark.cores_per_node | scalars | configuration of FATE fateflow module | -| spark.nodes | scalars | configuration of FATE fateflow module | -| spark.existingSpark | scalars | If you need to use the existing spark , you can set this configuration | -| spark.driverHost | scalars | call back IP of spark executor | -| spark.driverHostType | scalars | service type of spark driver | -| spark.portMaxRetries | scalars | spark driver's configuration | -| spark.driverStartPort | scalars | spark driver start port | -| spark.blockManagerStartPort | scalars | spark driver blockManager start port | -| spark.pysparkPython | scalars | spark worker node python PATH | -| hdfs | mappings | If you use the existing hdfs, you can set this configuration | -| rabbitmq | mappings | If you use the existing rabbitmq, you can set this configuration | -| nginx | mappings | If you use the existing nginx, you can set this configuration | +| Name | Type | Description | +|-----------------------------|----------|----------------------------------------------------------------------------------------------| +| type | scalars | Kubernetes ServiceTypes, default is NodePort.
Other modules can connect to the fateflow | +| nodePort | scalars | The port used by `proxy` module's kubernetes service, default range: 30000-32767. | +| nodeSelector | mappings | kubernetes nodeSelector. | +| enabledNN | bool | If or not neural network workflow is required | +| spark | mappings | If you use your own spark, modify the configuration | +| spark.cores_per_node | scalars | configuration of FATE fateflow module | +| spark.nodes | scalars | configuration of FATE fateflow module | +| spark.existingSpark | scalars | If you need to use the existing spark , you can set this configuration | +| spark.driverHost | scalars | call back IP of spark executor | +| spark.driverHostType | scalars | service type of spark driver | +| spark.portMaxRetries | scalars | spark driver's configuration | +| spark.driverStartPort | scalars | spark driver start port | +| spark.blockManagerStartPort | scalars | spark driver blockManager start port | +| spark.pysparkPython | scalars | spark worker node python PATH | +| hdfs | mappings | If you use the existing hdfs, you can set this configuration | +| rabbitmq | mappings | If you use the existing rabbitmq, you can set this configuration | +| nginx | mappings | If you use the existing nginx, you can set this configuration | ### fateboard mappings Configuration of kubernetes deployment fateboard. | Name | Type | Description | -| -------- | -------- | --------------------------- | +|----------|----------|-----------------------------| | type | mappings | Kubernetes nodeSelector. | | username | scalars | Login username of fateboard | | password | scalars | Login password of fateboard | @@ -157,32 +158,32 @@ Configuration of kubernetes deployment fateboard. Configuration of kubernetes deployment client. -| Name | Type | Description | -| ------------- | -------- | ------------------------------------------------------------ | -| nodeSelector | mappings | kubernetes nodeSelector. | -| subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | -| existingClaim | scalars | Use the existing PVC which must be created manually before bound. | +| Name | Type | Description | +|---------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| nodeSelector | mappings | kubernetes nodeSelector. | +| subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | +| existingClaim | scalars | Use the existing PVC which must be created manually before bound. | | storageClass | scalars | Specify the "storageClass" used to provision the volume. Or the default. StorageClass will be used(the default). Set it to "-" to disable dynamic provisioning. | -| accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | -| size | scalars | Match the volume size of PVC. | +| accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | +| size | scalars | Match the volume size of PVC. | ### Mysql mappings Configuration of kubernetes deployment mysql. -| Name | Type | Description | -| ------------- | -------- | ------------------------------------------------------------ | -| nodeSelector | mappings | kubernetes nodeSelector. | -| ip | scalars | Allow other modules to connect to MySQL. | -| port | scalars | Mysql port. | -| database | scalars | Database name of MySQL. | -| user | scalars | User of MySQL. | -| password | scalars | Password of MySQL. | -| subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | -| existingClaim | scalars | Use the existing PVC which must be created manually before bound. | +| Name | Type | Description | +|---------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| nodeSelector | mappings | kubernetes nodeSelector. | +| ip | scalars | Allow other modules to connect to MySQL. | +| port | scalars | Mysql port. | +| database | scalars | Database name of MySQL. | +| user | scalars | User of MySQL. | +| password | scalars | Password of MySQL. | +| subPath | scalars | Path of data persistence, specify the "subPath" if the PVC is shared with other components. | +| existingClaim | scalars | Use the existing PVC which must be created manually before bound. | | storageClass | scalars | Specify the "storageClass" used to provision the volume. Or the default. StorageClass will be used(the default). Set it to "-" to disable dynamic provisioning. | -| accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | -| size | scalars | Match the volume size of PVC. | +| accessMode | scalars | Kubernetes Persistent Volume Access Modes:
ReadWriteOnce
ReadOnlyMany
ReadWriteMany. | +| size | scalars | Match the volume size of PVC. | @@ -191,11 +192,11 @@ Configuration of kubernetes deployment mysql. Configuration of kubernetes deployment spark. | Name | SubItem | Type | Description | -| ----------------- | ------------ | -------- | ---------------------------- | +|-------------------|--------------|----------|------------------------------| | master/
worker | Image | scalars | Image of spark components | | | ImageTag | scalars | ImageTag of spark components | | | replicas | scalars | Number of copies of pod | -| | resources | mappings | resources of Pod | +| | resources | mappings | resources of Pod | | | nodeSelector | mappings | kubernetes nodeSelector. | | | type | scalars | Kubernetes ServiceTypes. | @@ -204,7 +205,7 @@ Configuration of kubernetes deployment spark. Configuration of kubernetes deployment hdfs. | Name | SubItem | Type | Description | -| --------------------- | ------------ | -------- | ------------------------------------------------ | +|-----------------------|--------------|----------|--------------------------------------------------| | namenode/
datanode | nodeSelector | mappings | kubernetes nodeSelector. | | | type | scalars | Kubernetes ServiceTypes, default is `ClusterIp`. | @@ -215,7 +216,7 @@ Configuration of kubernetes deployment hdfs. Configuration of kubernetes deployment hdfs. | Name | Type | Description | -| ------------ | -------- | ---------------------------- | +|--------------|----------|------------------------------| | nodeSelector | mappings | kubernetes nodeSelector. | | type | scalars | Kubernetes ServiceTypes. | | nodePort | scalars | Kubernetes Service NodePort. | @@ -254,7 +255,7 @@ Configuration of kubernetes deployment hdfs. Configuration of kubernetes deployment rabbitmq . | Name | Type | Description | -| ------------ | -------- | ------------------------------------------------ | +|--------------|----------|--------------------------------------------------| | nodeSelector | mappings | kubernetes nodeSelector. | | type | scalars | Kubernetes ServiceTypes, default is `ClusterIp`. | | nodePort | scalars | Kubernetes Service NodePort. | diff --git a/k8s-deploy/README.md b/k8s-deploy/README.md index be2c91a7e..622aef2cb 100644 --- a/k8s-deploy/README.md +++ b/k8s-deploy/README.md @@ -1,10 +1,10 @@ # Kubernetes Deployment -We recommend using [Kubernetes](https://kubernetes.io/) as a underlying infrastructure to create and manage the FATE clusters in a production environment. KubeFATE supports deploying multiple FATE clusters in an instance of Kubernetes with different namespaces for the purposes of development, testing and production. Considering the different IT designs and standards in each company, the actual deployment should be customized. KubeFATE is flexibile for the FATE configuration. +We recommend using [Kubernetes](https://kubernetes.io/) as an underlying infrastructure to create and manage the FATE clusters in a production environment. KubeFATE supports deploying multiple FATE clusters in an instance of Kubernetes with different namespaces for the purposes of development, testing and production. Considering the different IT designs and standards in each company, the actual deployment should be customized. KubeFATE is flexibile for the FATE configuration. If you focus on how to quickly use KubeFATE, please jump to [Use Scenarios](#use-scenarios). ## High-level architecture of multiple federated learning parties -The hig-hlevel architecture of a multi-party federated learning deployment (e.g. two parties) is shown as follows: +The high-level architecture of a multi-party federated learning deployment (e.g. two parties) is shown as follows:
@@ -37,7 +37,7 @@ KubeFATE is designed to handle different versions FATE. Normally, KubeFATE CLI a ## User scenarios Suppose in an organization, there are two roles: -* System Admin: who is responisble for the infrastructure management as well as Kubernetes administration +* System Admin: who is responsible for the infrastructure management as well as Kubernetes administration * ML Infrastructure Operators: who is responsible for managing the machine learning cluster like FATE
@@ -52,7 +52,7 @@ Kubernetes: [v1.21.7](https://github.com/kubernetes/kubernetes/releases/tag/v1.2 Ingress-nginx: [v1.0.5](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.0.5) #### Creating role, namespace and other resource in Kubernetes -The sample yaml can be found in [rbac-config.yaml](./rbac-config.yaml). In this sample, we create a kube-fate namespace for KubeFATE service. Resource constraints can be applied to kube-fate namespace, refer to [Kubernetes Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/), [Configure Memory and CPU Quotas for Namespace](https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/). +The example yaml can be found in [rbac-config.yaml](./rbac-config.yaml). In this example, we create a kube-fate namespace for KubeFATE service. Resource constraints can be applied to kube-fate namespace, refer to [Kubernetes Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/), [Configure Memory and CPU Quotas for Namespace](https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/). Run the following command to create the namespace: ``` @@ -67,7 +67,7 @@ stringData: ``` #### Preparing domain name and deploying KubeFATE in Kubernetes -Because KubeFATE service exposes RESTful APIs for external access, system admin needs to prepare a domain name for KubeFATE service. In our sample, the domain name is `example.com` . Moreover, system admin should create a namespace (e.g. fate-9999) for FATE deployment. +Because KubeFATE service exposes RESTful APIs for external access, system admin needs to prepare a domain name for KubeFATE service. In our example, the domain name is `example.com` . Moreover, system admin should create a namespace (e.g. fate-9999) for FATE deployment. ``` $ kubectl apply -f ./kubefate.yaml $ kubectl create namespace fate-9999 @@ -95,7 +95,7 @@ serviceurl: example.com Create a `cluster.yaml` for FATE cluster configuration. The details of configuration can be found here: [FATE Cluster Configuration Guide](../docs/configurations/FATE_cluster_configuration.md). -**NOTE:** For Chinese user, specifying a local image registry in `cluster.yaml` can accelerate the download of images. The details is as follows: +**NOTE:** For Chinese user, specifying a local image registry in `cluster.yaml` can accelerate the download of images. The details are as follows: ``` registry: "hub.c.163.com/federatedai" ``` @@ -109,7 +109,7 @@ create job success, job id=fe846176-0787-4879-9d27-622692ce181c *NOTE: If you want to deploy **FATE on Spark**, you can use `cluster-spark.yaml`.* #### Checking the status of "Installing Cluster" job -After the above command has finished, a job is created for installing a FATE cluster. Run the command `kubefate job describe` to check the status of the job, util the "Status" turns to `Success`. +After the above command has finished, a job is created for installing a FATE cluster. Run the command `kubefate job describe` to check the status of the job, until the "Status" turns to `Success`. ``` $ kubefate job describe fe846176-0787-4879-9d27-622692ce181c From 565ff724285dfed1081d41ea49c84eed84085658 Mon Sep 17 00:00:00 2001 From: Chen Jing Date: Wed, 30 Mar 2022 10:30:48 +0800 Subject: [PATCH 09/15] Change the type to scalars Signed-off-by: Chen Jing --- docs/configurations/FATE_cluster_configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configurations/FATE_cluster_configuration.md b/docs/configurations/FATE_cluster_configuration.md index 2b8ec3a20..ee8b01dfa 100644 --- a/docs/configurations/FATE_cluster_configuration.md +++ b/docs/configurations/FATE_cluster_configuration.md @@ -15,7 +15,7 @@ | * persistence | bool | mysql and nodemanager data persistence. | | istio.enable | bool | enable istio | | podSecurityPolicy.enabled | bool | if `true`, create & use Pod Security Policy resources | -| ingressClassName | mappings | The Ingress class name, such as "nginx". | +| ingressClassName | scalars | The Ingress class name, such as "nginx". | | * modules | sequences | Modules to be deployed in the FATE cluster. | | backend | set(eggroll,spark) | Configure cluster computing engine( eggroll or spark) | | ingress | mappings | Custom domain of FATE UI component | From 95c46e04e8e7eefda78ca409ed5ca2ef39b072c6 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Thu, 31 Mar 2022 10:53:34 +0800 Subject: [PATCH 10/15] update images tag of docker build Signed-off-by: owlet42 --- docker-build/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-build/.env b/docker-build/.env index 473130c9e..8fe30b1e3 100644 --- a/docker-build/.env +++ b/docker-build/.env @@ -1,2 +1,2 @@ #PREFIX=federatedai -#IMG_TAG=1.7.2-release +#IMG_TAG=1.8.0-release From bffbbef185437a6632184f7de0ca557ab64b3f92 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Thu, 31 Mar 2022 12:27:43 +0800 Subject: [PATCH 11/15] update docker compose for fate v1.8 Signed-off-by: owlet42 --- docker-deploy/.env | 2 +- .../fateboard/conf/application.properties | 25 ++++++------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/docker-deploy/.env b/docker-deploy/.env index 153105485..784cb39b9 100644 --- a/docker-deploy/.env +++ b/docker-deploy/.env @@ -1,5 +1,5 @@ RegistryURI= -TAG=1.7.2-release +TAG=1.8.0-release SERVING_TAG=2.0.4-release # PREFIX: namespace on the registry's server. diff --git a/docker-deploy/training_template/public/fateboard/conf/application.properties b/docker-deploy/training_template/public/fateboard/conf/application.properties index fa5f035d1..9ff1f0591 100644 --- a/docker-deploy/training_template/public/fateboard/conf/application.properties +++ b/docker-deploy/training_template/public/fateboard/conf/application.properties @@ -1,29 +1,20 @@ server.port=8080 -fateflow.url= -spring.datasource.driver-Class-Name=com.mysql.cj.jdbc.Driver +fateflow.url=http://localhost:9380 +fateflow.http_app_key= +fateflow.http_secret_key= spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true server.tomcat.uri-encoding=UTF-8 -fateboard.datasource.jdbc-url= -fateboard.datasource.username= -fateboard.datasource.password= +fateboard.front_end.cors=false +fateboard.front_end.url=http://localhost:8028 server.tomcat.max-threads=1000 server.tomcat.max-connections=20000 spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=100MB -spring.datasource.druid.filter.config.enabled=false -spring.datasource.druid.web-stat-filter.enabled=false -spring.datasource.druid.stat-view-servlet.enabled=false server.compression.enabled=true server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain server.board.login.username= server.board.login.password= -management.endpoints.web.exposure.exclude=* -#server.ssl.key-store=classpath: -#server.ssl.key-store-password= -#server.ssl.key-password= -#server.ssl.key-alias= -spring.session.store-type=jdbc -spring.session.jdbc.initialize-schema=always -#HTTP_APP_KEY= -#HTTP_SECRET_KEY= \ No newline at end of file +server.servlet.session.timeout=4h +server.servlet.session.cookie.max-age=4h +management.endpoints.web.exposure.exclude=* \ No newline at end of file From 1e2de50e859ead206feeb6fd8d7d8684f57285b7 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Thu, 31 Mar 2022 13:32:10 +0800 Subject: [PATCH 12/15] update dockerfile of client Signed-off-by: owlet42 --- docker-build/client/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-build/client/Dockerfile b/docker-build/client/Dockerfile index b5108be91..4a32cddd5 100644 --- a/docker-build/client/Dockerfile +++ b/docker-build/client/Dockerfile @@ -2,7 +2,7 @@ ARG SOURCE_PREFIX=federatedai ARG SOURCE_TAG=1.5.0-release FROM ${SOURCE_PREFIX}/python:${SOURCE_TAG} as data -FROM python:3.7 +FROM python:3.6 COPY pipeline /data/projects/fate/pipeline RUN pip install notebook fate-client pandas sklearn From 77947afc14b1fb09c43ccc029af6526f13d6339c Mon Sep 17 00:00:00 2001 From: owlet42 Date: Fri, 1 Apr 2022 15:51:36 +0800 Subject: [PATCH 13/15] add fate images push Signed-off-by: owlet42 --- .github/workflows/fate-push.yml | 52 +++++++++++++++++++ .../workflows/{push.yml => kubefate-push.yml} | 3 +- docker-build/.env | 2 +- 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/fate-push.yml rename .github/workflows/{push.yml => kubefate-push.yml} (96%) diff --git a/.github/workflows/fate-push.yml b/.github/workflows/fate-push.yml new file mode 100644 index 000000000..b8c8b01ab --- /dev/null +++ b/.github/workflows/fate-push.yml @@ -0,0 +1,52 @@ +name: Push fate images to DockerHub + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + - jenkins-integration + + # Publish `v1.2.3` tags as releases. + tags: + - v* + +jobs: + # no test is required + push: + runs-on: ubuntu-18.04 + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Prepare the TAG + id: prepare-the-tag + run: | + # strip git ref prefix from version + TAG="" + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + if [ $VERSION = "master" ]; then + TAG="latest" + fi + echo "::set-output name=tag::$TAG" + - name: Build image + run: | + VERSION=${{steps.prepare-the-tag.outputs.tag}} + if [ ! -z "$VERSION" ]; then + export IMG_TAG=$VERSION + fi + cd docker-build + bash docker-build.sh all + + - name: Log into DockerHub + run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Push image + run: | + VERSION=${{steps.prepare-the-tag.outputs.tag}} + if [ ! -z "$VERSION" ]; then + export IMG_TAG=$VERSION + fi + cd docker-build + bash docker-build.sh push diff --git a/.github/workflows/push.yml b/.github/workflows/kubefate-push.yml similarity index 96% rename from .github/workflows/push.yml rename to .github/workflows/kubefate-push.yml index 81cd7df1d..517e81331 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/kubefate-push.yml @@ -1,11 +1,10 @@ -name: Publish +name: Push kubefate service image to DockerHub on: push: # Publish `master` as Docker `latest` image. branches: - master - - jenkins-integration # Publish `v1.2.3` tags as releases. tags: diff --git a/docker-build/.env b/docker-build/.env index 8fe30b1e3..072e53e2a 100644 --- a/docker-build/.env +++ b/docker-build/.env @@ -1,2 +1,2 @@ #PREFIX=federatedai -#IMG_TAG=1.8.0-release +IMG_TAG=1.8.0-release From 459d560e2c61259a65764572654cad50a3ae6079 Mon Sep 17 00:00:00 2001 From: owlet42 Date: Wed, 6 Apr 2022 14:05:54 +0800 Subject: [PATCH 14/15] update workflow Signed-off-by: owlet42 --- .github/workflows/fate-push.yml | 4 ++-- docker-build/.env | 2 +- docker-build/docker-build.sh | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/fate-push.yml b/.github/workflows/fate-push.yml index b8c8b01ab..960b8f41d 100644 --- a/.github/workflows/fate-push.yml +++ b/.github/workflows/fate-push.yml @@ -34,7 +34,7 @@ jobs: run: | VERSION=${{steps.prepare-the-tag.outputs.tag}} if [ ! -z "$VERSION" ]; then - export IMG_TAG=$VERSION + export IMG_TAG="${VERSION}-release" fi cd docker-build bash docker-build.sh all @@ -46,7 +46,7 @@ jobs: run: | VERSION=${{steps.prepare-the-tag.outputs.tag}} if [ ! -z "$VERSION" ]; then - export IMG_TAG=$VERSION + export IMG_TAG="${VERSION}-release" fi cd docker-build bash docker-build.sh push diff --git a/docker-build/.env b/docker-build/.env index 072e53e2a..8fe30b1e3 100644 --- a/docker-build/.env +++ b/docker-build/.env @@ -1,2 +1,2 @@ #PREFIX=federatedai -IMG_TAG=1.8.0-release +#IMG_TAG=1.8.0-release diff --git a/docker-build/docker-build.sh b/docker-build/docker-build.sh index 640a2f78f..458322abc 100644 --- a/docker-build/docker-build.sh +++ b/docker-build/docker-build.sh @@ -14,8 +14,12 @@ set -e -PREFIX=federatedai -IMG_TAG=latest +if [ -z "$IMG_TAG" ]; then + IMG_TAG=latest +fi +if [ -z "$PREFIX" ]; then + PREFIX=federatedai +fi source .env From 350da8074f2d44dd195f2fdbb46274c95b0ade8c Mon Sep 17 00:00:00 2001 From: owlet42 Date: Wed, 6 Apr 2022 15:02:20 +0800 Subject: [PATCH 15/15] update TAG set Signed-off-by: owlet42 --- .github/workflows/fate-push.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/fate-push.yml b/.github/workflows/fate-push.yml index 960b8f41d..be2e6a339 100644 --- a/.github/workflows/fate-push.yml +++ b/.github/workflows/fate-push.yml @@ -27,15 +27,14 @@ jobs: TAG="" VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') if [ $VERSION = "master" ]; then - TAG="latest" + export TAG=latest + else + export TAG=${VERSION##*v}-release fi echo "::set-output name=tag::$TAG" - name: Build image run: | - VERSION=${{steps.prepare-the-tag.outputs.tag}} - if [ ! -z "$VERSION" ]; then - export IMG_TAG="${VERSION}-release" - fi + export IMG_TAG=${{steps.prepare-the-tag.outputs.tag}} cd docker-build bash docker-build.sh all @@ -44,9 +43,6 @@ jobs: - name: Push image run: | - VERSION=${{steps.prepare-the-tag.outputs.tag}} - if [ ! -z "$VERSION" ]; then - export IMG_TAG="${VERSION}-release" - fi + export IMG_TAG=${{steps.prepare-the-tag.outputs.tag}} cd docker-build bash docker-build.sh push