diff --git a/manifests/v1beta1/components/katib-controller/kustomization.yaml b/manifests/v1beta1/components/katib-controller/kustomization.yaml new file mode 100644 index 00000000000..81776ca7d50 --- /dev/null +++ b/manifests/v1beta1/components/katib-controller/kustomization.yaml @@ -0,0 +1,27 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../katib-controller/base/katib-configmap.yaml + - ../../katib-controller/base/katib-controller-deployment.yaml + - ../../katib-controller/base/katib-controller-rbac.yaml + - ../../katib-controller/base/katib-controller-secret.yaml + - ../../katib-controller/base/katib-controller-service.yaml + - ../../katib-controller/base/katib-ui-deployment.yaml + - ../../katib-controller/base/katib-ui-rbac.yaml + - ../../katib-controller/base/katib-ui-service.yaml + - ../../katib-controller/base/trial-template-configmap.yaml + - ../../katib-controller/overlays/application/application.yaml + - ../../katib-controller/overlays/istio/katib-ui-virtual-service.yaml +images: + - name: docker.io/kubeflowkatib/katib-controller + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-controller + - name: docker.io/kubeflowkatib/katib-ui + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-ui +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-controller +configurations: + - ../../katib-controller/overlays/istio/params.yaml diff --git a/manifests/v1beta1/components/katib-crds/kustomization.yaml b/manifests/v1beta1/components/katib-crds/kustomization.yaml new file mode 100644 index 00000000000..574dc5fd90e --- /dev/null +++ b/manifests/v1beta1/components/katib-crds/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../katib-crds/base/experiment-crd.yaml + - ../../katib-crds/base/suggestion-crd.yaml + - ../../katib-crds/base/trial-crd.yaml + - ../../katib-crds/overlays/application/application.yaml +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-crds diff --git a/manifests/v1beta1/components/katib-db-manager/kustomization.yaml b/manifests/v1beta1/components/katib-db-manager/kustomization.yaml new file mode 100644 index 00000000000..401120f1eab --- /dev/null +++ b/manifests/v1beta1/components/katib-db-manager/kustomization.yaml @@ -0,0 +1,13 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../katib-controller/base/katib-db-manager-deployment.yaml + - ../../katib-controller/base/katib-db-manager-service.yaml +images: + - name: docker.io/kubeflowkatib/katib-db-manager + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-db-manager +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-controller diff --git a/manifests/v1beta1/components/katib-db-mysql/kustomization.yaml b/manifests/v1beta1/components/katib-db-mysql/kustomization.yaml new file mode 100644 index 00000000000..a5506a6a9ef --- /dev/null +++ b/manifests/v1beta1/components/katib-db-mysql/kustomization.yaml @@ -0,0 +1,15 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../katib-controller/base/katib-mysql-deployment.yaml + - ../../katib-controller/base/katib-mysql-pvc.yaml + - ../../katib-controller/base/katib-mysql-secret.yaml + - ../../katib-controller/base/katib-mysql-service.yaml +images: + - name: mysql + newTag: "8" + newName: mysql +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-controller diff --git a/manifests/v1beta1/installs/katib-external-db/katib-db-manager-deployment.yaml b/manifests/v1beta1/installs/katib-external-db/katib-db-manager-deployment.yaml new file mode 100644 index 00000000000..c46c28274bd --- /dev/null +++ b/manifests/v1beta1/installs/katib-external-db/katib-db-manager-deployment.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-db-manager +spec: + template: + spec: + containers: + - name: katib-db-manager + env: + - name: DB_NAME + value: mysql + - name: DB_USER + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: DB_USER + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: DB_PASSWORD + - name: KATIB_MYSQL_DB_DATABASE + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: KATIB_MYSQL_DB_DATABASE + - name: KATIB_MYSQL_DB_HOST + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: KATIB_MYSQL_DB_HOST + - name: KATIB_MYSQL_DB_PORT + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: KATIB_MYSQL_DB_PORT diff --git a/manifests/v1beta1/installs/katib-external-db/kustomization.yaml b/manifests/v1beta1/installs/katib-external-db/kustomization.yaml new file mode 100644 index 00000000000..4a513a0e7c4 --- /dev/null +++ b/manifests/v1beta1/installs/katib-external-db/kustomization.yaml @@ -0,0 +1,16 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../components/katib-crds + - ../../components/katib-controller + - ../../components/katib-db-manager +patchesStrategicMerge: + - katib-db-manager-deployment.yaml +secretGenerator: + - name: katib-mysql-secrets + envs: + - secrets.env +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-controller diff --git a/manifests/v1beta1/installs/katib-external-db/secrets.env b/manifests/v1beta1/installs/katib-external-db/secrets.env new file mode 100644 index 00000000000..d9b31a9d22e --- /dev/null +++ b/manifests/v1beta1/installs/katib-external-db/secrets.env @@ -0,0 +1,5 @@ +KATIB_MYSQL_DB_DATABASE= +KATIB_MYSQL_DB_HOST= +KATIB_MYSQL_DB_PORT= +DB_USER= +DB_PASSWORD= diff --git a/manifests/v1beta1/installs/katib-standalone-ibm/kustomization.yaml b/manifests/v1beta1/installs/katib-standalone-ibm/kustomization.yaml new file mode 100644 index 00000000000..85108e5d02d --- /dev/null +++ b/manifests/v1beta1/installs/katib-standalone-ibm/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: + - ../katib-standalone +patchesStrategicMerge: + - ../../katib-controller/overlays/ibm-storage-config/katib-mysql-deployment.yaml +images: + - name: mysql + newTag: "5.6" + newName: mysql diff --git a/manifests/v1beta1/installs/katib-standalone/kustomization.yaml b/manifests/v1beta1/installs/katib-standalone/kustomization.yaml new file mode 100644 index 00000000000..4e6a652e8e7 --- /dev/null +++ b/manifests/v1beta1/installs/katib-standalone/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + - ../../components/katib-crds + - ../../components/katib-controller + - ../../components/katib-db-manager + - ../../components/katib-db-mysql diff --git a/manifests/v1beta1/katib-controller/base/katib-configmap.yaml b/manifests/v1beta1/katib-controller/base/katib-configmap.yaml new file mode 100644 index 00000000000..1eb32495ef1 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-configmap.yaml @@ -0,0 +1,62 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: katib-config +data: + metrics-collector-sidecar: |- + { + "StdOut": { + "image": "docker.io/kubeflowkatib/file-metrics-collector:v1beta1-a96ff59" + }, + "File": { + "image": "docker.io/kubeflowkatib/file-metrics-collector:v1beta1-a96ff59" + }, + "TensorFlowEvent": { + "image": "docker.io/kubeflowkatib/tfevent-metrics-collector:v1beta1-a96ff59", + "resources": { + "limits": { + "memory": "1Gi" + } + } + } + } + suggestion: |- + { + "random": { + "image": "docker.io/kubeflowkatib/suggestion-hyperopt:v1beta1-a96ff59" + }, + "grid": { + "image": "docker.io/kubeflowkatib/suggestion-chocolate:v1beta1-a96ff59" + }, + "hyperband": { + "image": "docker.io/kubeflowkatib/suggestion-hyperband:v1beta1-a96ff59" + }, + "bayesianoptimization": { + "image": "docker.io/kubeflowkatib/suggestion-skopt:v1beta1-a96ff59" + }, + "tpe": { + "image": "docker.io/kubeflowkatib/suggestion-hyperopt:v1beta1-a96ff59" + }, + "enas": { + "image": "docker.io/kubeflowkatib/suggestion-enas:v1beta1-a96ff59", + "imagePullPolicy": "Always", + "resources": { + "limits": { + "memory": "200Mi" + } + } + }, + "cmaes": { + "image": "docker.io/kubeflowkatib/suggestion-goptuna:v1beta1-a96ff59" + }, + "darts": { + "image": "docker.io/kubeflowkatib/suggestion-darts:v1beta1-a96ff59" + } + } + early-stopping: |- + { + "medianstop": { + "image": "docker.io/kubeflowkatib/earlystopping-medianstop:v1beta1-a96ff59", + "imagePullPolicy": "Always" + } + } diff --git a/manifests/v1beta1/katib-controller/base/katib-controller-deployment.yaml b/manifests/v1beta1/katib-controller/base/katib-controller-deployment.yaml new file mode 100644 index 00000000000..43a5c67eee3 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-controller-deployment.yaml @@ -0,0 +1,53 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-controller + labels: + app: katib-controller +spec: + replicas: 1 + selector: + matchLabels: + app: katib-controller + template: + metadata: + labels: + app: katib-controller + annotations: + sidecar.istio.io/inject: "false" + prometheus.io/scrape: "true" + spec: + serviceAccountName: katib-controller + containers: + - name: katib-controller + image: docker.io/kubeflowkatib/katib-controller + imagePullPolicy: IfNotPresent + command: ["./katib-controller"] + args: + - "--webhook-port=8443" + - "--trial-resources=Job.v1.batch" + - "--trial-resources=TFJob.v1.kubeflow.org" + - "--trial-resources=PyTorchJob.v1.kubeflow.org" + - "--trial-resources=MPIJob.v1.kubeflow.org" + - "--trial-resources=PipelineRun.v1beta1.tekton.dev" + ports: + - containerPort: 8443 + name: webhook + protocol: TCP + - containerPort: 8080 + name: metrics + protocol: TCP + env: + - name: KATIB_CORE_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - mountPath: /tmp/cert + name: cert + readOnly: true + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: katib-controller diff --git a/manifests/v1beta1/katib-controller/base/katib-controller-rbac.yaml b/manifests/v1beta1/katib-controller/base/katib-controller-rbac.yaml new file mode 100644 index 00000000000..49f87067034 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-controller-rbac.yaml @@ -0,0 +1,163 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: katib-controller +rules: + - apiGroups: + - "" + resources: + - configmaps + - serviceaccounts + - services + - secrets + - events + - namespaces + - persistentvolumes + - persistentvolumeclaims + verbs: + - "*" + - apiGroups: + - "" + resources: + - pods + - pods/log + - pods/status + verbs: + - "*" + - apiGroups: + - apps + resources: + - deployments + 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 + - experiments/finalizers + - trials + - trials/status + - trials/finalizers + - suggestions + - suggestions/status + - suggestions/finalizers + verbs: + - "*" + - apiGroups: + - kubeflow.org + resources: + - tfjobs + - pytorchjobs + - mpijobs + verbs: + - "*" + - apiGroups: + - tekton.dev + resources: + - pipelineruns + - taskruns + verbs: + - "*" + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + verbs: + - "*" +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: katib-controller +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: katib-controller +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: katib-controller +subjects: + - kind: ServiceAccount + name: katib-controller + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kubeflow-katib-admin + labels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-katib-admin: "true" +rules: [] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kubeflow-katib-edit + labels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-katib-admin: "true" +rules: + - apiGroups: + - kubeflow.org + resources: + - experiments + - trials + - suggestions + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kubeflow-katib-view + labels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" +rules: + - apiGroups: + - kubeflow.org + resources: + - experiments + - trials + - suggestions + verbs: + - get + - list + - watch diff --git a/manifests/v1beta1/katib-controller/base/katib-controller-secret.yaml b/manifests/v1beta1/katib-controller/base/katib-controller-secret.yaml new file mode 100644 index 00000000000..8341a6a15a3 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-controller-secret.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Secret +metadata: + name: katib-controller diff --git a/manifests/v1beta1/katib-controller/base/katib-controller-service.yaml b/manifests/v1beta1/katib-controller/base/katib-controller-service.yaml new file mode 100644 index 00000000000..516d536e54e --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-controller-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: katib-controller + annotations: + prometheus.io/port: "8080" + prometheus.io/scheme: http + prometheus.io/scrape: "true" +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 8443 + name: webhook + - name: metrics + port: 8080 + targetPort: 8080 + selector: + app: katib-controller diff --git a/manifests/v1beta1/katib-controller/base/katib-db-manager-deployment.yaml b/manifests/v1beta1/katib-controller/base/katib-db-manager-deployment.yaml new file mode 100644 index 00000000000..3f6b871d6c9 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-db-manager-deployment.yaml @@ -0,0 +1,49 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-db-manager + labels: + app: katib + component: db-manager +spec: + replicas: 1 + selector: + matchLabels: + app: katib + component: db-manager + template: + metadata: + name: katib-db-manager + labels: + app: katib + component: db-manager + annotations: + sidecar.istio.io/inject: "false" + spec: + containers: + - name: katib-db-manager + image: docker.io/kubeflowkatib/katib-db-manager + imagePullPolicy: IfNotPresent + env: + - name: DB_NAME + value: "mysql" + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: MYSQL_ROOT_PASSWORD + command: + - "./katib-db-manager" + ports: + - name: api + containerPort: 6789 + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:6789"] + initialDelaySeconds: 5 + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:6789"] + initialDelaySeconds: 10 + periodSeconds: 60 + failureThreshold: 5 diff --git a/manifests/v1beta1/katib-controller/base/katib-db-manager-service.yaml b/manifests/v1beta1/katib-controller/base/katib-db-manager-service.yaml new file mode 100644 index 00000000000..589df9c12b3 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-db-manager-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: katib-db-manager + labels: + app: katib + component: db-manager +spec: + type: ClusterIP + ports: + - port: 6789 + protocol: TCP + name: api + selector: + app: katib + component: db-manager diff --git a/manifests/v1beta1/katib-controller/base/katib-mysql-deployment.yaml b/manifests/v1beta1/katib-controller/base/katib-mysql-deployment.yaml new file mode 100644 index 00000000000..44417ee12c1 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-mysql-deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-mysql + labels: + app: katib + component: mysql +spec: + replicas: 1 + selector: + matchLabels: + app: katib + component: mysql + strategy: + type: Recreate + template: + metadata: + name: katib-mysql + labels: + app: katib + component: mysql + annotations: + sidecar.istio.io/inject: "false" + spec: + containers: + - name: katib-mysql + image: mysql:8 + args: + - --datadir + - /var/lib/mysql/datadir + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: katib-mysql-secrets + key: MYSQL_ROOT_PASSWORD + - name: MYSQL_ALLOW_EMPTY_PASSWORD + value: "true" + - name: MYSQL_DATABASE + value: "katib" + ports: + - name: dbapi + containerPort: 3306 + readinessProbe: + exec: + command: + - "/bin/bash" + - "-c" + - "mysql -D ${MYSQL_DATABASE} -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT 1'" + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 1 + livenessProbe: + exec: + command: + - "/bin/bash" + - "-c" + - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}" + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + volumeMounts: + - name: katib-mysql + mountPath: /var/lib/mysql + volumes: + - name: katib-mysql + persistentVolumeClaim: + claimName: katib-mysql diff --git a/manifests/v1beta1/katib-controller/base/katib-mysql-pvc.yaml b/manifests/v1beta1/katib-controller/base/katib-mysql-pvc.yaml new file mode 100644 index 00000000000..d8f8a82463a --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-mysql-pvc.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: katib-mysql +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/manifests/v1beta1/katib-controller/base/katib-mysql-secret.yaml b/manifests/v1beta1/katib-controller/base/katib-mysql-secret.yaml new file mode 100644 index 00000000000..74ac8bf96e2 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-mysql-secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: katib-mysql-secrets +data: + MYSQL_ROOT_PASSWORD: dGVzdA== # "test" diff --git a/manifests/v1beta1/katib-controller/base/katib-mysql-service.yaml b/manifests/v1beta1/katib-controller/base/katib-mysql-service.yaml new file mode 100644 index 00000000000..5378f21a3d0 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-mysql-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: katib-mysql + labels: + app: katib + component: mysql +spec: + type: ClusterIP + ports: + - port: 3306 + protocol: TCP + name: dbapi + selector: + app: katib + component: mysql diff --git a/manifests/v1beta1/katib-controller/base/katib-ui-deployment.yaml b/manifests/v1beta1/katib-controller/base/katib-ui-deployment.yaml new file mode 100644 index 00000000000..7a999a2deda --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-ui-deployment.yaml @@ -0,0 +1,39 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-ui + labels: + app: katib + component: ui +spec: + replicas: 1 + selector: + matchLabels: + app: katib + component: ui + template: + metadata: + name: katib-ui + labels: + app: katib + component: ui + annotations: + sidecar.istio.io/inject: "false" + spec: + containers: + - name: katib-ui + image: docker.io/kubeflowkatib/katib-ui + imagePullPolicy: IfNotPresent + command: + - "./katib-ui" + args: + - "--port=8080" + env: + - name: KATIB_CORE_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + ports: + - name: ui + containerPort: 8080 + serviceAccountName: katib-ui diff --git a/manifests/v1beta1/katib-controller/base/katib-ui-rbac.yaml b/manifests/v1beta1/katib-controller/base/katib-ui-rbac.yaml new file mode 100644 index 00000000000..da76eb1b634 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-ui-rbac.yaml @@ -0,0 +1,37 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: katib-ui +rules: + - apiGroups: + - "" + resources: + - configmaps + - namespaces + verbs: + - "*" + - apiGroups: + - kubeflow.org + resources: + - experiments + - trials + - suggestions + verbs: + - "*" +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: katib-ui +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: katib-ui +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: katib-ui +subjects: + - kind: ServiceAccount + name: katib-ui diff --git a/manifests/v1beta1/katib-controller/base/katib-ui-service.yaml b/manifests/v1beta1/katib-controller/base/katib-ui-service.yaml new file mode 100644 index 00000000000..8266a6faf68 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/katib-ui-service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: katib-ui + labels: + app: katib + component: ui +spec: + type: ClusterIP + ports: + - port: 80 + protocol: TCP + name: ui + targetPort: 8080 + selector: + app: katib + component: ui diff --git a/manifests/v1beta1/katib-controller/base/kustomization.yaml b/manifests/v1beta1/katib-controller/base/kustomization.yaml new file mode 100644 index 00000000000..5b12df2fc08 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/kustomization.yaml @@ -0,0 +1,53 @@ +namespace: kubeflow +resources: + - katib-configmap.yaml + - katib-controller-deployment.yaml + - katib-controller-rbac.yaml + - katib-controller-secret.yaml + - katib-controller-service.yaml + - katib-mysql-deployment.yaml + - katib-mysql-pvc.yaml + - katib-mysql-secret.yaml + - katib-mysql-service.yaml + - katib-db-manager-deployment.yaml + - katib-db-manager-service.yaml + - katib-ui-deployment.yaml + - katib-ui-rbac.yaml + - katib-ui-service.yaml + - trial-template-configmap.yaml +configMapGenerator: + - name: katib-parameters + envs: + - params.env +generatorOptions: + disableNameSuffixHash: true +images: + - name: docker.io/kubeflowkatib/katib-controller + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-controller + - name: docker.io/kubeflowkatib/katib-db-manager + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-db-manager + - name: docker.io/kubeflowkatib/katib-ui + newTag: v1beta1-a96ff59 + newName: docker.io/kubeflowkatib/katib-ui + - name: mysql + newTag: "8" + newName: mysql +vars: + - name: clusterDomain + objref: + kind: ConfigMap + name: katib-parameters + apiVersion: v1 + fieldref: + fieldpath: data.clusterDomain + - name: katib-ui-namespace + objref: + kind: Service + name: katib-ui + apiVersion: v1 + fieldref: + fieldpath: metadata.namespace +configurations: + - params.yaml diff --git a/manifests/v1beta1/katib-controller/base/params.env b/manifests/v1beta1/katib-controller/base/params.env new file mode 100644 index 00000000000..bdd6604e950 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/params.env @@ -0,0 +1 @@ +clusterDomain=cluster.local diff --git a/manifests/v1beta1/katib-controller/base/params.yaml b/manifests/v1beta1/katib-controller/base/params.yaml new file mode 100644 index 00000000000..3d076361693 --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/params.yaml @@ -0,0 +1,7 @@ +varReference: + - path: data/config + kind: ConfigMap + - path: data/config + kind: Deployment + - path: metadata/annotations/getambassador.io\/config + kind: Service diff --git a/manifests/v1beta1/katib-controller/base/trial-template-configmap.yaml b/manifests/v1beta1/katib-controller/base/trial-template-configmap.yaml new file mode 100644 index 00000000000..64a1ea0036d --- /dev/null +++ b/manifests/v1beta1/katib-controller/base/trial-template-configmap.yaml @@ -0,0 +1,75 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: trial-template + labels: + app: katib-trial-templates +data: + defaultTrialTemplate.yaml: |- + apiVersion: batch/v1 + kind: Job + spec: + template: + spec: + containers: + - name: training-container + image: docker.io/kubeflowkatib/mxnet-mnist:v1beta1-a96ff59 + command: + - "python3" + - "/opt/mxnet-mnist/mnist.py" + - "--batch-size=64" + - "--lr=${trialParameters.learningRate}" + - "--num-layers=${trialParameters.numberLayers}" + - "--optimizer=${trialParameters.optimizer}" + restartPolicy: Never + # For ConfigMap templates double quotes must set in commands to correct parse JSON parameters in Trial Template (e.g nn_config, architecture) + enasCPUTemplate: |- + apiVersion: batch/v1 + kind: Job + spec: + template: + spec: + containers: + - name: training-container + image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v1beta1-a96ff59 + command: + - python3 + - -u + - RunTrial.py + - --num_epochs=1 + - "--architecture=\"${trialParameters.neuralNetworkArchitecture}\"" + - "--nn_config=\"${trialParameters.neuralNetworkConfig}\"" + restartPolicy: Never + pytorchJobTemplate: |- + apiVersion: "kubeflow.org/v1" + kind: PyTorchJob + spec: + pytorchReplicaSpecs: + Master: + replicas: 1 + restartPolicy: OnFailure + template: + spec: + containers: + - name: pytorch + image: gcr.io/kubeflow-ci/pytorch-dist-mnist-test:v1.0 + imagePullPolicy: Always + command: + - "python" + - "/var/mnist.py" + - "--lr=${trialParameters.learningRate}" + - "--momentum=${trialParameters.momentum}" + Worker: + replicas: 2 + restartPolicy: OnFailure + template: + spec: + containers: + - name: pytorch + image: gcr.io/kubeflow-ci/pytorch-dist-mnist-test:v1.0 + imagePullPolicy: Always + command: + - "python" + - "/var/mnist.py" + - "--lr=${trialParameters.learningRate}" + - "--momentum=${trialParameters.momentum}" diff --git a/manifests/v1beta1/katib-controller/overlays/application/application.yaml b/manifests/v1beta1/katib-controller/overlays/application/application.yaml new file mode 100644 index 00000000000..2503b95d566 --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/application/application.yaml @@ -0,0 +1,65 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: katib-controller +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: Secret + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: Experiment + - group: kubeflow.org + kind: Suggestion + - group: kubeflow.org + kind: Trial + descriptor: + description: Katib is a service for hyperparameter tuning and neural architecture search. + keywords: + - katib + - katib-controller + - hyperparameter tuning + links: + - description: About + url: https://github.com/kubeflow/katib + maintainers: + - email: gaoce@caicloud.io + name: Ce Gao + - email: johnugeo@cisco.com + name: Johnu George + - email: liuhougang6@126.com + name: Hougang Liu + - email: ricliu@google.com + name: Richard Liu + - email: yuji.oshima0x3fd@gmail.com + name: YujiOshima + - email: andrey.velichkevich@gmail.com + name: Andrey Velichkevich + owners: + - email: gaoce@caicloud.io + name: Ce Gao + - email: johnugeo@cisco.com + name: Johnu George + - email: liuhougang6@126.com + name: Hougang Liu + - email: ricliu@google.com + name: Richard Liu + - email: yuji.oshima0x3fd@gmail.com + name: YujiOshima + - email: andrey.velichkevich@gmail.com + name: Andrey Velichkevich + type: katib + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/instance: katib-controller + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: katib-controller + app.kubernetes.io/part-of: kubeflow diff --git a/manifests/v1beta1/katib-controller/overlays/application/kustomization.yaml b/manifests/v1beta1/katib-controller/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..7bee99725e6 --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/application/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +bases: + - ../../base +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-controller +kind: Kustomization +resources: + - application.yaml diff --git a/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/katib-mysql-deployment.yaml b/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/katib-mysql-deployment.yaml new file mode 100644 index 00000000000..35039fc64fa --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/katib-mysql-deployment.yaml @@ -0,0 +1,11 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: katib-mysql +spec: + template: + spec: + containers: + - name: katib-mysql + # Base's livenessProbe created some kernel errors on non-POSIX filesystem + livenessProbe: null diff --git a/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/kustomization.yaml b/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/kustomization.yaml new file mode 100644 index 00000000000..9dcdf768b5b --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/ibm-storage-config/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: + - ../../base +patchesStrategicMerge: + - katib-mysql-deployment.yaml +images: + - name: mysql + newTag: "5.6" + newName: mysql diff --git a/manifests/v1beta1/katib-controller/overlays/istio/katib-ui-virtual-service.yaml b/manifests/v1beta1/katib-controller/overlays/istio/katib-ui-virtual-service.yaml new file mode 100644 index 00000000000..fe407903f70 --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/istio/katib-ui-virtual-service.yaml @@ -0,0 +1,20 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: katib-ui +spec: + gateways: + - kubeflow-gateway + hosts: + - "*" + http: + - match: + - uri: + prefix: /katib/ + rewrite: + uri: /katib/ + route: + - destination: + host: katib-ui.$(katib-ui-namespace).svc.$(clusterDomain) + port: + number: 80 diff --git a/manifests/v1beta1/katib-controller/overlays/istio/kustomization.yaml b/manifests/v1beta1/katib-controller/overlays/istio/kustomization.yaml new file mode 100644 index 00000000000..4cf4c0de08d --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/istio/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: + - ../../base +resources: + - katib-ui-virtual-service.yaml +configurations: + - params.yaml diff --git a/manifests/v1beta1/katib-controller/overlays/istio/params.yaml b/manifests/v1beta1/katib-controller/overlays/istio/params.yaml new file mode 100644 index 00000000000..fbb43487609 --- /dev/null +++ b/manifests/v1beta1/katib-controller/overlays/istio/params.yaml @@ -0,0 +1,3 @@ +varReference: + - path: spec/http/route/destination/host + kind: VirtualService diff --git a/manifests/v1beta1/katib-crds/base/experiment-crd.yaml b/manifests/v1beta1/katib-crds/base/experiment-crd.yaml new file mode 100644 index 00000000000..5a7b06febd0 --- /dev/null +++ b/manifests/v1beta1/katib-crds/base/experiment-crd.yaml @@ -0,0 +1,28 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: experiments.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: Type + type: string + - JSONPath: .status.conditions[-1:].status + name: Status + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + version: v1beta1 + scope: Namespaced + subresources: + status: {} + names: + kind: Experiment + singular: experiment + plural: experiments + categories: + - all + - kubeflow + - katib diff --git a/manifests/v1beta1/katib-crds/base/kustomization.yaml b/manifests/v1beta1/katib-crds/base/kustomization.yaml new file mode 100644 index 00000000000..869c7add028 --- /dev/null +++ b/manifests/v1beta1/katib-crds/base/kustomization.yaml @@ -0,0 +1,7 @@ +namespace: kubeflow +resources: + - experiment-crd.yaml + - suggestion-crd.yaml + - trial-crd.yaml +generatorOptions: + disableNameSuffixHash: true diff --git a/manifests/v1beta1/katib-crds/base/suggestion-crd.yaml b/manifests/v1beta1/katib-crds/base/suggestion-crd.yaml new file mode 100644 index 00000000000..8de13785c00 --- /dev/null +++ b/manifests/v1beta1/katib-crds/base/suggestion-crd.yaml @@ -0,0 +1,34 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: suggestions.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: Type + type: string + - JSONPath: .status.conditions[-1:].status + name: Status + type: string + - JSONPath: .spec.requests + name: Requested + type: string + - JSONPath: .status.suggestionCount + name: Assigned + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + version: v1beta1 + scope: Namespaced + subresources: + status: {} + names: + kind: Suggestion + singular: suggestion + plural: suggestions + categories: + - all + - kubeflow + - katib diff --git a/manifests/v1beta1/katib-crds/base/trial-crd.yaml b/manifests/v1beta1/katib-crds/base/trial-crd.yaml new file mode 100644 index 00000000000..6b7dd5347f0 --- /dev/null +++ b/manifests/v1beta1/katib-crds/base/trial-crd.yaml @@ -0,0 +1,28 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: trials.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: Type + type: string + - JSONPath: .status.conditions[-1:].status + name: Status + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + version: v1beta1 + scope: Namespaced + subresources: + status: {} + names: + kind: Trial + singular: trial + plural: trials + categories: + - all + - kubeflow + - katib diff --git a/manifests/v1beta1/katib-crds/overlays/application/application.yaml b/manifests/v1beta1/katib-crds/overlays/application/application.yaml new file mode 100644 index 00000000000..03b2ec53efd --- /dev/null +++ b/manifests/v1beta1/katib-crds/overlays/application/application.yaml @@ -0,0 +1,63 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: katib-crds +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: Experiment + - group: kubeflow.org + kind: Suggestion + - group: kubeflow.org + kind: Trial + descriptor: + description: Katib is a service for hyperparameter tuning and neural architecture search. + keywords: + - katib + - katib-controller + - hyperparameter tuning + links: + - description: About + url: https://github.com/kubeflow/katib + maintainers: + - email: gaoce@caicloud.io + name: Ce Gao + - email: johnugeo@cisco.com + name: Johnu George + - email: liuhougang6@126.com + name: Hougang Liu + - email: ricliu@google.com + name: Richard Liu + - email: yuji.oshima0x3fd@gmail.com + name: YujiOshima + - email: andrey.velichkevich@gmail.com + name: Andrey Velichkevich + owners: + - email: gaoce@caicloud.io + name: Ce Gao + - email: johnugeo@cisco.com + name: Johnu George + - email: liuhougang6@126.com + name: Hougang Liu + - email: ricliu@google.com + name: Richard Liu + - email: yuji.oshima0x3fd@gmail.com + name: YujiOshima + - email: andrey.velichkevich@gmail.com + name: Andrey Velichkevich + type: katib + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/instance: katib-crds + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: katib-crds + app.kubernetes.io/part-of: kubeflow diff --git a/manifests/v1beta1/katib-crds/overlays/application/kustomization.yaml b/manifests/v1beta1/katib-crds/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..1eb85ff117e --- /dev/null +++ b/manifests/v1beta1/katib-crds/overlays/application/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +bases: + - ../../base +commonLabels: + app.kubernetes.io/component: katib + app.kubernetes.io/name: katib-crds +kind: Kustomization +resources: + - application.yaml