Commit 36cdff8c by rawmind0

Kubeflow release v0.6.2

parent 45407671
...@@ -2,9 +2,9 @@ apiVersion: v1 ...@@ -2,9 +2,9 @@ apiVersion: v1
appVersion: "1.0" appVersion: "1.0"
description: Machine Learning Toolkit for Kubernetes description: Machine Learning Toolkit for Kubernetes
name: kubeflow name: kubeflow
version: 0.1.0 version: 0.6.2
icon: file://../icon.jpg icon: file://../icon.jpg
maintainers: maintainers:
- name: guangbochen - name: Raul
email: support@rancher.com email: support@rancher.com
home: https://www.kubeflow.org/docs/about/kubeflow/ home: https://www.kubeflow.org/docs/about/kubeflow/
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
The Kubeflow project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. Anywhere you are running Kubernetes, you should be able to run Kubeflow The Kubeflow project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. Anywhere you are running Kubernetes, you should be able to run Kubeflow
## Requirements
Kubeflow need some requirements in order to work properly:
- Kubeflow 0.6 is just compatible with k8s 1.14 and 1.15. [Compatibility table](https://www.kubeflow.org/docs/started/k8s/overview/#minimum-system-requirements)
- Istio with ingress gateway should be deployed or enabled on k8s cluster.
- Storageclass should be configured on k8s cluster to enable persistence volumes.
## Who should consider using Kubeflow? ## Who should consider using Kubeflow?
Based on the current functionality you should consider using Kubeflow if: Based on the current functionality you should consider using Kubeflow if:
......
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
The Kubeflow project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. Anywhere you are running Kubernetes, you should be able to run Kubeflow The Kubeflow project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Our goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures. Anywhere you are running Kubernetes, you should be able to run Kubeflow
## Requirements
Kubeflow need some requirements in order to work properly:
- Kubeflow 0.6 is just compatible with k8s 1.14 and 1.15. [Compatibility table](https://www.kubeflow.org/docs/started/k8s/overview/#minimum-system-requirements)
- Istio with ingress gateway should be deployed or enabled on k8s cluster.
- Storageclass should be configured on k8s cluster to enable persistence volumes
## Who should consider using Kubeflow? ## Who should consider using Kubeflow?
Based on the current functionality you should consider using Kubeflow if: Based on the current functionality you should consider using Kubeflow if:
...@@ -11,3 +18,7 @@ Based on the current functionality you should consider using Kubeflow if: ...@@ -11,3 +18,7 @@ Based on the current functionality you should consider using Kubeflow if:
- You want to launch training jobs that use resources – such as additional CPUs or GPUs – that aren’t available on your personal computer - You want to launch training jobs that use resources – such as additional CPUs or GPUs – that aren’t available on your personal computer
- You want to combine TensorFlow with other processes - You want to combine TensorFlow with other processes
> For example, you may want to use [tensorflow/agents](https://github.com/google-research/batch-ppo) to run simulations to generate data for training reinforcement learning models. > For example, you may want to use [tensorflow/agents](https://github.com/google-research/batch-ppo) to run simulations to generate data for training reinforcement learning models.
## How it works?
For more details of how Kubeflow works please reference the [Kubeflow Doc](https://www.kubeflow.org/docs/about/kubeflow/).
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: admission-webhook-bootstrap
name: admission-webhook-bootstrap-service-account
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
kustomize.component: admission-webhook-bootstrap
name: admission-webhook-bootstrap-cluster-role
rules:
- apiGroups:
- admissionregistration.k8s.io
resources:
- mutatingwebhookconfigurations
verbs:
- '*'
- apiGroups:
- ""
resources:
- secrets
verbs:
- '*'
- apiGroups:
- ""
resources:
- pods
verbs:
- list
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
kustomize.component: admission-webhook-bootstrap
name: admission-webhook-bootstrap-cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admission-webhook-bootstrap-cluster-role
subjects:
- kind: ServiceAccount
name: admission-webhook-bootstrap-service-account
namespace: kubeflow
---
apiVersion: v1
data:
create_ca.sh: "#!/bin/bash\n\nset -e\n\nusage() {\n cat <<EOF\nGenerate certificate
suitable for use with an sidecar-injector webhook service.\nThis script uses k8s'
CertificateSigningRequest API to a generate a\ncertificate signed by k8s CA suitable
for use with sidecar-injector webhook\nservices. This requires permissions to
create and approve CSR. See\nhttps://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster
for\ndetailed explantion and additional instructions.\nThe server key/cert k8s
CA cert are stored in a k8s secret.\nusage: ${0} [OPTIONS]\nThe following flags
are required.\n --service Service name of webhook.\n --namespace
\ Namespace where webhook service and secret reside.\n --secret Secret
name for CA certificate and server certificate/key pair.\nEOF\n exit 1\n}\n\nwhile
[[ $# -gt 0 ]]; do\n case ${1} in\n --service)\n service=\"$2\"\n
\ shift\n ;;\n --secret)\n secret=\"$2\"\n
\ shift\n ;;\n --namespace)\n namespace=\"$2\"\n
\ shift\n ;;\n *)\n usage\n ;;\n
\ esac\n shift\ndone\n\n[ -z ${service} ] && service=admission-webhook-service\n[
-z ${secret} ] && secret=webhook-certs\n[ -z ${namespace} ] && namespace=kubeflow\n[
-z ${namespace} ] && namespace=default\n\nwebhookDeploymentName=admission-webhook-deployment\nmutatingWebhookConfigName=admission-webhook-mutating-webhook-configuration\necho
${service}\necho ${namespace}\necho ${secret}\necho ${webhookDeploymentName}\necho
${mutatingWebhookconfigName}\nif [ ! -x \"$(command -v openssl)\" ]; then\n echo
\"openssl not found\"\n exit 1\nfi\ncsrName=${service}.${namespace}\ntmpdir=$(mktemp
-d)\necho \"creating certs in tmpdir ${tmpdir} \"\n\n# x509 outputs a self signed
certificate instead of certificate request, later used as self signed root CA\nopenssl
req -x509 -newkey rsa:2048 -keyout ${tmpdir}/self_ca.key -out ${tmpdir}/self_ca.crt
-days 365 -nodes -subj /C=/ST=/L=/O=/OU=/CN=test-certificate-authority\n\ncat
<<EOF >> ${tmpdir}/csr.conf\n[req]\nreq_extensions = v3_req\ndistinguished_name
= req_distinguished_name\n[req_distinguished_name]\n[ v3_req ]\nbasicConstraints
= CA:FALSE\nkeyUsage = nonRepudiation, digitalSignature, keyEncipherment\nextendedKeyUsage
= serverAuth\nsubjectAltName = @alt_names\n[alt_names]\nDNS.1 = ${service}\nDNS.2
= ${service}.${namespace}\nDNS.3 = ${service}.${namespace}.svc\nEOF\n\nopenssl
genrsa -out ${tmpdir}/server-key.pem 2048\nopenssl req -new -key ${tmpdir}/server-key.pem
-subj \"/CN=${service}.${namespace}.svc\" -out ${tmpdir}/server.csr -config ${tmpdir}/csr.conf\n\n#
Self sign\nopenssl x509 -req -days 365 -in ${tmpdir}/server.csr -CA ${tmpdir}/self_ca.crt
-CAkey ${tmpdir}/self_ca.key -CAcreateserial -out ${tmpdir}/server-cert.pem\n\n#
create the secret with CA cert and server cert/key\nkubectl create secret generic
${secret} \\\n --from-file=key.pem=${tmpdir}/server-key.pem \\\n --from-file=cert.pem=${tmpdir}/server-cert.pem
\\\n --dry-run -o yaml |\n kubectl -n ${namespace} apply -f -\n\n# Webhook
pod needs to be restarted so that the service reload the secret\n# http://github.com/kueflow/kubeflow/issues/3227\t\nwebhookPod=$(kubectl
get pods -n ${namespace} |grep ${webhookDeploymentName} |awk '{print $1;}')\n#
ignore error if webhook pod does not exist\nkubectl delete pod ${webhookPod} 2>/dev/null
|| true\necho \"webhook ${webhookPod} is restarted to utilize the new secret\"\n\ncat
${tmpdir}/self_ca.crt\n\n# -a means base64 encode\ncaBundle=$(cat ${tmpdir}/self_ca.crt
| openssl enc -a -A)\necho ${caBundle}\n\npatchString='[{\"op\": \"replace\",
\"path\": \"/webhooks/0/clientConfig/caBundle\", \"value\":\"{{`{{CA_BUNDLE}}`}}\"}]'\npatchString=$(echo
${patchString} | sed \"s|{{`{{CA_BUNDLE}}`}}|${caBundle}|g\")\necho ${patchString}\n\ncheckWebhookConfig()
{\n currentBundle=$(kubectl get mutatingwebhookconfigurations -n ${namespace}
${mutatingWebhookConfigName} -o jsonpath='{.webhooks[0].clientConfig.caBundle}')\n
\ [[ \"$currentBundle\" == \"$caBundle\" ]]\n}\n\nwhile true; do\n if ! checkWebhookConfig;
then\n echo \"patching ca bundle for webhook configuration...\"\n kubectl
patch mutatingwebhookconfiguration ${mutatingWebhookConfigName} \\\n --type='json'
-p=\"${patchString}\"\n fi\n sleep 10\ndone\n"
namespace: kubeflow
webhookNamePrefix: admission-webhook-
kind: ConfigMap
metadata:
annotations: {}
labels:
kustomize.component: admission-webhook-bootstrap
name: admission-webhook-bootstrap-config-map
namespace: kubeflow
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
kustomize.component: admission-webhook-bootstrap
name: admission-webhook-bootstrap-stateful-set
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
kustomize.component: admission-webhook-bootstrap
serviceName: service
template:
metadata:
labels:
kustomize.component: admission-webhook-bootstrap
spec:
containers:
- command:
- sh
- /var/webhook-config/create_ca.sh
image: gcr.io/kubeflow-images-public/ingress-setup:latest
name: bootstrap
volumeMounts:
- mountPath: /var/webhook-config/
name: admission-webhook-config
restartPolicy: Always
serviceAccountName: admission-webhook-bootstrap-service-account
volumes:
- configMap:
name: admission-webhook-bootstrap-config-map
name: admission-webhook-config
volumeClaimTemplates: []
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: poddefaults.kubeflow.org
spec:
group: kubeflow.org
names:
kind: PodDefault
plural: poddefaults
singular: poddefault
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
desc:
type: string
env:
items:
type: object
type: array
envFrom:
items:
type: object
type: array
selector:
type: object
serviceAccountName:
type: string
volumeMounts:
items:
type: object
type: array
volumes:
items:
type: object
type: array
required:
- selector
type: object
status:
type: object
type: object
version: v1alpha1
---
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingWebhookConfiguration
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-mutating-webhook-configuration
webhooks:
- clientConfig:
caBundle: ""
service:
name: admission-webhook-service
namespace: kubeflow
path: /apply-poddefault
name: admission-webhook-deployment.kubeflow.org
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
resources:
- pods
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-service-account
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-cluster-role
rules:
- apiGroups:
- kubeflow.org
resources:
- poddefaults
verbs:
- get
- watch
- list
- update
- create
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admission-webhook-cluster-role
subjects:
- kind: ServiceAccount
name: admission-webhook-service-account
namespace: kubeflow
---
apiVersion: v1
data:
namespace: kubeflow
kind: ConfigMap
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-admission-webhook-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-service
namespace: kubeflow
spec:
ports:
- port: 443
targetPort: 443
selector:
app: admission-webhook
kustomize.component: admission-webhook
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
name: admission-webhook-deployment
namespace: kubeflow
spec:
selector:
matchLabels:
app: admission-webhook
kustomize.component: admission-webhook
template:
metadata:
labels:
app: admission-webhook
kustomize.component: admission-webhook
spec:
containers:
- image: gcr.io/kubeflow-images-public/admission-webhook:v20190520-v0-139-gcee39dbc-dirty-0d8f4c
name: admission-webhook
volumeMounts:
- mountPath: /etc/webhook/certs
name: webhook-cert
readOnly: true
serviceAccountName: admission-webhook-service-account
volumes:
- name: webhook-cert
secret:
secretName: webhook-certs
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
ksonnet.io/component: ambassador
name: ambassador
namespace: kubeflow
spec:
replicas: {{ .Values.ambassador.replicas }}
template:
metadata:
labels:
service: ambassador
namespace: kubeflow
spec:
containers:
- name: ambassador
env:
- name: AMBASSADOR_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AMBASSADOR_SINGLE_NAMESPACE
value: "true"
image: "{{ .Values.ambassador.image.repository }}:{{ .Values.ambassador.image.tag }}"
livenessProbe:
httpGet:
path: /ambassador/v0/check_alive
port: 8877
initialDelaySeconds: 30
periodSeconds: 30
readinessProbe:
httpGet:
path: /ambassador/v0/check_ready
port: 8877
initialDelaySeconds: 30
periodSeconds: 30
resources:
limits:
cpu: 1
memory: 400Mi
requests:
cpu: 200m
memory: 100Mi
- name: statsd
image: "{{ .Values.ambassador.statsdImage.repository }}:{{ .Values.ambassador.statsdImage.tag }}"
- name: statsd-sink
image: "{{ .Values.ambassador.exporterImage.repository }}:{{ .Values.ambassador.exporterImage.tag }}"
restartPolicy: Always
serviceAccountName: ambassador
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: ambassador
name: ambassador
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
ksonnet.io/component: ambassador
name: ambassador
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- update
- patch
- get
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
ksonnet.io/component: ambassador
name: ambassador
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ambassador
subjects:
- kind: ServiceAccount
name: ambassador
namespace: kubeflow
apiVersion: v1
kind: Service
metadata:
labels:
ksonnet.io/component: ambassador
service: ambassador
{{- if eq .Values.ambassador.service.type "Rancher-Proxy" }}
kubernetes.io/cluster-service: "true"
{{- end }}
name: ambassador
namespace: kubeflow
spec:
ports:
- name: ambassador
port: 80
targetPort: 80
{{- if .Values.ambassador.service.nodePort }}
nodePort: {{ .Values.ambassador.service.nodePort }}
{{- end }}
selector:
service: ambassador
{{- if eq .Values.ambassador.service.type "Rancher-Proxy" }}
type: ClusterIP
{{- else }}
type: {{ .Values.ambassador.service.type }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
labels:
ksonnet.io/component: ambassador
service: ambassador-admin
name: ambassador-admin
namespace: kubeflow
spec:
ports:
- name: ambassador-admin
port: 8877
targetPort: 8877
selector:
service: ambassador
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: k8s-dashboard-ui-mapping
prefix: /k8s/ui/
rewrite: /
tls: true
service: kubernetes-dashboard.kube-system
labels:
ksonnet.io/component: ambassador
name: k8s-dashboard
namespace: kubeflow
spec:
ports:
- port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/port: "9102"
prometheus.io/scrape: "true"
labels:
ksonnet.io/component: ambassador
service: ambassador
name: statsd-sink
namespace: kubeflow
spec:
ports:
- name: statsd-sink
port: 9102
protocol: TCP
targetPort: 9102
selector:
service: ambassador
type: ClusterIP
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-service-account
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-cluster-role
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- get
- list
- update
- patch
- watch
- apiGroups:
- app.k8s.io
resources:
- '*'
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: application-controller-cluster-role
subjects:
- kind: ServiceAccount
name: application-controller-service-account
namespace: kubeflow
---
apiVersion: v1
data:
project: {{ .Values.applicationController.project }}
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-service
namespace: kubeflow
spec:
ports:
- port: 443
selector:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: application-controller-stateful-set
namespace: kubeflow
spec:
selector:
matchLabels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
serviceName: application-controller-service
template:
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
spec:
containers:
- command:
- /root/manager
env:
- name: project
valueFrom:
configMapKeyRef:
name: application-controller-parameters
key: project
image: gcr.io/kubeflow-images-public/kubernetes-sigs/application:1.0-beta
imagePullPolicy: Always
name: manager
serviceAccountName: application-controller-service-account
volumeClaimTemplates: []
---
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: kubeflow
app.kubernetes.io/instance: kubeflow
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: kubeflow
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
name: kubeflow
namespace: kubeflow
spec:
addOwnerRef: true
componentKinds:
- group: app.k8s.io
kind: Application
descriptor:
description: application that aggregates all kubeflow applications
keywords:
- kubeflow
links:
- description: About
url: https://kubeflow.org
maintainers:
- email: jlewi@google.com
name: Jeremy Lewi
- email: kam.d.kasravi@intel.com
name: Kam Kasravi
owners:
- email: jlewi@google.com
name: Jeremy Lewi
type: kubeflow
version: v0.6.2
selector:
matchLabels:
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: v0.6
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: applications.app.k8s.io
annotations:
"helm.sh/hook": crd-install
"helm.sh/hook-weight": "-5"
spec:
group: app.k8s.io
names:
kind: Application
plural: applications
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
addOwnerRef:
type: boolean
assemblyPhase:
type: string
componentKinds:
items:
type: object
type: array
descriptor:
properties:
description:
type: string
icons:
items:
properties:
size:
type: string
src:
type: string
type:
type: string
required:
- src
type: object
type: array
keywords:
items:
type: string
type: array
links:
items:
properties:
description:
type: string
url:
type: string
type: object
type: array
maintainers:
items:
properties:
email:
type: string
name:
type: string
url:
type: string
type: object
type: array
notes:
type: string
owners:
items:
properties:
email:
type: string
name:
type: string
url:
type: string
type: object
type: array
type:
type: string
version:
type: string
type: object
info:
items:
properties:
name:
type: string
type:
type: string
value:
type: string
valueFrom:
properties:
configMapKeyRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
key:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
ingressRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
host:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
path:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
secretKeyRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
key:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
serviceRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
path:
type: string
port:
format: int32
type: integer
resourceVersion:
type: string
uid:
type: string
type: object
type:
type: string
type: object
type: object
type: array
selector:
type: object
type: object
status:
properties:
components:
items:
properties:
group:
type: string
kind:
type: string
link:
type: string
name:
type: string
status:
type: string
type: object
type: array
conditions:
items:
properties:
lastTransitionTime:
format: date-time
type: string
lastUpdateTime:
format: date-time
type: string
message:
type: string
reason:
type: string
status:
type: string
type:
type: string
required:
- type
- status
type: object
type: array
observedGeneration:
format: int64
type: integer
type: object
version: v1beta1
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
kustomize.component: argo
name: workflows.argoproj.io
spec:
group: argoproj.io
names:
kind: Workflow
listKind: WorkflowList
plural: workflows
shortNames:
- wf
singular: workflow
scope: Namespaced
version: v1alpha1
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: argo
name: argo
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: argo
name: argo-ui
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: argo
kustomize.component: argo
name: argo
rules:
- apiGroups:
- ""
resources:
- pods
- pods/exec
verbs:
- create
- get
- list
- watch
- update
- patch
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- watch
- list
- apiGroups:
- ""
resources:
- persistentvolumeclaims
verbs:
- create
- delete
- apiGroups:
- argoproj.io
resources:
- workflows
verbs:
- get
- list
- watch
- update
- patch
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: argo
kustomize.component: argo
name: argo-ui
rules:
- apiGroups:
- ""
resources:
- pods
- pods/exec
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- argoproj.io
resources:
- workflows
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: argo
kustomize.component: argo
name: argo
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: argo
subjects:
- kind: ServiceAccount
name: argo
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: argo-ui
kustomize.component: argo
name: argo-ui
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: argo-ui
subjects:
- kind: ServiceAccount
name: argo-ui
namespace: kubeflow
---
apiVersion: v1
data:
config: |
{
executorImage: {{ .Values.argo.executorImage | quote }},
artifactRepository:
{
s3: {
bucket: {{ .Values.argo.artifactRepositoryBucket | quote }},
keyPrefix: {{ .Values.argo.artifactRepositoryKeyPrefix | quote }},
endpoint: {{ .Values.argo.artifactRepositoryEndpoint | quote }},
insecure: {{ .Values.argo.artifactRepositoryInsecure }},
accessKeySecret: {
name: {{ .Values.argo.artifactRepositoryAccessKeySecretName | quote }},
key: {{ .Values.argo.artifactRepositoryAccessKeySecretKey | quote }}
},
secretKeySecret: {
name: {{ .Values.argo.artifactRepositorySecretKeySecretName | quote }},
key: {{ .Values.argo.artifactRepositorySecretKeySecretKey | quote }}
}
}
}
}
kind: ConfigMap
metadata:
labels:
kustomize.component: argo
name: workflow-controller-configmap
namespace: kubeflow
---
apiVersion: v1
data:
artifactRepositoryAccessKeySecretKey: {{ .Values.argo.artifactRepositoryAccessKeySecretKey | quote }}
artifactRepositoryAccessKeySecretName: {{ .Values.argo.artifactRepositoryAccessKeySecretName | quote }}
artifactRepositoryBucket: {{ .Values.argo.artifactRepositoryBucket | quote }}
artifactRepositoryEndpoint: {{ .Values.argo.artifactRepositoryEndpoint | quote }}
artifactRepositoryInsecure: {{ .Values.argo.artifactRepositoryInsecure | quote }}
artifactRepositoryKeyPrefix: {{ .Values.argo.artifactRepositoryKeyPrefix }}
artifactRepositorySecretKeySecretKey: {{ .Values.argo.artifactRepositorySecretKeySecretKey | quote }}
artifactRepositorySecretKeySecretName: {{ .Values.argo.artifactRepositorySecretKeySecretName | quote }}
clusterDomain: {{ .Values.clusterDomain | quote }}
executorImage: {{ .Values.argo.executorImage | quote }}
namespace: kubeflow
kind: ConfigMap
metadata:
labels:
kustomize.component: argo
name: workflow-controller-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: argo-ui-mapping
prefix: /argo/
service: argo-ui.kubeflow
labels:
app: argo-ui
kustomize.component: argo
name: argo-ui
namespace: kubeflow
spec:
ports:
- port: 80
targetPort: 8001
selector:
app: argo-ui
kustomize.component: argo
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: argo-ui
kustomize.component: argo
name: argo-ui
namespace: kubeflow
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: argo-ui
kustomize.component: argo
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: argo-ui
kustomize.component: argo
spec:
containers:
- env:
- name: ARGO_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: IN_CLUSTER
value: "true"
- name: BASE_HREF
value: /argo/
image: argoproj/argoui:v2.3.0
imagePullPolicy: IfNotPresent
name: argo-ui
readinessProbe:
httpGet:
path: /
port: 8001
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: argo-ui
serviceAccountName: argo-ui
terminationGracePeriodSeconds: 30
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: workflow-controller
kustomize.component: argo
name: workflow-controller
namespace: kubeflow
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: workflow-controller
kustomize.component: argo
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: workflow-controller
kustomize.component: argo
spec:
containers:
- args:
- --configmap
- workflow-controller-configmap
command:
- workflow-controller
env:
- name: ARGO_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: argoproj/workflow-controller:v2.3.0
imagePullPolicy: IfNotPresent
name: workflow-controller
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: argo
serviceAccountName: argo
terminationGracePeriodSeconds: 30
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: argo-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /argo/
rewrite:
uri: /
route:
- destination:
host: argo-ui.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: centraldashboard
name: centraldashboard
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: centraldashboard
ksonnet.io/component: centraldashboard
name: centraldashboard
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- pods
- pods/exec
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
apiVersion: v1 apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: centraldashboard
name: centraldashboard
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app: centraldashboard
kustomize.component: centraldashboard
name: centraldashboard
namespace: kubeflow
rules:
- apiGroups:
- ""
- app.k8s.io
resources:
- applications
- pods
- pods/exec
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: centraldashboard
kustomize.component: centraldashboard
name: centraldashboard
rules:
- apiGroups:
- ""
resources:
- events
- namespaces
- nodes
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app: centraldashboard
kustomize.component: centraldashboard
name: centraldashboard
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: centraldashboard
subjects:
- kind: ServiceAccount
name: centraldashboard
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: centraldashboard
kustomize.component: centraldashboard
name: centraldashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: centraldashboard
subjects:
- kind: ServiceAccount
name: centraldashboard
namespace: kubeflow
---
apiVersion: v1
data:
clusterDomain: {{ .Values.clusterDomain }}
userid-header: {{ .Values.centraldashboard.useridHeader }}
userid-prefix: {{ .Values.centraldashboard.useridPrefix }}
kind: ConfigMap
metadata:
labels:
kustomize.component: centraldashboard
name: centraldashboard-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service kind: Service
metadata: metadata:
annotations: annotations:
...@@ -12,35 +112,80 @@ metadata: ...@@ -12,35 +112,80 @@ metadata:
service: centraldashboard.kubeflow service: centraldashboard.kubeflow
labels: labels:
app: centraldashboard app: centraldashboard
ksonnet.io/component: centraldashboard kustomize.component: centraldashboard
name: centraldashboard name: centraldashboard
namespace: kubeflow namespace: kubeflow
spec: spec:
ports: ports:
- port: 80 - port: 80
protocol: TCP
targetPort: 8082 targetPort: 8082
selector: selector:
app: centraldashboard app: centraldashboard
kustomize.component: centraldashboard
sessionAffinity: None sessionAffinity: None
type: ClusterIP type: ClusterIP
--- ---
apiVersion: extensions/v1beta1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
labels: labels:
app: centraldashboard app: centraldashboard
ksonnet.io/component: centraldashboard kustomize.component: centraldashboard
name: centraldashboard name: centraldashboard
namespace: kubeflow namespace: kubeflow
spec: spec:
replicas: 1
selector:
matchLabels:
app: centraldashboard
kustomize.component: centraldashboard
template: template:
metadata: metadata:
labels: labels:
app: centraldashboard app: centraldashboard
kustomize.component: centraldashboard
spec: spec:
containers: containers:
- image: "{{ .Values.centraldashboard.image.repository }}:{{ .Values.centraldashboard.image.tag }}" - env:
- name: USERID_HEADER
valueFrom:
configMapKeyRef:
name: centraldashboard-parameters
key: userid-header
- name: USERID_PREFIX
valueFrom:
configMapKeyRef:
name: centraldashboard-parameters
key: userid-prefix
- name: PROFILES_KFAM_SERVICE_HOST
value: profiles-kfam.kubeflow
image: gcr.io/kubeflow-images-public/centraldashboard:v20190823-v0.6.0-rc.0-69-gcb7dab59
imagePullPolicy: IfNotPresent
name: centraldashboard name: centraldashboard
ports: ports:
- containerPort: 8082 - containerPort: 8082
protocol: TCP
serviceAccountName: centraldashboard serviceAccountName: centraldashboard
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: centraldashboard
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /
rewrite:
uri: /
route:
- destination:
host: centraldashboard.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
{{- if .Values.chainerOperator.enabled }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
ksonnet.io/component: chainer-operator
annotations:
"helm.sh/hook": crd-install
"helm.sh/hook-delete-policy": before-hook-creation
name: chainerjobs.kubeflow.org
spec:
group: kubeflow.org
names:
categories:
- all
kind: ChainerJob
plural: chainerjobs
shortNames:
- chj
- chjs
- chjob
- chjobs
singular: chainerjob
scope: Namespaced
version: v1alpha1
{{- end }}
{{- if .Values.chainerOperator.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: chainer-operator
ksonnet.io/component: chainer-operator
name: chainer-operator
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: chainer-operator
template:
metadata:
labels:
app: chainer-operator
spec:
containers:
- args:
- -v
- "2"
- -stderrthreshold
- INFO
image: "{{ .Values.chainerOperator.image.repository }}:{{ .Values.chainerOperator.image.tag }}"
imagePullPolicy: Always
name: chainer-operator
serviceAccountName: chainer-operator
{{- end }}
apiVersion: v1
data:
clusterRbacConfig: {{ .Values.istio.clusterRbacConfig | quote }}
kind: ConfigMap
kind: ConfigMap
metadata:
name: istio-parameters-tt477f6588
namespace: kubeflow
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: kubeflow-gateway
namespace: kubeflow
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: google-api-entry
namespace: kubeflow
spec:
hosts:
- www.googleapis.com
location: MESH_EXTERNAL
ports:
- name: https
number: 443
protocol: HTTPS
resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: google-storage-api-entry
namespace: kubeflow
spec:
hosts:
- storage.googleapis.com
location: MESH_EXTERNAL
ports:
- name: https
number: 443
protocol: HTTPS
resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: google-api-vs
namespace: kubeflow
spec:
hosts:
- www.googleapis.com
tls:
- match:
- port: 443
sni_hosts:
- www.googleapis.com
route:
- destination:
host: www.googleapis.com
port:
number: 443
weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: google-storage-api-vs
namespace: kubeflow
spec:
hosts:
- storage.googleapis.com
tls:
- match:
- port: 443
sni_hosts:
- storage.googleapis.com
route:
- destination:
host: storage.googleapis.com
port:
number: 443
weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana-vs
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- method:
exact: GET
uri:
prefix: /istio/grafana/
rewrite:
uri: /
route:
- destination:
host: grafana.istio-system.svc.cluster.local
port:
number: 3000
---
apiVersion: rbac.istio.io/v1alpha1
kind: ClusterRbacConfig
metadata:
name: default
namespace: kubeflow
spec:
mode: {{ .Values.istio.clusterRbacConfig | quote }}
{{- if .Values.jupyterhub.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyterhub-config
namespace: kubeflow
data:
{{ (.Files.Glob "scripts/jupyterhub_config.py").AsConfig | indent 2 }}
{{- end }}
{{- if .Values.jupyterhub.enabled }}
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: jupyter-hub
ksonnet.io/component: jupyterhub
name: jupyter-hub
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyter-notebook
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyter-notebook-role
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- pods
- services
verbs:
- '*'
- apiGroups:
- ""
- apps
- extensions
resources:
- deployments
- replicasets
verbs:
- '*'
- apiGroups:
- kubeflow.org
resources:
- '*'
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyter-role
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- pods
- persistentvolumeclaims
verbs:
- get
- watch
- list
- create
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyter-notebook-role
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: jupyter-notebook-role
subjects:
- kind: ServiceAccount
name: jupyter-notebook
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
ksonnet.io/component: jupyterhub
name: jupyter-role
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: jupyter-role
subjects:
- kind: ServiceAccount
name: jupyter-hub
namespace: kubeflow
{{- end }}
{{- if .Values.jupyterhub.enabled }}
apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/scrape: "true"
labels:
app: tf-hub
ksonnet.io/component: jupyterhub
name: tf-hub-0
namespace: kubeflow
spec:
clusterIP: None
ports:
- name: hub
port: 8000
selector:
app: tf-hub
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: tf-hub-lb-hub-mapping
prefix: /hub/
rewrite: /hub/
timeout_ms: 300000
service: tf-hub-lb.kubeflow
use_websocket: true
---
apiVersion: ambassador/v0
kind: Mapping
name: tf-hub-lb-user-mapping
prefix: /user/
rewrite: /user/
timeout_ms: 300000
service: tf-hub-lb.kubeflow
use_websocket: true
labels:
app: tf-hub-lb
ksonnet.io/component: jupyterhub
name: tf-hub-lb
namespace: kubeflow
spec:
ports:
- name: hub
port: 80
targetPort: 8000
selector:
app: tf-hub
type: {{ .Values.jupyterhub.service.type }}
{{- end }}
{{- if .Values.jupyterhub.enabled }}
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
labels:
ksonnet.io/component: jupyterhub
name: tf-hub
namespace: kubeflow
spec:
replicas: 1
serviceName: ""
template:
metadata:
labels:
app: tf-hub
spec:
containers:
- command:
- jupyterhub
- -f
- /etc/config/jupyterhub_config.py
env:
- name: NOTEBOOK_PVC_MOUNT
value: /home/jovyan
- name: CLOUD_NAME
value: "null"
- name: REGISTRY
value: gcr.io
- name: REPO_NAME
value: kubeflow-images-public
- name: KF_AUTHENTICATOR
value: "null"
- name: DEFAULT_JUPYTERLAB
value: "false"
- name: KF_PVC_LIST
value: "null"
image: "{{ .Values.jupyterhub.image.repository }}:{{ .Values.jupyterhub.image.tag }}"
name: tf-hub
ports:
- containerPort: 8000
- containerPort: 8081
volumeMounts:
- mountPath: /etc/config
name: config-volume
serviceAccountName: jupyter-hub
volumes:
- configMap:
name: jupyterhub-config
name: config-volume
updateStrategy:
type: RollingUpdate
{{- end }}
apiVersion: v1
kind: ConfigMap
metadata:
labels:
ksonnet.io/component: katib
name: metricscollector-template
namespace: kubeflow
data:
defaultMetricsCollectorTemplate.yaml: "apiVersion: batch/v1beta1\nkind: CronJob\nmetadata:\n
\ name: {{.WorkerId}}\n namespace: {{.NameSpace}} \nspec:\n schedule: \"*/1
* * * *\"\n successfulJobsHistoryLimit: 1\n failedJobsHistoryLimit: 1\n jobTemplate:\n
\ spec:\n template:\n spec:\n serviceAccountName: metrics-collector\n
\ containers:\n - name: {{.WorkerId}}\n image: katib/metrics-collector\n
\ args:\n - \"./metricscollector\"\n - \"-s\"\n
\ - \"{{.StudyId}}\"\n - \"-t\"\n - \"{{.TrialId}}\"\n
\ - \"-w\"\n - \"{{.WorkerId}}\"\n - \"-n\"\n
\ - \"{{.NameSpace}}\"\n restartPolicy: Never\n"
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
ksonnet.io/component: katib
name: worker-template
namespace: kubeflow
data:
defaultWorkerTemplate.yaml: |
apiVersion: batch/v1
namespace: kubeflow
kind: Job
metadata:
name: {{.WorkerId}}
spec:
template:
spec:
containers:
- name: {{.WorkerId}}
image: alpine
restartPolicy: Never
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: experiments.kubeflow.org
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[-1:].type
name: Status
type: string
- JSONPath: .metadata.creationTimestamp
name: Age
type: date
group: kubeflow.org
names:
categories:
- all
- kubeflow
- katib
kind: Experiment
plural: experiments
singular: experiment
scope: Namespaced
subresources:
status: {}
version: v1alpha2
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: trials.kubeflow.org
spec:
additionalPrinterColumns:
- JSONPath: .status.conditions[-1:].type
name: Status
type: string
- JSONPath: .metadata.creationTimestamp
name: Age
type: date
group: kubeflow.org
names:
categories:
- all
- kubeflow
- katib
kind: Trial
plural: trials
singular: trial
scope: Namespaced
subresources:
status: {}
version: v1alpha2
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: katib-controller
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: katib-controller
rules:
- apiGroups:
- ""
resources:
- configmaps
- serviceaccounts
- services
- secrets
verbs:
- '*'
- apiGroups:
- ""
resources:
- pods
- pods/log
- pods/status
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
- cronjobs
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- get
- apiGroups:
- admissionregistration.k8s.io
resources:
- validatingwebhookconfigurations
- mutatingwebhookconfigurations
verbs:
- '*'
- apiGroups:
- kubeflow.org
resources:
- experiments
- experiments/status
- trials
- trials/status
verbs:
- '*'
- apiGroups:
- kubeflow.org
resources:
- tfjobs
- pytorchjobs
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: katib-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: katib-controller
subjects:
- kind: ServiceAccount
name: katib-controller
namespace: kubeflow
---
apiVersion: v1
data:
defaultTrialTemplate.yaml: |-
apiVersion: batch/v1
kind: Job
metadata:
name: {{`{{.Trial}}`}}
namespace: {{`{{.NameSpace}}`}}
spec:
template:
spec:
containers:
- name: {{`{{.Trial}}`}}
image: alpine
restartPolicy: Never
kind: ConfigMap
metadata:
name: trial-template
namespace: kubeflow
---
apiVersion: v1
kind: Secret
metadata:
name: katib-controller
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
name: katib-controller
namespace: kubeflow
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app: katib-controller
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib-controller
name: katib-controller
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib-controller
template:
metadata:
labels:
app: katib-controller
spec:
containers:
- command:
- ./katib-controller
env:
- name: KATIB_CORE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/kubeflow-images-public/katib/v1alpha2/katib-controller:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-controller
ports:
- containerPort: 443
name: webhook
protocol: TCP
volumeMounts:
- mountPath: /tmp/cert
name: cert
readOnly: true
serviceAccountName: katib-controller
volumes:
- name: cert
secret:
defaultMode: 420
secretName: katib-controller
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
ksonnet.io/component: katib
annotations:
"helm.sh/hook": crd-install
"helm.sh/hook-delete-policy": before-hook-creation
name: studyjobs.kubeflow.org
spec:
group: kubeflow.org
names:
kind: StudyJob
plural: studyjobs
singular: studyjob
version: v1alpha1
apiVersion: v1
data:
MYSQL_ROOT_PASSWORD: {{ .Values.katib.db.password | b64enc | quote }}
kind: Secret
metadata:
name: katib-db-secrets
namespace: kubeflow
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: db
name: katib-db
namespace: kubeflow
spec:
ports:
- name: dbapi
port: 3306
protocol: TCP
selector:
app: katib
component: db
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: db
name: katib-db
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: db
template:
metadata:
labels:
app: katib
component: db
name: katib-db
spec:
containers:
- args:
- --datadir
- /var/lib/mysql/datadir
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: katib-db-secrets
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
- name: MYSQL_DATABASE
value: katib
image: mysql:8.0.3
name: katib-db
ports:
- containerPort: 3306
name: dbapi
readinessProbe:
exec:
command:
- /bin/bash
- -c
- mysql -D $$MYSQL_DATABASE -p$$MYSQL_ROOT_PASSWORD -e 'SELECT 1'
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
volumeMounts:
- mountPath: /var/lib/mysql
name: katib-db-pvc
volumes:
- name: katib-db-pvc
{{- if .Values.katib.db.persistence.enabled }}
persistentVolumeClaim:
claimName: katib-db-pvc
{{- else }}
emptyDir: {}
{{ end }}
{{- if .Values.katib.db.persistence.enabled }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: katib-db-pvc
namespace: kubeflow
spec:
accessModes:
- {{ .Values.katib.db.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.katib.db.persistence.size | quote }}
storageClassName: {{ .Values.katib.db.persistence.storageClass | quote }}
{{- end -}}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: studyjob-controller
ksonnet.io/component: katib
name: studyjob-controller
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: studyjob-controller
template:
metadata:
labels:
app: studyjob-controller
spec:
containers:
- image: "{{ .Values.katib.studyJobControllerImage.repository }}:{{ .Values.katib.studyJobControllerImage.tag }}"
imagePullPolicy: Always
name: studyjob-controller
volumeMounts:
- mountPath: /worker-template
name: worker-template
- mountPath: /metricscollector-template
name: metricscollector-template
serviceAccountName: studyjob-controller
volumes:
- configMap:
name: worker-template
name: worker-template
- configMap:
name: metricscollector-template
name: metricscollector-template
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: core
ksonnet.io/component: katib
name: vizier-core
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: core
name: vizier-core
spec:
containers:
- args:
- ./vizier-manager
- -w
- kubernetes
- -i
- k-cluster.example.net
image: "{{ .Values.katib.vizierCoreImage.repository }}:{{ .Values.katib.vizierCoreImage.tag }}"
# image: gcr.io/kubeflow-images-public/katib/vizier-core:v0.1.2-alpha-45-g3dce496
name: vizier-core
ports:
- containerPort: 6789
name: api
serviceAccountName: vizier-core
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: db
ksonnet.io/component: katib
name: vizier-db
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: db
name: vizier-db
spec:
containers:
- args:
- --datadir
- /var/lib/mysql/datadir
env:
- name: MYSQL_ROOT_PASSWORD
value: test
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
- name: MYSQL_DATABASE
value: vizier
image: "{{ .Values.katib.vizierDbImage.repository }}:{{ .Values.katib.vizierDbImage.tag }}"
name: vizier-db
ports:
- containerPort: 3306
name: dbapi
volumeMounts:
- mountPath: /var/lib/mysql
name: vizier-db
volumes:
- name: vizier-db
{{- if .Values.katib.vizierdb.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.katib.vizierdb.persistence.existingClaim | default ("vizier-db") }}
{{- else }}
emptyDir: {}
{{- end }}
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: suggestion-bayesianoptimization
ksonnet.io/component: katib
name: vizier-suggestion-bayesianoptimization
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: suggestion-bayesianoptimization
name: vizier-suggestion-bayesianoptimization
spec:
containers:
- image: "{{ .Values.katib.suggestionBayesianOptimizationImage.repository }}:{{ .Values.katib.suggestionBayesianOptimizationImage.tag }}"
name: vizier-suggestion-bayesianoptimization
ports:
- containerPort: 6789
name: api
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: suggestion-grid
ksonnet.io/component: katib
name: vizier-suggestion-grid
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: suggestion-grid
name: vizier-suggestion-grid
spec:
containers:
- image: "{{ .Values.katib.suggestionGridImage.repository }}:{{ .Values.katib.suggestionGridImage.tag }}"
# - image: gcr.io/kubeflow-images-public/katib/suggestion-grid:v0.1.2-alpha-45-g3dce496
name: vizier-suggestion-grid
ports:
- containerPort: 6789
name: api
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: suggestion-hyperband
ksonnet.io/component: katib
name: vizier-suggestion-hyperband
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: suggestion-hyperband
name: vizier-suggestion-hyperband
spec:
containers:
- image: "{{ .Values.katib.suggestionHyperbandImage.repository }}:{{ .Values.katib.suggestionHyperbandImage.tag }}"
# - image: gcr.io/kubeflow-images-public/katib/suggestion-hyperband:v0.1.2-alpha-45-g3dce496
name: vizier-suggestion-hyperband
ports:
- containerPort: 6789
name: api
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: vizier
component: suggestion-random
ksonnet.io/component: katib
name: vizier-suggestion-random
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: vizier
component: suggestion-random
name: vizier-suggestion-random
spec:
containers:
- image: "{{ .Values.katib.suggestionRandomImage.repository }}:{{ .Values.katib.suggestionRandomImage.tag }}"
# - image: gcr.io/kubeflow-images-public/katib/suggestion-random:v0.1.2-alpha-45-g3dce496
name: vizier-suggestion-random
ports:
- containerPort: 6789
name: api
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: manager
name: katib-manager
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: manager
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: manager-rest
name: katib-manager-rest
namespace: kubeflow
spec:
ports:
- name: api
port: 80
protocol: TCP
selector:
app: katib
component: manager-rest
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: manager
name: katib-manager
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: manager
template:
metadata:
labels:
app: katib
component: manager
name: katib-manager
spec:
containers:
- command:
- ./katib-manager
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: katib-db-secrets
image: gcr.io/kubeflow-images-public/katib/v1alpha2/katib-manager:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/grpc_health_probe
- -addr=:6789
initialDelaySeconds: 10
name: katib-manager
ports:
- containerPort: 6789
name: api
readinessProbe:
exec:
command:
- /bin/grpc_health_probe
- -addr=:6789
initialDelaySeconds: 5
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: manager-rest
name: katib-manager-rest
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: manager-rest
template:
metadata:
labels:
app: katib
component: manager-rest
name: katib-manager-rest
spec:
containers:
- command:
- ./katib-manager-rest
image: gcr.io/kubeflow-images-public/katib/v1alpha2/katib-manager-rest:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-manager-rest
ports:
- containerPort: 80
name: api
apiVersion: v1
kind: Service
metadata:
labels:
app: modeldb
component: backend
ksonnet.io/component: katib
name: modeldb-backend
namespace: kubeflow
spec:
ports:
- name: api
port: 6543
protocol: TCP
selector:
app: modeldb
component: backend
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: modeldb
component: db
ksonnet.io/component: katib
name: modeldb-db
namespace: kubeflow
spec:
ports:
- name: dbapi
port: 27017
protocol: TCP
selector:
app: modeldb
component: db
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: modeldb-mapping
prefix: /katib/
rewrite: /katib/
method: GET
service: modeldb-frontend.kubeflow:3000
labels:
app: modeldb
component: frontend
ksonnet.io/component: katib
name: modeldb-frontend
namespace: kubeflow
spec:
ports:
- name: api
port: 3000
protocol: TCP
selector:
app: modeldb
component: frontend
type: ClusterIP
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: modeldb
component: backend
ksonnet.io/component: katib
name: modeldb-backend
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: modeldb
component: backend
name: modeldb-backend
spec:
containers:
- args:
- modeldb-db
image: "{{ .Values.katib.modeldbImage.repository }}:{{ .Values.katib.modeldbImage.tag }}"
name: modeldb-backend
ports:
- containerPort: 6543
name: api
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: modeldb
component: db
ksonnet.io/component: katib
name: modeldb-db
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: modeldb
component: db
name: modeldb-db
spec:
containers:
- image: "{{ .Values.katib.modeldbDatabaseImage.repository }}:{{ .Values.katib.modeldbDatabaseImage.tag }}"
name: modeldb-db
ports:
- containerPort: 27017
name: dbapi
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: modeldb
component: frontend
ksonnet.io/component: katib
name: modeldb-frontend
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
app: modeldb
component: frontend
name: modeldb-frontend
spec:
containers:
- args:
- modeldb-backend
env:
- name: ROOT_PATH
value: /katib
# image: gcr.io/kubeflow-images-public/katib/katib-frontend:v0.1.2-alpha-45-g3dce496
image: "{{ .Values.katib.modeldbFrontendImage.repository }}:{{ .Values.katib.modeldbFrontendImage.tag }}"
imagePullPolicy: IfNotPresent
name: modeldb-frontend
ports:
- containerPort: 3000
name: webapi
{{- if and .Values.katib.vizierdb.persistence.enabled (not .Values.katib.vizierdb.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: vizier
component: db
ksonnet.io/component: katib
name: vizier-db
namespace: kubeflow
spec:
accessModes:
- {{ .Values.katib.vizierdb.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.katib.vizierdb.persistence.size | quote }}
{{- if .Values.katib.vizierdb.persistence.storageClass }}
{{- if (eq "-" .Values.katib.vizierdb.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.katib.vizierdb.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
ksonnet.io/component: katib
name: metrics-collector
rules:
- apiGroups:
- ""
resources:
- pods
- pods/log
- pods/status
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
ksonnet.io/component: katib
name: studyjob-controller
rules:
- apiGroups:
- ""
resources:
- configmaps
- serviceaccounts
verbs:
- create
- update
- list
- watch
- apiGroups:
- batch
resources:
- jobs
- cronjobs
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- get
- apiGroups:
- kubeflow.org
resources:
- studyjobs
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
ksonnet.io/component: katib
name: vizier-core
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- nodes/*
- pods/log
- pods/status
- services
- persistentvolumes
- persistentvolumes/status
- persistentvolumeclaims
- persistentvolumeclaims/status
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
- jobs/status
verbs:
- '*'
- apiGroups:
- extensions
resources:
- ingresses
- ingresses/status
- deployments
- deployments/status
verbs:
- '*'
- apiGroups:
- ""
resources:
- services
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
ksonnet.io/component: katib
name: vizier-core
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: vizier-core
subjects:
- kind: ServiceAccount
name: vizier-core
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: katib
name: metrics-collector
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: katib
name: studyjob-controller
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
ksonnet.io/component: katib
name: vizier-core
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
ksonnet.io/component: katib
name: metrics-collector
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: metrics-collector
subjects:
- kind: ServiceAccount
name: metrics-collector
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
ksonnet.io/component: katib
name: studyjob-controller
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: studyjob-controller
subjects:
- kind: ServiceAccount
name: studyjob-controller
namespace: kubeflow
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: suggestion-bayesianoptimization
name: katib-suggestion-bayesianoptimization
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: suggestion-bayesianoptimization
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: suggestion-grid
name: katib-suggestion-grid
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: suggestion-grid
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: suggestion-hyperband
name: katib-suggestion-hyperband
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: suggestion-hyperband
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: suggestion-nasrl
name: katib-suggestion-nasrl
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: suggestion-nasrl
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: suggestion-random
name: katib-suggestion-random
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: katib
component: suggestion-random
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: suggestion-bayesianoptimization
name: katib-suggestion-bayesianoptimization
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: suggestion-bayesianoptimization
template:
metadata:
labels:
app: katib
component: suggestion-bayesianoptimization
name: katib-suggestion-bayesianoptimization
spec:
containers:
- image: gcr.io/kubeflow-images-public/katib/v1alpha2/suggestion-bayesianoptimization:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-suggestion-bayesianoptimization
ports:
- containerPort: 6789
name: api
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: suggestion-grid
name: katib-suggestion-grid
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: suggestion-grid
template:
metadata:
labels:
app: katib
component: suggestion-grid
name: katib-suggestion-grid
spec:
containers:
- image: gcr.io/kubeflow-images-public/katib/v1alpha2/suggestion-grid:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-suggestion-grid
ports:
- containerPort: 6789
name: api
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: suggestion-hyperband
name: katib-suggestion-hyperband
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: suggestion-hyperband
template:
metadata:
labels:
app: katib
component: suggestion-hyperband
name: katib-suggestion-hyperband
spec:
containers:
- image: gcr.io/kubeflow-images-public/katib/v1alpha2/suggestion-hyperband:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-suggestion-hyperband
ports:
- containerPort: 6789
name: api
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: suggestion-nasrl
name: katib-suggestion-nasrl
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: suggestion-nasrl
template:
metadata:
labels:
app: katib
component: suggestion-nasrl
name: katib-suggestion-nasrl
spec:
containers:
- image: gcr.io/kubeflow-images-public/katib/v1alpha2/suggestion-nasrl:v0.6.0-rc.0
name: katib-suggestion-nasrl
ports:
- containerPort: 6789
name: api
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: suggestion-random
name: katib-suggestion-random
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: suggestion-random
template:
metadata:
labels:
app: katib
component: suggestion-random
name: katib-suggestion-random
spec:
containers:
- image: gcr.io/kubeflow-images-public/katib/v1alpha2/suggestion-random:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-suggestion-random
ports:
- containerPort: 6789
name: api
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: core
ksonnet.io/component: katib
name: vizier-core
namespace: kubeflow
spec:
ports:
- name: api
{{- if .Values.katib.vizier.service.nodePort }}
nodePort: {{ .Values.katib.vizier.service.nodePort }}
{{- end }}
port: 6789
protocol: TCP
selector:
app: vizier
component: core
type: {{ .Values.katib.vizier.service.type }}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: db
ksonnet.io/component: katib
name: vizier-db
namespace: kubeflow
spec:
ports:
- name: dbapi
port: 3306
protocol: TCP
selector:
app: vizier
component: db
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: suggestion-bayesianoptimization
ksonnet.io/component: katib
name: vizier-suggestion-bayesianoptimization
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: vizier
component: suggestion-bayesianoptimization
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: suggestion-grid
ksonnet.io/component: katib
name: vizier-suggestion-grid
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: vizier
component: suggestion-grid
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: suggestion-hyperband
ksonnet.io/component: katib
name: vizier-suggestion-hyperband
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: vizier
component: suggestion-hyperband
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: vizier
component: suggestion-random
ksonnet.io/component: katib
name: vizier-suggestion-random
namespace: kubeflow
spec:
ports:
- name: api
port: 6789
protocol: TCP
selector:
app: vizier
component: suggestion-random
type: ClusterIP
apiVersion: v1
kind: ServiceAccount
metadata:
name: katib-ui
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: katib-ui
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- '*'
- apiGroups:
- kubeflow.org
resources:
- experiments
- trials
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: katib-ui
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: katib-ui
subjects:
- kind: ServiceAccount
name: katib-ui
namespace: kubeflow
---
apiVersion: v1
data:
clusterDomain: {{ .Values.clusterDomain | quote }}
kind: ConfigMap
metadata:
name: katib-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
labels:
app: katib
component: ui
name: katib-ui
namespace: kubeflow
spec:
ports:
- name: ui
port: 80
protocol: TCP
selector:
app: katib
component: ui
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
component: ui
name: katib-ui
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
component: ui
template:
metadata:
labels:
app: katib
component: ui
name: katib-ui
spec:
containers:
- command:
- ./katib-ui
image: gcr.io/kubeflow-images-public/katib/v1alpha2/katib-ui:v0.6.0-rc.0
imagePullPolicy: IfNotPresent
name: katib-ui
ports:
- containerPort: 80
name: ui
serviceAccountName: katib-ui
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: katib-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /katib/
rewrite:
uri: /katib/
route:
- destination:
host: katib-ui.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
kustomize.component: metacontroller
name: compositecontrollers.metacontroller.k8s.io
spec:
group: metacontroller.k8s.io
names:
kind: CompositeController
plural: compositecontrollers
shortNames:
- cc
- cctl
singular: compositecontroller
scope: Cluster
version: v1alpha1
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
kustomize.component: metacontroller
name: controllerrevisions.metacontroller.k8s.io
spec:
group: metacontroller.k8s.io
names:
kind: ControllerRevision
plural: controllerrevisions
singular: controllerrevision
scope: Namespaced
version: v1alpha1
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
kustomize.component: metacontroller
name: decoratorcontrollers.metacontroller.k8s.io
spec:
group: metacontroller.k8s.io
names:
kind: DecoratorController
plural: decoratorcontrollers
shortNames:
- dec
- decorators
singular: decoratorcontroller
scope: Cluster
version: v1alpha1
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: metacontroller
name: meta-controller-service
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
kustomize.component: metacontroller
name: meta-controller-cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: meta-controller-service
namespace: kubeflow
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: metacontroller
kustomize.component: metacontroller
name: metacontroller
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: metacontroller
kustomize.component: metacontroller
serviceName: ""
template:
metadata:
labels:
app: metacontroller
kustomize.component: metacontroller
spec:
containers:
- command:
- /usr/bin/metacontroller
- --logtostderr
- -v=4
- --discovery-interval=20s
image: metacontroller/metacontroller:v0.3.0
imagePullPolicy: Always
name: metacontroller
ports:
- containerPort: 2345
resources:
limits:
cpu: "4"
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
securityContext:
allowPrivilegeEscalation: true
privileged: true
serviceAccountName: meta-controller-service
volumeClaimTemplates: []
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
kustomize.component: metadata
name: metadata-ui
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
app: metadata-ui
kustomize.component: metadata
name: metadata-ui
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- pods
- pods/log
verbs:
- create
- get
- list
- apiGroups:
- kubeflow.org
resources:
- viewers
verbs:
- create
- get
- list
- watch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
app: metadata-ui
kustomize.component: metadata
name: metadata-ui
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: metadata-ui
subjects:
- kind: ServiceAccount
name: ui
namespace: kubeflow
---
apiVersion: v1
data:
uiClusterDomain: {{ .Values.clusterDomain | quote }}
kind: ConfigMap
metadata:
labels:
kustomize.component: metadata
name: metadata-ui-parameters-b6c8ghff7c
namespace: kubeflow
---
apiVersion: v1
data:
MYSQL_ROOT_PASSWORD: {{ .Values.metadata.db.password | b64enc | quote }}
kind: Secret
metadata:
labels:
kustomize.component: metadata
name: metadata-db-secrets
namespace: kubeflow
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
component: db
kustomize.component: metadata
name: metadata-db
namespace: kubeflow
spec:
ports:
- name: dbapi
port: 3306
protocol: TCP
selector:
component: db
kustomize.component: metadata
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: metadata
kustomize.component: metadata
name: metadata-service
namespace: kubeflow
spec:
ports:
- name: backendapi
port: 8080
protocol: TCP
selector:
component: server
kustomize.component: metadata
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: metadata-ui
kustomize.component: metadata
name: metadata-ui
namespace: kubeflow
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: metadata-ui
kustomize.component: metadata
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: metadata-ui
kustomize.component: metadata
name: metadata-ui
namespace: kubeflow
spec:
selector:
matchLabels:
app: metadata-ui
kustomize.component: metadata
template:
metadata:
labels:
app: metadata-ui
kustomize.component: metadata
name: ui
spec:
containers:
- image: gcr.io/kubeflow-images-public/metadata-frontend:v0.1.8
imagePullPolicy: IfNotPresent
name: metadata-ui
ports:
- containerPort: 3000
serviceAccountName: metadata-ui
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
component: db
kustomize.component: metadata
name: metadata-db
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
kustomize.component: metadata
template:
metadata:
labels:
component: db
kustomize.component: metadata
name: db
spec:
containers:
- args:
- --datadir
- /var/lib/mysql/datadir
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: metadata-db-secrets
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
- name: MYSQL_DATABASE
value: metadb
image: mysql:8.0.3
name: db-container
ports:
- containerPort: 3306
name: dbapi
readinessProbe:
exec:
command:
- /bin/bash
- -c
- mysql -D $$MYSQL_DATABASE -p$$MYSQL_ROOT_PASSWORD -e 'SELECT 1'
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
volumeMounts:
- mountPath: /var/lib/mysql
name: metadata-db-pvc
volumes:
- name: metadata-db-pvc
{{- if .Values.metadata.db.persistence.enabled }}
persistentVolumeClaim:
claimName: metadata-db-pvc
{{- else }}
emptyDir: {}
{{ end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
component: server
kustomize.component: metadata
name: metadata-deployment
namespace: kubeflow
spec:
replicas: 3
selector:
matchLabels:
kustomize.component: metadata
template:
metadata:
labels:
component: server
kustomize.component: metadata
spec:
containers:
- command:
- ./server/server
- --http_port=8080
- --mysql_service_host=metadata-db.kubeflow
- --mysql_service_port=3306
- --mysql_service_user=root
- --mysql_service_password=$(MYSQL_ROOT_PASSWORD)
- --mlmd_db_name=metadb
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: metadata-db-secrets
image: gcr.io/kubeflow-images-public/metadata:v0.1.8
name: container
ports:
- containerPort: 8080
name: backendapi
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: metadata-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /metadata
rewrite:
uri: /metadata
route:
- destination:
host: metadata-ui.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
timeout: 300s
{{- if .Values.metadata.db.persistence.enabled }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
kustomize.component: metadata
name: metadata-db-pvc
namespace: kubeflow
spec:
accessModes:
- {{ .Values.metadata.db.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.metadata.db.persistence.size | quote }}
storageClassName: {{ .Values.metadata.db.persistence.storageClass | quote }}
{{- end -}}
\ No newline at end of file
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-collector
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: metrics-collector
rules:
- apiGroups:
- ""
resources:
- pods
- pods/log
- pods/status
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: metrics-collector
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: metrics-collector
subjects:
- kind: ServiceAccount
name: metrics-collector
namespace: kubeflow
---
apiVersion: v1
data:
defaultMetricsCollectorTemplate.yaml: |-
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{`{{.Trial}}`}}
namespace: {{`{{.NameSpace}}`}}
spec:
schedule: "*/1 * * * *"
successfulJobsHistoryLimit: 0
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 0
template:
spec:
serviceAccountName: metrics-collector
containers:
- name: {{`{{.Trial}}`}}
image: gcr.io/kubeflow-images-public/katib/v1alpha2/metrics-collector:v0.1.2-alpha-289-g14dad8b
imagePullPolicy: IfNotPresent
command: ["./metricscollector"]
args:
- "-e"
- "{{`{{.Experiment}}`}}"
- "-t"
- "{{`{{.Trial}}`}}"
- "-k"
- "{{`{{.JobKind}}`}}"
- "-n"
- "{{`{{.NameSpace}}`}}"
- "-m"
- "{{`{{.ManagerService}}`}}"
- "-mn"
- "{{`{{.MetricNames}}`}}"
restartPolicy: Never
kind: ConfigMap
metadata:
name: metrics-collector-template
namespace: kubeflow
apiVersion: v1
data:
minioPvcName: {{ .Values.minio.persistence.pvcName | quote }}
kind: ConfigMap
metadata:
labels:
app: minio
name: pipeline-minio-parameters
namespace: kubeflow
---
apiVersion: v1
data:
accessKey: {{ .Values.minio.accessKey | b64enc | quote }}
secretKey: {{ .Values.minio.secretKey | b64enc | quote }}
kind: Secret
metadata:
labels:
app: minio
name: mlpipeline-minio-artifact
namespace: kubeflow
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
app: minio
name: minio-service
namespace: kubeflow
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000
selector:
app: minio
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: minio
name: minio
namespace: kubeflow
spec:
selector:
matchLabels:
app: minio
strategy:
type: Recreate
template:
metadata:
labels:
app: minio
spec:
containers:
- args:
- server
- /data
env:
- name: MINIO_ACCESS_KEY
valueFrom:
secretKeyRef:
key: accessKey
name: mlpipeline-minio-artifact
- name: MINIO_SECRET_KEY
valueFrom:
secretKeyRef:
key: secretKey
name: mlpipeline-minio-artifact
image: minio/minio:RELEASE.2018-02-09T22-40-05Z
name: minio
ports:
- containerPort: 9000
volumeMounts:
- mountPath: /data
name: data
subPath: minio
volumes:
- name: data
{{- if .Values.minio.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.minio.persistence.pvcName }}
{{- else }}
emptyDir: {}
{{ end }}
{{- if .Values.minio.persistence.enabled }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: minio
name: {{ .Values.minio.persistence.pvcName | quote }}
namespace: kubeflow
spec:
accessModes:
- {{ .Values.minio.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.minio.persistence.size | quote }}
storageClassName: {{ .Values.minio.persistence.storageClass | quote }}
{{- end -}}
\ No newline at end of file
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: ml-pipeline-persistenceagent
name: ml-pipeline-persistenceagent
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: ml-pipeline-persistenceagent
name: ml-pipeline-persistenceagent
rules:
- apiGroups:
- argoproj.io
resources:
- workflows
verbs:
- get
- list
- watch
- apiGroups:
- kubeflow.org
resources:
- scheduledworkflows
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: ml-pipeline-persistenceagent
name: ml-pipeline-persistenceagent
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: ml-pipeline-persistenceagent
namespace: kubeflow
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ml-pipeline-persistenceagent
name: ml-pipeline-persistenceagent
namespace: kubeflow
spec:
selector:
matchLabels:
app: ml-pipeline-persistenceagent
template:
metadata:
labels:
app: ml-pipeline-persistenceagent
spec:
containers:
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/ml-pipeline/persistenceagent:0.1.23
imagePullPolicy: IfNotPresent
name: ml-pipeline-persistenceagent
serviceAccountName: ml-pipeline-persistenceagent
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app: ml-pipeline-scheduledworkflow
name: scheduledworkflows.kubeflow.org
spec:
group: kubeflow.org
names:
kind: ScheduledWorkflow
listKind: ScheduledWorkflowList
plural: scheduledworkflows
shortNames:
- swf
singular: scheduledworkflow
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: ml-pipeline-scheduledworkflow
name: ml-pipeline-scheduledworkflow
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
app: ml-pipeline-scheduledworkflow
name: ml-pipeline-scheduledworkflow
namespace: kubeflow
rules:
- apiGroups:
- argoproj.io
resources:
- workflows
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- kubeflow.org
resources:
- scheduledworkflows
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: ml-pipeline-scheduledworkflow
name: ml-pipeline-scheduledworkflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: ml-pipeline-scheduledworkflow
namespace: kubeflow
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ml-pipeline-scheduledworkflow
name: ml-pipeline-scheduledworkflow
namespace: kubeflow
spec:
selector:
matchLabels:
app: ml-pipeline-scheduledworkflow
template:
metadata:
labels:
app: ml-pipeline-scheduledworkflow
spec:
containers:
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/ml-pipeline/scheduledworkflow:0.1.23
imagePullPolicy: IfNotPresent
name: ml-pipeline-scheduledworkflow
serviceAccountName: ml-pipeline-scheduledworkflow
apiVersion: v1
kind: ServiceAccount
metadata:
name: ml-pipeline-ui
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
app: ml-pipeline-ui
name: ml-pipeline-ui
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- pods
- pods/log
verbs:
- create
- get
- list
- apiGroups:
- kubeflow.org
resources:
- viewers
verbs:
- create
- get
- list
- watch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
app: ml-pipeline-ui
name: ml-pipeline-ui
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ml-pipeline-ui
subjects:
- kind: ServiceAccount
name: ml-pipeline-ui
namespace: kubeflow
---
apiVersion: v1
data:
uiClusterDomain: cluster.local
kind: ConfigMap
metadata:
name: ui-parameters-hb792fcf5d
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: pipeline-tensorboard-ui-mapping
prefix: /data
rewrite: /data
timeout_ms: 300000
service: ml-pipeline-ui.kubeflow
use_websocket: true
labels:
app: ml-pipeline-tensorboard-ui
name: ml-pipeline-tensorboard-ui
namespace: kubeflow
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: ml-pipeline-tensorboard-ui
---
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: pipelineui-mapping
prefix: /pipeline
rewrite: /pipeline
timeout_ms: 300000
service: ml-pipeline-ui.kubeflow
use_websocket: true
labels:
app: ml-pipeline-ui
name: ml-pipeline-ui
namespace: kubeflow
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: ml-pipeline-ui
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ml-pipeline-ui
name: ml-pipeline-ui
namespace: kubeflow
spec:
selector:
matchLabels:
app: ml-pipeline-ui
template:
metadata:
labels:
app: ml-pipeline-ui
spec:
containers:
- image: gcr.io/ml-pipeline/frontend:0.1.23
imagePullPolicy: IfNotPresent
name: ml-pipeline-ui
ports:
- containerPort: 3000
serviceAccountName: ml-pipeline-ui
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ml-pipeline-tensorboard-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /data
rewrite:
uri: /data
route:
- destination:
host: ml-pipeline-tensorboard-ui.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
timeout: 300s
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ml-pipeline-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /pipeline
rewrite:
uri: /pipeline
route:
- destination:
host: ml-pipeline-ui.kubeflow.svc.{{ .Values.clusterDomain }}
port:
number: 80
timeout: 300s
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app: ml-pipeline-viewer-crd
name: viewers.kubeflow.org
spec:
group: kubeflow.org
names:
kind: Viewer
listKind: ViewerList
plural: viewers
shortNames:
- vi
singular: viewer
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: ml-pipeline-viewer-crd
name: ml-pipeline-viewer-crd-service-account
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: ml-pipeline-viewer-crd
name: ml-pipeline-viewer-controller-role
rules:
- apiGroups:
- '*'
resources:
- deployments
- services
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- kubeflow.org
resources:
- viewers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: ml-pipeline-viewer-crd
name: ml-pipeline-viewer-crd-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ml-pipeline-viewer-controller-role
subjects:
- kind: ServiceAccount
name: ml-pipeline-viewer-crd-service-account
namespace: kubeflow
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ml-pipeline-viewer-crd
name: ml-pipeline-viewer-controller-deployment
namespace: kubeflow
spec:
selector:
matchLabels:
app: ml-pipeline-viewer-crd
template:
metadata:
labels:
app: ml-pipeline-viewer-crd
spec:
containers:
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/ml-pipeline/viewer-crd-controller:0.1.23
imagePullPolicy: Always
name: ml-pipeline-viewer-controller
serviceAccountName: ml-pipeline-viewer-crd-service-account
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: ml-pipeline
name: ml-pipeline
namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
labels:
app: ml-pipeline
name: ml-pipeline
namespace: kubeflow
rules:
- apiGroups:
- argoproj.io
resources:
- workflows
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- kubeflow.org
resources:
- scheduledworkflows
verbs:
- create
- get
- list
- update
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
labels:
app: ml-pipeline
name: ml-pipeline
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ml-pipeline
subjects:
- kind: ServiceAccount
name: ml-pipeline
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
labels:
app: ml-pipeline
name: ml-pipeline
namespace: kubeflow
spec:
ports:
- name: http
port: 8888
protocol: TCP
targetPort: 8888
- name: grpc
port: 8887
protocol: TCP
targetPort: 8887
selector:
app: ml-pipeline
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ml-pipeline
name: ml-pipeline
namespace: kubeflow
spec:
selector:
matchLabels:
app: ml-pipeline
template:
metadata:
labels:
app: ml-pipeline
spec:
containers:
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/ml-pipeline/api-server:0.1.23
imagePullPolicy: IfNotPresent
name: ml-pipeline-api-server
ports:
- containerPort: 8888
- containerPort: 8887
serviceAccountName: ml-pipeline
{{- if .Values.mxnetOperator.enabled }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
ksonnet.io/component: mxnet-operator
annotations:
"helm.sh/hook": crd-install
"helm.sh/hook-delete-policy": before-hook-creation
name: mxjobs.kubeflow.org
spec:
group: kubeflow.org
names:
kind: MXJob
plural: mxjobs
singular: mxjob
version: v1alpha1
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: mxnet-operator
ksonnet.io/component: mxnet-operator
name: mxnet-operator
rules:
- apiGroups:
- kubeflow.org
resources: - mxjobs
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- '*'
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- pods
- services
- endpoints
- persistentvolumeclaims
- events
verbs:
- '*'
- apiGroups:
- apps
- extensions
resources:
- deployments
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: mxnet-operator
ksonnet.io/component: mxnet-operator
name: mxnet-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: mxnet-operator
subjects:
- kind: ServiceAccount
name: mxnet-operator
namespace: kubeflow
---
apiVersion: v1
data:
controller_config_file.yaml: |-
{
}
kind: ConfigMap
metadata:
labels:
ksonnet.io/component: mxnet-operator
name: mxnet-operator-config
namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: mxnet-operator
ksonnet.io/component: mxnet-operator
name: mxnet-operator
namespace: kubeflow
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
ksonnet.io/component: mxnet-operator
name: mxnet-operator
namespace: kubeflow
spec:
replicas: 1
template:
metadata:
labels:
name: mxnet-operator
spec:
containers:
- command:
- /opt/mlkube/mxnet-operator
- --alsologtostderr
- -v=1
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: "{{ .Values.mxnetOperator.image.repository }}:{{ .Values.mxnetOperator.image.tag }}"
imagePullPolicy: Always
name: mxnet-operator
volumeMounts:
- mountPath: /etc/config
name: config-volume
serviceAccountName: mxnet-operator
volumes:
- configMap:
name: mxnet-operator-config
name: config-volume
{{- end }}
apiVersion: v1
data:
mysqlPvcName: {{ .Values.mysql.persistence.pvcName | quote }}
kind: ConfigMap
metadata:
labels:
app: mysql
name: pipeline-mysql-parameters
namespace: kubeflow
---
apiVersion: v1
kind: Service
metadata:
labels:
app: mysql
name: mysql
namespace: kubeflow
spec:
ports:
- port: 3306
selector:
app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
namespace: kubeflow
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- env:
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
image: mysql:5.6
name: mysql
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-persistent-storage
volumes:
- name: mysql-persistent-storage
{{- if .Values.mysql.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.mysql.persistence.pvcName | quote }}
{{- else }}
emptyDir: {}
{{ end }}
{{- if .Values.mysql.persistence.enabled }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: mysql
name: {{ .Values.mysql.persistence.pvcName | quote }}
namespace: kubeflow
spec:
accessModes:
- {{ .Values.mysql.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.mysql.persistence.size | quote }}
storageClassName: {{ .Values.mysql.persistence.storageClass | quote }}
{{- end -}}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment