Change chart directory structure

This commit is contained in:
wbsong111
2026-01-19 11:11:33 +09:00
parent 113bcfdf5b
commit 1c0c62291f
5947 changed files with 4134 additions and 1 deletions
@@ -0,0 +1,68 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-controller
namespace: kubeflow
labels:
katib.kubeflow.org/component: controller
spec:
replicas: 1
selector:
matchLabels:
katib.kubeflow.org/component: controller
template:
metadata:
labels:
katib.kubeflow.org/component: controller
sidecar.istio.io/inject: "false"
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
spec:
serviceAccountName: katib-controller
containers:
- name: katib-controller
image: ghcr.io/kubeflow/katib/katib-controller
command: ["./katib-controller"]
args:
- --katib-config=/katib-config.yaml
ports:
- containerPort: 8443
name: webhook
protocol: TCP
- containerPort: 8080
name: metrics
protocol: TCP
- containerPort: 18080
name: healthz
protocol: TCP
readinessProbe:
httpGet:
path: /readyz
port: healthz
livenessProbe:
httpGet:
path: /healthz
port: healthz
env:
- name: KATIB_CORE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- mountPath: /tmp/cert
name: cert
readOnly: true
- mountPath: /katib-config.yaml
name: katib-config
subPath: katib-config.yaml
readOnly: true
volumes:
- name: cert
secret:
defaultMode: 420
secretName: katib-webhook-cert
- name: katib-config
configMap:
name: katib-config
@@ -0,0 +1,9 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- controller.yaml
- rbac.yaml
- service.yaml
- trial-templates.yaml
@@ -0,0 +1,149 @@
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: katib-controller
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- "get"
- "list"
- "watch"
- "create"
- "delete"
- apiGroups:
- ""
resources:
- events
verbs:
- "create"
- "patch"
- "update"
- apiGroups:
- ""
resources:
- serviceaccounts
- persistentvolumes
- persistentvolumeclaims
verbs:
- "get"
- "list"
- "watch"
- "create"
- apiGroups:
- ""
resources:
- namespaces
- configmaps
verbs:
- "get"
- "list"
- "watch"
- apiGroups:
- ""
resources:
- pods
- pods/status
verbs:
- "get"
- apiGroups:
- ""
resources:
- secrets
verbs:
- "get"
- "list"
- "watch"
- "patch"
- "update"
- apiGroups:
- apps
resources:
- deployments
verbs:
- "get"
- "list"
- "watch"
- "create"
- "delete"
- apiGroups:
- rbac.authorization.k8s.io
resources:
- roles
- rolebindings
verbs:
- "get"
- "create"
- "list"
- "watch"
- apiGroups:
- batch
resources:
- jobs
- cronjobs
verbs:
- "get"
- "list"
- "watch"
- "create"
- "delete"
- apiGroups:
- kubeflow.org
resources:
- tfjobs
- pytorchjobs
- mpijobs
- xgboostjobs
verbs:
- "get"
- "list"
- "watch"
- "create"
- "delete"
- apiGroups:
- kubeflow.org
resources:
- experiments
- experiments/status
- experiments/finalizers
- trials
- trials/status
- trials/finalizers
- suggestions
- suggestions/status
- suggestions/finalizers
verbs:
- "*"
- apiGroups:
- admissionregistration.k8s.io
resources:
- validatingwebhookconfigurations
- mutatingwebhookconfigurations
verbs:
- "get"
- "watch"
- "list"
- "patch"
- "update"
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: katib-controller
namespace: kubeflow
---
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
namespace: kubeflow
@@ -0,0 +1,26 @@
---
apiVersion: v1
kind: Service
metadata:
name: katib-controller
namespace: kubeflow
labels:
katib.kubeflow.org/component: 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
- name: healthz
port: 18080
targetPort: 18080
selector:
katib.kubeflow.org/component: controller
@@ -0,0 +1,77 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: trial-templates
namespace: kubeflow
labels:
katib.kubeflow.org/component: trial-templates
data:
defaultTrialTemplate.yaml: |-
apiVersion: batch/v1
kind: Job
spec:
template:
spec:
containers:
- name: training-container
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:v0.18.0
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"
- "--epochs=1"
- "--batch-size=16"
- "--lr=${trialParameters.learningRate}"
- "--momentum=${trialParameters.momentum}"
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: ghcr.io/kubeflow/katib/enas-cnn-cifar10-cpu:v0.18.0
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: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:v0.18.0
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"
- "--epochs=1"
- "--lr=${trialParameters.learningRate}"
- "--momentum=${trialParameters.momentum}"
Worker:
replicas: 2
restartPolicy: OnFailure
template:
spec:
containers:
- name: pytorch
image: ghcr.io/kubeflow/katib/pytorch-mnist-cpu:v0.18.0
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"
- "--epochs=1"
- "--lr=${trialParameters.learningRate}"
- "--momentum=${trialParameters.momentum}"
@@ -0,0 +1,36 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: experiments.kubeflow.org
spec:
group: kubeflow.org
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
additionalPrinterColumns:
- name: Type
type: string
jsonPath: .status.conditions[-1:].type
- name: Status
type: string
jsonPath: .status.conditions[-1:].status
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
names:
kind: Experiment
singular: experiment
plural: experiments
categories:
- all
- kubeflow
- katib
@@ -0,0 +1,8 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- experiment.yaml
- suggestion.yaml
- trial.yaml
@@ -0,0 +1,42 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: suggestions.kubeflow.org
spec:
group: kubeflow.org
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
additionalPrinterColumns:
- name: Type
type: string
jsonPath: .status.conditions[-1:].type
- name: Status
type: string
jsonPath: .status.conditions[-1:].status
- name: Requested
type: string
jsonPath: .spec.requests
- name: Assigned
type: string
jsonPath: .status.suggestionCount
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
names:
kind: Suggestion
singular: suggestion
plural: suggestions
categories:
- all
- kubeflow
- katib
@@ -0,0 +1,36 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: trials.kubeflow.org
spec:
group: kubeflow.org
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
additionalPrinterColumns:
- name: Type
type: string
jsonPath: .status.conditions[-1:].type
- name: Status
type: string
jsonPath: .status.conditions[-1:].status
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
names:
kind: Trial
singular: trial
plural: trials
categories:
- all
- kubeflow
- katib
@@ -0,0 +1,41 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-db-manager
namespace: kubeflow
labels:
katib.kubeflow.org/component: db-manager
spec:
replicas: 1
selector:
matchLabels:
katib.kubeflow.org/component: db-manager
template:
metadata:
labels:
katib.kubeflow.org/component: db-manager
sidecar.istio.io/inject: "false"
spec:
containers:
- name: katib-db-manager
image: ghcr.io/kubeflow/katib/katib-db-manager
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
livenessProbe:
grpc:
port: 6789
initialDelaySeconds: 10
periodSeconds: 60
failureThreshold: 5
@@ -0,0 +1,7 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- db-manager.yaml
- service.yaml
@@ -0,0 +1,16 @@
---
apiVersion: v1
kind: Service
metadata:
name: katib-db-manager
namespace: kubeflow
labels:
katib.kubeflow.org/component: db-manager
spec:
type: ClusterIP
ports:
- port: 6789
protocol: TCP
name: api
selector:
katib.kubeflow.org/component: db-manager
@@ -0,0 +1,9 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- mysql.yaml
- pvc.yaml
- secret.yaml
- service.yaml
@@ -0,0 +1,73 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-mysql
namespace: kubeflow
labels:
katib.kubeflow.org/component: mysql
spec:
replicas: 1
selector:
matchLabels:
katib.kubeflow.org/component: mysql
strategy:
type: Recreate
template:
metadata:
labels:
katib.kubeflow.org/component: mysql
sidecar.istio.io/inject: "false"
spec:
containers:
- name: katib-mysql
image: mysql:8.0.29
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: 10
periodSeconds: 5
failureThreshold: 10
livenessProbe:
exec:
command:
- "/bin/bash"
- "-c"
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 10
startupProbe:
exec:
command:
- "/bin/bash"
- "-c"
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
periodSeconds: 15
failureThreshold: 60
volumeMounts:
- name: katib-mysql
mountPath: /var/lib/mysql
volumes:
- name: katib-mysql
persistentVolumeClaim:
claimName: katib-mysql
@@ -0,0 +1,12 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: katib-mysql
namespace: kubeflow
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
@@ -0,0 +1,8 @@
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: katib-mysql-secrets
data:
MYSQL_ROOT_PASSWORD: dGVzdA== # "test"
@@ -0,0 +1,16 @@
---
apiVersion: v1
kind: Service
metadata:
name: katib-mysql
namespace: kubeflow
labels:
katib.kubeflow.org/component: mysql
spec:
type: ClusterIP
ports:
- port: 3306
protocol: TCP
name: dbapi
selector:
katib.kubeflow.org/component: mysql
@@ -0,0 +1,7 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- namespace.yaml
@@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: kubeflow
labels:
katib.kubeflow.org/metrics-collector-injection: enabled
@@ -0,0 +1,9 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- postgres.yaml
- pvc.yaml
- secret.yaml
- service.yaml
@@ -0,0 +1,42 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-postgres
namespace: kubeflow
labels:
katib.kubeflow.org/component: postgres
spec:
replicas: 1
selector:
matchLabels:
katib.kubeflow.org/component: postgres
strategy:
type: Recreate
template:
metadata:
labels:
katib.kubeflow.org/component: postgres
sidecar.istio.io/inject: "false"
annotations:
spec:
containers:
- name: katib-postgres
image: postgres:14.5-alpine
envFrom:
- secretRef:
name: katib-postgres-secrets
env:
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- name: postgres
containerPort: 5432
protocol: TCP
volumeMounts:
- name: katib-postgres
mountPath: /var/lib/postgresql/data
volumes:
- name: katib-postgres
persistentVolumeClaim:
claimName: katib-postgres
@@ -0,0 +1,12 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: katib-postgres
namespace: kubeflow
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
@@ -0,0 +1,10 @@
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: katib-postgres-secrets
data:
POSTGRES_USER: a2F0aWI= # katib
POSTGRES_PASSWORD: a2F0aWI= # katib
POSTGRES_DB: a2F0aWI= # katib
@@ -0,0 +1,16 @@
---
apiVersion: v1
kind: Service
metadata:
name: katib-postgres
namespace: kubeflow
labels:
katib.kubeflow.org/component: postgres
spec:
type: ClusterIP
ports:
- port: 5432
protocol: TCP
name: dbapi
selector:
katib.kubeflow.org/component: postgres
@@ -0,0 +1,8 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- rbac.yaml
- service.yaml
- ui.yaml
@@ -0,0 +1,52 @@
---
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:
- "*"
- apiGroups:
- ""
resources:
- pods
verbs:
- list
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: katib-ui
namespace: kubeflow
---
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
namespace: kubeflow
@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: Service
metadata:
name: katib-ui
namespace: kubeflow
labels:
katib.kubeflow.org/component: ui
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
name: ui
targetPort: 8080
selector:
katib.kubeflow.org/component: ui
@@ -0,0 +1,35 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-ui
namespace: kubeflow
labels:
katib.kubeflow.org/component: ui
spec:
replicas: 1
selector:
matchLabels:
katib.kubeflow.org/component: ui
template:
metadata:
labels:
katib.kubeflow.org/component: ui
sidecar.istio.io/inject: "false"
spec:
containers:
- name: katib-ui
image: ghcr.io/kubeflow/katib/katib-ui
command:
- "./katib-ui"
args:
- "--port=8080"
env:
- name: KATIB_CORE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- name: ui
containerPort: 8080
serviceAccountName: katib-ui
@@ -0,0 +1,6 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- webhooks.yaml
@@ -0,0 +1,74 @@
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: katib.kubeflow.org
webhooks:
- name: validator.experiment.katib.kubeflow.org
sideEffects: None
admissionReviewVersions:
- v1
clientConfig:
service:
name: katib-controller
namespace: kubeflow
path: /validate-experiment
rules:
- apiGroups:
- kubeflow.org
apiVersions:
- v1beta1
operations:
- CREATE
- UPDATE
resources:
- experiments
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: katib.kubeflow.org
webhooks:
- name: defaulter.experiment.katib.kubeflow.org
sideEffects: None
admissionReviewVersions:
- v1
clientConfig:
service:
name: katib-controller
namespace: kubeflow
path: /mutate-experiment
rules:
- apiGroups:
- kubeflow.org
apiVersions:
- v1beta1
operations:
- CREATE
- UPDATE
resources:
- experiments
- name: mutator.pod.katib.kubeflow.org
sideEffects: None
admissionReviewVersions:
- v1
clientConfig:
service:
name: katib-controller
namespace: kubeflow
path: /mutate-pod
namespaceSelector:
matchLabels:
katib.kubeflow.org/metrics-collector-injection: enabled
matchConditions:
- name: 'exclude-katib-controller'
expression: 'request.userInfo.username != "system:serviceaccount:kubeflow:katib-controller"'
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
resources:
- pods
@@ -0,0 +1,22 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: katib-webhook-cert
spec:
isCA: true
commonName: $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc
dnsNames:
- $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc
- $(KATIB_SERVICE_NAME).$(KATIB_NAMESPACE).svc.cluster.local
issuerRef:
kind: Issuer
name: katib-selfsigned-issuer
secretName: katib-webhook-cert
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: katib-selfsigned-issuer
spec:
selfSigned: {}
@@ -0,0 +1,58 @@
---
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
controller:
webhookPort: 8443
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,69 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- ../../components/namespace
# Katib controller.
- ../../components/controller/
# Katib CRDs.
- ../../components/crd/
# Katib DB manager.
- ../../components/db-manager/
# Katib DB mysql.
- ../../components/mysql/
# Katib UI.
- ../../components/ui/
# Katib webhooks.
- ../../components/webhook/
# Cert-manager certificate for webhooks
- certificate.yaml
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
patchesStrategicMerge:
- patches/katib-cert-injection.yaml
vars:
- fieldref:
fieldPath: metadata.namespace
name: KATIB_NAMESPACE
objref:
apiVersion: v1
kind: Service
name: katib-controller
- fieldref:
fieldPath: metadata.name
name: KATIB_SERVICE_NAME
objref:
apiVersion: v1
kind: Service
name: katib-controller
- name: KATIB_CERT_NAME
objref:
kind: Certificate
group: cert-manager.io
version: v1
name: katib-webhook-cert
fieldref:
fieldpath: metadata.name
configurations:
- params.yaml
configMapGenerator:
- name: katib-config
behavior: create
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
@@ -0,0 +1,19 @@
---
varReference:
- path: spec/commonName
kind: Certificate
- path: spec/dnsNames
kind: Certificate
- path: spec/issuerRef/name
kind: Certificate
- path: metadata/annotations
kind: MutatingWebhookConfiguration
- path: metadata/annotations
kind: ValidatingWebhookConfiguration
nameReference:
- kind: Issuer
group: cert-manager.io
fieldSpecs:
- kind: Certificate
group: cert-manager.io
path: spec/issuerRef/name
@@ -0,0 +1,14 @@
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: katib.kubeflow.org
annotations:
cert-manager.io/inject-ca-from: $(KATIB_NAMESPACE)/$(KATIB_CERT_NAME)
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: katib.kubeflow.org
annotations:
cert-manager.io/inject-ca-from: $(KATIB_NAMESPACE)/$(KATIB_CERT_NAME)
@@ -0,0 +1,60 @@
---
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
certGenerator:
enable: true
controller:
webhookPort: 8443
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,45 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- ../../components/namespace/
# Katib controller.
- ../../components/controller/
# Katib CRDs.
- ../../components/crd/
# Katib DB manager.
- ../../components/db-manager/
# Katib UI.
- ../../components/ui/
# Katib webhooks.
- ../../components/webhook/
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
patchesStrategicMerge:
- patches/db-manager.yaml
# Modify katib-mysql-secrets with parameters for the DB.
secretGenerator:
- name: katib-mysql-secrets
envs:
- secrets.env
# Secret for webhooks certs.
- name: katib-webhook-cert
options:
disableNameSuffixHash: true
configMapGenerator:
- name: katib-config
behavior: create
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
@@ -0,0 +1,39 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: katib-db-manager
namespace: kubeflow
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
@@ -0,0 +1,5 @@
KATIB_MYSQL_DB_DATABASE=
KATIB_MYSQL_DB_HOST=
KATIB_MYSQL_DB_PORT=
DB_USER=
DB_PASSWORD=
@@ -0,0 +1,61 @@
---
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
certGenerator:
enable: true
controller:
webhookPort: 8443
enableLeaderElection: true
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,18 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../katib-standalone
# rbac for leader-election
- leader-election-rbac.yaml
replicas:
- name: katib-controller
count: 2
configMapGenerator:
- name: katib-config
behavior: replace
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
@@ -0,0 +1,27 @@
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: leader-election
namespace: kubeflow
rules:
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: leader-election
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: leader-election
subjects:
- kind: ServiceAccount
name: katib-controller
namespace: kubeflow
@@ -0,0 +1,58 @@
---
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
controller:
webhookPort: 8443
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,72 @@
# This kustomization copies the `katib-standalone` one with following exclusions:
# - No Job is spawned to generate TLS key for `katib-controller` Service
# - Instead, the Service and WebhookConfigurations linked to it are annotated
# for OpenShift service controller to handle TLS certification.
#
# Requires OpenShift version: 4.4+
#
# To achieve this, run:
#
# `kustomize build ./manifests/v1beta1/installs/katib-openshift | oc apply -f - -l type!=local`
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- ../../components/namespace/
# Katib controller.
- ../../components/controller/
# Katib CRDs.
- ../../components/crd/
# Katib DB manager.
- ../../components/db-manager/
# Katib DB mysql.
- ../../components/mysql/
# Katib UI.
- ../../components/ui/
# Katib webhooks.
- ../../components/webhook/
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
patchesJson6902:
# Annotate Service to delegate TLS-secret generation to OpenShift service controller
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate_service-serving-certificate
- target:
group: ""
version: v1
kind: Service
name: katib-controller
namespace: kubeflow
path: patches/service-serving-cert.yaml
# Annotate WebhookConfigurations to delegate `caBundle` population to OpenShift service controller
# https://docs.openshift.com/container-platform/4.6/security/certificates/service-serving-certificate.html#add-service-certificate-mutating-webhook_service-serving-certificate
- target:
group: admissionregistration.k8s.io
version: v1
kind: ValidatingWebhookConfiguration
name: katib.kubeflow.org
path: patches/webhook-inject-cabundle.yaml
- target:
group: admissionregistration.k8s.io
version: v1
kind: MutatingWebhookConfiguration
name: katib.kubeflow.org
path: patches/webhook-inject-cabundle.yaml
configMapGenerator:
- name: katib-config
behavior: create
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
@@ -0,0 +1,4 @@
---
- op: "add"
path: "/metadata/annotations/service.beta.openshift.io~1serving-cert-secret-name"
value: katib-webhook-cert
@@ -0,0 +1,5 @@
---
- op: "add"
path: "/metadata/annotations"
value:
service.beta.openshift.io/inject-cabundle: "true"
@@ -0,0 +1,60 @@
---
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
certGenerator:
enable: true
controller:
webhookPort: 8443
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,48 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- ../../components/namespace/
# Katib controller.
- ../../components/controller/
# Katib CRDs.
- ../../components/crd/
# Katib DB manager.
- ../../components/db-manager/
# Katib DB postgres.
- ../../components/postgres/
# Katib UI.
- ../../components/ui/
# Katib webhooks.
- ../../components/webhook/
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
patchesJson6902:
- target:
group: apps
version: v1
kind: Deployment
name: katib-db-manager
path: ./patches/db-manager.yaml
configMapGenerator:
- name: katib-config
behavior: create
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
# Secret for webhooks certs.
secretGenerator:
- name: katib-webhook-cert
options:
disableNameSuffixHash: true
@@ -0,0 +1,8 @@
---
- op: replace
path: /spec/template/spec/containers/0/env
value:
- name: DB_NAME
value: "postgres"
- name: DB_PASSWORD
value: "katib"
@@ -0,0 +1,59 @@
apiVersion: config.kubeflow.org/v1beta1
kind: KatibConfig
init:
certGenerator:
enable: true
controller:
webhookPort: 8443
trialResources:
- Job.v1.batch
- TFJob.v1.kubeflow.org
- PyTorchJob.v1.kubeflow.org
- MPIJob.v1.kubeflow.org
- XGBoostJob.v1.kubeflow.org
runtime:
metricsCollectors:
- kind: StdOut
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: File
image: ghcr.io/kubeflow/katib/file-metrics-collector:v0.18.0
- kind: TensorFlowEvent
image: ghcr.io/kubeflow/katib/tfevent-metrics-collector:v0.18.0
resources:
limits:
memory: 1Gi
suggestions:
- algorithmName: random
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: tpe
image: ghcr.io/kubeflow/katib/suggestion-hyperopt:v0.18.0
- algorithmName: grid
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: hyperband
image: ghcr.io/kubeflow/katib/suggestion-hyperband:v0.18.0
- algorithmName: bayesianoptimization
image: ghcr.io/kubeflow/katib/suggestion-skopt:v0.18.0
- algorithmName: cmaes
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: sobol
image: ghcr.io/kubeflow/katib/suggestion-goptuna:v0.18.0
- algorithmName: multivariate-tpe
image: ghcr.io/kubeflow/katib/suggestion-optuna:v0.18.0
- algorithmName: enas
image: ghcr.io/kubeflow/katib/suggestion-enas:v0.18.0
resources:
limits:
memory: 400Mi
- algorithmName: darts
image: ghcr.io/kubeflow/katib/suggestion-darts:v0.18.0
- algorithmName: pbt
image: ghcr.io/kubeflow/katib/suggestion-pbt:v0.18.0
persistentVolumeClaimSpec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
earlyStoppings:
- algorithmName: medianstop
image: ghcr.io/kubeflow/katib/earlystopping-medianstop:v0.18.0
@@ -0,0 +1,41 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
# Namespace.
- ../../components/namespace/
# Katib controller.
- ../../components/controller/
# Katib CRDs.
- ../../components/crd/
# Katib DB manager.
- ../../components/db-manager/
# Katib DB mysql.
- ../../components/mysql/
# Katib UI.
- ../../components/ui/
# Katib webhooks.
- ../../components/webhook/
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
configMapGenerator:
- name: katib-config
behavior: create
files:
- katib-config.yaml
options:
disableNameSuffixHash: true
# Secret for webhooks certs.
secretGenerator:
- name: katib-webhook-cert
options:
disableNameSuffixHash: true
@@ -0,0 +1,15 @@
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: katib-ui
namespace: kubeflow
spec:
action: ALLOW
selector:
matchLabels:
katib.kubeflow.org/component: ui
rules:
- from:
- source:
principals: ["cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"]
@@ -0,0 +1,66 @@
---
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
- apiGroups:
- ""
resources:
- pods
verbs:
- list
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
---
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
@@ -0,0 +1,56 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../katib-cert-manager
# Kubeflow Katib components.
- kubeflow-katib-roles.yaml
- ui-virtual-service.yaml
- istio-authorizationpolicy.yaml
images:
- name: ghcr.io/kubeflow/katib/katib-controller
newName: ghcr.io/kubeflow/katib/katib-controller
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-db-manager
newName: ghcr.io/kubeflow/katib/katib-db-manager
newTag: v0.18.0
- name: ghcr.io/kubeflow/katib/katib-ui
newName: ghcr.io/kubeflow/katib/katib-ui
newTag: v0.18.0
patchesStrategicMerge:
- patches/remove-namespace.yaml
patches:
# Extend RBAC permission list of katib-ui so it can
# create SubjectAccessReview resources.
- target:
kind: ClusterRole
name: katib-ui
group: rbac.authorization.k8s.io
version: v1
path: patches/ui-rbac.yaml
# Enable RBAC authz checks in UI's backend.
- target:
version: v1
kind: Deployment
name: katib-ui
path: patches/enable-ui-authz-checks.yaml
# Allow istio sidecar injection in katib-UI Pod.
- target:
kind: Deployment
name: katib-ui
path: patches/istio-sidecar-injection.yaml
vars:
- fieldref:
fieldPath: metadata.namespace
name: KATIB_UI_NAMESPACE
objref:
apiVersion: apps/v1
kind: Deployment
name: katib-ui
configurations:
- params.yaml
@@ -0,0 +1,4 @@
---
varReference:
- path: spec/http/route/destination/host
kind: VirtualService
@@ -0,0 +1,6 @@
---
- op: add
path: /spec/template/spec/containers/0/env/-
value:
name: APP_DISABLE_AUTH
value: "false"
@@ -0,0 +1,10 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "katib-ui"
spec:
template:
metadata:
labels:
sidecar.istio.io/inject: "true"
@@ -0,0 +1,6 @@
---
$patch: delete
apiVersion: v1
kind: Namespace
metadata:
name: kubeflow
@@ -0,0 +1,7 @@
---
- op: add
path: /rules/-
value:
apiGroups: [authorization.k8s.io]
resources: [subjectaccessreviews]
verbs: [create]
@@ -0,0 +1,21 @@
---
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.cluster.local
port:
number: 80