[IBM] split full stack to components to support finer grain customization used in KfDef (#1582)

* add IBM stack components

* add IBM stack components

* revert seldon test expected data

* switch to base_v3 for istio-stack
This commit is contained in:
Adrian Zhuang 2020-10-20 11:44:19 -07:00 committed by GitHub
parent f95406b14a
commit ea1a35124b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
287 changed files with 22319 additions and 37 deletions

View File

@ -0,0 +1,144 @@
apiVersion: kfdef.apps.kubeflow.org/v1
kind: KfDef
metadata:
namespace: kubeflow
spec:
applications:
# Install istio in a different namespace: istio-system
# Remove this application if istio is already installed
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/istio-1-3-1-stack
name: istio-stack
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/cluster-local-gateway-1-3-1
name: cluster-local-gateway
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/istio
name: istio
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/add-anonymous-user-filter
name: add-anonymous-user-filter
# application
- kustomizeConfig:
repoRef:
name: manifests
path: application/v3
name: application
# bootstrap
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/bootstrap
name: bootstrap
# cert-manager
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/cert-manager-crds
name: cert-manager-crds
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/cert-manager-kube-system-resources
name: cert-manager-kube-system-resources
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/cert-manager
name: cert-manager
# Kubeflow components
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/base
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/admission-webhook
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/profile-control-plane
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/metadata
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/argo
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/katib
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/pipelines
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/notebooks
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/pytorch-job
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/tf-job
name: kubeflow-apps
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/components/seldon-core-operator
name: kubeflow-apps
# other applications
- kustomizeConfig:
repoRef:
name: manifests
path: metacontroller/base
name: metacontroller
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/spark-operator
name: spark-operator
- kustomizeConfig:
repoRef:
name: manifests
path: knative/installs/generic
name: knative
- kustomizeConfig:
repoRef:
name: manifests
path: kfserving/installs/generic
name: kfserving
# Spartakus is a separate applications so that kfctl can remove it
# to disable usage reporting
- kustomizeConfig:
repoRef:
name: manifests
path: stacks/ibm/application/spartakus
name: spartakus
repos:
- name: manifests
uri: https://github.com/IBM/manifests/archive/master.tar.gz
version: master

View File

@ -2,4 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: istio-system
resources:
- ../../../../istio-1-3-1/cluster-local-gateway-1-3-1/base
- ../../../../istio-1-3-1/cluster-local-gateway-1-3-1/base_v3

View File

@ -2,4 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: istio-system
resources:
- ../../../../istio/cluster-local-gateway/base
- ../../../../istio/cluster-local-gateway/base_v3

View File

@ -3,4 +3,4 @@ kind: Kustomization
namespace: istio-system
resources:
- ../../../../istio-1-3-1/istio-crds-1-3-1/base
- ../../../../istio-1-3-1/istio-install-1-3-1/base
- ../../../../istio-1-3-1/istio-install-1-3-1/base_v3

View File

@ -2,9 +2,9 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../istio/istio/base
- ../../../../istio/istio/base_v3
configMapGenerator:
- name: istio-parameters
- name: istio-config
behavior: merge
envs:
- params.env

View File

@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: istio-system
resources:
- ../../../../istio/oidc-authservice/overlays/application
- ../../../../istio/oidc-authservice/base_v3
images:
- name: busybox
newTag: "latest"
@ -10,7 +10,7 @@ images:
patchesStrategicMerge:
- statefulset-patch.yaml
configMapGenerator:
- name: oidc-authservice-parameters
- name: oidc-authservice-config
behavior: merge
literals:
- client_id=kubeflow-oidc-authservice

View File

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../seldon/seldon-core-operator/overlays/application

View File

@ -0,0 +1,3 @@
clusterDomain=cluster.local
userid-header=kubeflow-userid
userid-prefix=

View File

@ -0,0 +1,24 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
configMapGenerator:
- name: kubeflow-config
envs:
- ./config/params.env
vars:
# We need to define vars at the top level otherwise we will get
# conflicts.
- fieldref:
fieldPath: data.clusterDomain
name: clusterDomain
objref:
apiVersion: v1
kind: ConfigMap
name: kubeflow-config
- fieldref:
fieldPath: metadata.namespace
name: namespace
objref:
apiVersion: v1
kind: ConfigMap
name: kubeflow-config

View File

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../admission-webhook/webhook/v3

View File

@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../argo/base_v3
configMapGenerator:
- name: workflow-controller-parameters
behavior: merge
literals:
- containerRuntimeExecutor=pns

View File

@ -0,0 +1,13 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../katib/installs/katib-standalone-ibm
vars:
- fieldref:
fieldpath: metadata.namespace
name: katib-ui-namespace
objref:
kind: Service
name: katib-ui
apiVersion: v1

View File

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../application/metadata

View File

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../application/jupyter-web-app
- ../../application/notebook-controller

View File

@ -0,0 +1,16 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../pipeline/minio/installs/ibm
- ../../../../pipeline/mysql/installs/ibm
- ../../../../pipeline/installs/generic
configMapGenerator:
- name: pipeline-mysql-parameters
behavior: merge
literals:
- mysqlPvcName=mysql-pv-claim
- name: pipeline-minio-parameters
behavior: merge
literals:
- minioPvcName=minio-pv-claim

View File

@ -0,0 +1,12 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../common/centraldashboard/overlays/stacks
- ../../../../kubeflow-roles/base
- ../../application/profiles
configMapGenerator:
- name: profiles-config
behavior: merge
literals:
- admin=example@kubeflow.org

View File

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../pytorch-job/pytorch-job-crds/overlays/application
- ../../../../pytorch-job/pytorch-operator/overlays/application

View File

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../seldon/seldon-core-operator/overlays/application

View File

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../tf-training/tf-job-crds/overlays/application
- ../../../../tf-training/tf-job-operator/overlays/application

View File

@ -5,5 +5,5 @@ kind: ConfigMap
metadata:
labels:
kustomize.component: cluster-local-gateway
name: cluster-local-gateway-parameters-tbbdb2842d
name: cluster-local-gateway-config
namespace: istio-system

View File

@ -5,5 +5,5 @@ kind: ConfigMap
metadata:
labels:
kustomize.component: cluster-local-gateway
name: cluster-local-gateway-parameters-tbbdb2842d
name: cluster-local-gateway-config
namespace: istio-system

View File

@ -3,5 +3,5 @@ data:
namespace: istio-system
kind: ConfigMap
metadata:
name: istio-install-parameters-5kmkd2f29g
name: istio-install-config
namespace: istio-system

View File

@ -6,5 +6,5 @@ kind: ConfigMap
metadata:
annotations: {}
labels: {}
name: istio-parameters-t6hhgfg9k2
name: istio-config
namespace: kubeflow

View File

@ -1,9 +1,6 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: oidc-authservice
namespace: istio-system
spec:

View File

@ -1,9 +1,6 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: authservice
namespace: istio-system
spec:
@ -11,8 +8,6 @@ spec:
selector:
matchLabels:
app: authservice
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
serviceName: authservice
template:
metadata:
@ -20,8 +15,6 @@ spec:
sidecar.istio.io/inject: "false"
labels:
app: authservice
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
spec:
containers:
- env:

View File

@ -1,9 +1,6 @@
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: authn-filter
namespace: istio-system
spec:
@ -33,4 +30,4 @@ spec:
listenerMatch:
listenerType: GATEWAY
workloadLabels:
istio: ingressgateway
istio: $(gatewaySelector)

View File

@ -13,8 +13,6 @@ data:
kind: ConfigMap
metadata:
annotations: {}
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: oidc-authservice-parameters
labels: {}
name: oidc-authservice-config
namespace: istio-system

View File

@ -1,9 +1,6 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: authservice-pvc
namespace: istio-system
spec:

View File

@ -1,9 +1,6 @@
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
name: authservice
namespace: istio-system
spec:
@ -14,6 +11,4 @@ spec:
publishNotReadyAddresses: true
selector:
app: authservice
app.kubernetes.io/component: oidc-authservice
app.kubernetes.io/name: oidc-authservice
type: ClusterIP

View File

@ -0,0 +1,15 @@
package seldon_core_operator
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../../stacks/ibm/application/seldon-core-operator",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,86 @@
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeflow/seldon-serving-cert
creationTimestamp: null
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-mutating-webhook-configuration-kubeflow
webhooks:
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /mutate-machinelearning-seldon-io-v1-seldondeployment
failurePolicy: Fail
name: v1.mseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- seldondeployments
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /mutate-machinelearning-seldon-io-v1alpha2-seldondeployment
failurePolicy: Fail
name: v1alpha2.mseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1alpha2
operations:
- CREATE
- UPDATE
resources:
- seldondeployments
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /mutate-machinelearning-seldon-io-v1alpha3-seldondeployment
failurePolicy: Fail
name: v1alpha3.mseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1alpha3
operations:
- CREATE
- UPDATE
resources:
- seldondeployments

View File

@ -0,0 +1,86 @@
apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeflow/seldon-serving-cert
creationTimestamp: null
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-validating-webhook-configuration-kubeflow
webhooks:
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /validate-machinelearning-seldon-io-v1-seldondeployment
failurePolicy: Fail
name: v1.vseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- seldondeployments
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /validate-machinelearning-seldon-io-v1alpha2-seldondeployment
failurePolicy: Fail
name: v1alpha2.vseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1alpha2
operations:
- CREATE
- UPDATE
resources:
- seldondeployments
- clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lSQU9CZGZ4N0xmZXVEZnJ2QXFUK0hDWDh3RFFZSktvWklodmNOQVFFTEJRQXcKSERFYU1CZ0dBMVVFQXhNUlkzVnpkRzl0TFcxbGRISnBZM010WTJFd0hoY05NakF3TnpFd01UYzFOREV4V2hjTgpNakV3TnpFd01UYzFOREV4V2pBY01Sb3dHQVlEVlFRREV4RmpkWE4wYjIwdGJXVjBjbWxqY3kxallUQ0NBU0l3CkRRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLSEVLQ09YVW1LN2FRS1VHL0ZjbTMwSTVmVnYKTVJlc3dGbi9yb3pxR1I2Rm5HSm9zbjFiZStJY05PZkdvUERUNkJ4T2pYRXVvczRvQjFabjNXamZZL3ZaVnNCagpjSjdCWld3TzZlUmwrUEZNOUV5S0ZwTVhncnVHdjRBTlpOZ3BrejkyYURBTTV2S1RSYng0QUVCRFdjQlgxWE93CjdEdFZrOVNpY0Q5cTdMVGYzWDBYSHF1SlRiQTNmNXhJbndEMWp2ZjltMzdZanNIRnZva3ZscGR3MFpicFhjeWYKVFozYWw0SVJ5SmU3TWJDaTV4Wm9PcmZ0R1NzT2IrNnRTemVKbU5nVjM2N3ZHbnliSEJSSmlUVTBYeGJid3hEawpjazIvNnFFMXgzOWxxUlYvOWNURWk4UE1DbU9oV0dkeFQ3cTJQS1NmeVBhSm50VWVnUndXcjZIdDRVY0NBd0VBCkFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnS2tNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUYKQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRMcldyeGxmMgpuU2pjNEFvK3FJaHBITXZYc21nVFJXbFNKNXR0aW1tZHE0TkpwWDBMeWJQRmVoQ2RGOTUweXRvejIxMVFZbENECmVKd3k1YXY1eHA2NTdKZ0h0ckRWb1djTmxFUnNMa0JOOElaTlI2THdJdkMrbFZjYzU0RGVRWU5XbG5neSttYnMKT3FoYWlQVXVoWTRjZW9TeENlNDlYSHVnQko4VVdZUTUwcWl4Y1hmRjdzK1JQLzZuQXRhVDRrbWVkek1HckxFbwp1a3JzcXNaOWV5SHNDYmtKTW0rcHROWWtXMUhzU29ORlhHRnZYTE5GTEllZVJpa0hyRk15Tmg3dVhwQjI2cTVrCnVES2lvL0dNNitIRG5GN1p5VXVYTVEyOWhjc1VZZ2tBcVFJZGhKWnV5R281WmpjK1VNL3hyMlFwc0tYSjBmUXoKVHpvR3I0L1JzdTRBCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: seldon-webhook-service
namespace: kubeflow
path: /validate-machinelearning-seldon-io-v1alpha3-seldondeployment
failurePolicy: Fail
name: v1alpha3.vseldondeployment.kb.io
namespaceSelector:
matchExpressions:
- key: seldon.io/controller-id
operator: DoesNotExist
matchLabels:
serving.kubeflow.org/inferenceservice: enabled
rules:
- apiGroups:
- machinelearning.seldon.io
apiVersions:
- v1alpha3
operations:
- CREATE
- UPDATE
resources:
- seldondeployments

View File

@ -0,0 +1,46 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: seldon
app.kubernetes.io/name: seldon-core-operator
name: seldon-core-operator
namespace: kubeflow
spec:
addOwnerRef: true
componentKinds:
- group: apps/v1
kind: StatefulSet
- group: v1
kind: Service
- group: apps/v1
kind: Deployment
- group: v1
kind: Secret
- group: v1
kind: ConfigMap
descriptor:
description: Seldon allows users to create ML Inference Graphs to deploy their
models and serve predictions
keywords:
- seldon
- inference
links:
- description: Docs
url: https://docs.seldon.io/projects/seldon-core/en/v1.1.0/
maintainers:
- email: dev@seldon.io
name: Seldon
owners:
- email: dev@seldon.io
name: Seldon
type: seldon-core-operator
version: v1
selector:
matchLabels:
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-1.2.1
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: seldon
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/version: 1.2.1

View File

@ -0,0 +1,160 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
control-plane: seldon-controller-manager
name: seldon-controller-manager
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon1
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: v0.5
control-plane: seldon-controller-manager
template:
metadata:
annotations:
prometheus.io/scrape: "true"
sidecar.istio.io/inject: "false"
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon1
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: v0.5
control-plane: seldon-controller-manager
spec:
containers:
- args:
- --enable-leader-election
- --webhook-port=443
- --create-resources=$(MANAGER_CREATE_RESOURCES)
- ""
command:
- /manager
env:
- name: WATCH_NAMESPACE
value: ""
- name: RELATED_IMAGE_EXECUTOR
value: ""
- name: RELATED_IMAGE_ENGINE
value: ""
- name: RELATED_IMAGE_STORAGE_INITIALIZER
value: ""
- name: RELATED_IMAGE_SKLEARNSERVER_REST
value: ""
- name: RELATED_IMAGE_SKLEARNSERVER_GRPC
value: ""
- name: RELATED_IMAGE_XGBOOSTSERVER_REST
value: ""
- name: RELATED_IMAGE_XGBOOSTSERVER_GRPC
value: ""
- name: RELATED_IMAGE_MLFLOWSERVER_REST
value: ""
- name: RELATED_IMAGE_MLFLOWSERVER_GRPC
value: ""
- name: RELATED_IMAGE_TFPROXY_REST
value: ""
- name: RELATED_IMAGE_TFPROXY_GRPC
value: ""
- name: RELATED_IMAGE_TENSORFLOW
value: ""
- name: RELATED_IMAGE_EXPLAINER
value: ""
- name: MANAGER_CREATE_RESOURCES
value: "false"
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTROLLER_ID
value: ""
- name: AMBASSADOR_ENABLED
value: "true"
- name: AMBASSADOR_SINGLE_NAMESPACE
value: "false"
- name: ENGINE_CONTAINER_IMAGE_AND_VERSION
value: docker.io/seldonio/engine:1.2.1
- name: ENGINE_CONTAINER_IMAGE_PULL_POLICY
value: IfNotPresent
- name: ENGINE_CONTAINER_SERVICE_ACCOUNT_NAME
value: default
- name: ENGINE_CONTAINER_USER
value: "8888"
- name: ENGINE_LOG_MESSAGES_EXTERNALLY
value: "false"
- name: PREDICTIVE_UNIT_SERVICE_PORT
value: "9000"
- name: PREDICTIVE_UNIT_DEFAULT_ENV_SECRET_REF_NAME
value: ""
- name: PREDICTIVE_UNIT_METRICS_PORT_NAME
value: metrics
- name: ENGINE_SERVER_GRPC_PORT
value: "5001"
- name: ENGINE_SERVER_PORT
value: "8000"
- name: ENGINE_PROMETHEUS_PATH
value: /prometheus
- name: ISTIO_ENABLED
value: "true"
- name: ISTIO_GATEWAY
value: kubeflow/kubeflow-gateway
- name: ISTIO_TLS_MODE
value: ""
- name: USE_EXECUTOR
value: "true"
- name: EXECUTOR_CONTAINER_IMAGE_AND_VERSION
value: docker.io/seldonio/seldon-core-executor:1.2.1
- name: EXECUTOR_CONTAINER_IMAGE_PULL_POLICY
value: IfNotPresent
- name: EXECUTOR_PROMETHEUS_PATH
value: /prometheus
- name: EXECUTOR_SERVER_PORT
value: "8000"
- name: EXECUTOR_CONTAINER_USER
value: "8888"
- name: EXECUTOR_CONTAINER_SERVICE_ACCOUNT_NAME
value: default
- name: EXECUTOR_SERVER_METRICS_PORT_NAME
value: metrics
- name: EXECUTOR_REQUEST_LOGGER_DEFAULT_ENDPOINT
value: http://default-broker
- name: DEFAULT_USER_ID
value: "8888"
image: docker.io/seldonio/seldon-core-operator:1.2.1
imagePullPolicy: IfNotPresent
name: manager
ports:
- containerPort: 443
name: webhook-server
protocol: TCP
- containerPort: 8080
name: metrics
protocol: TCP
resources:
limits:
cpu: 500m
memory: 300Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- mountPath: /tmp/k8s-webhook-server/serving-certs
name: cert
readOnly: true
serviceAccountName: seldon-manager
terminationGracePeriodSeconds: 10
volumes:
- name: cert
secret:
defaultMode: 420
secretName: seldon-webhook-server-cert

View File

@ -0,0 +1,20 @@
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-serving-cert
namespace: kubeflow
spec:
commonName: seldon-webhook-service.kubeflow.svc
dnsNames:
- seldon-webhook-service.kubeflow.svc.cluster.local
- seldon-webhook-service.kubeflow.svc
issuerRef:
kind: Issuer
name: seldon-selfsigned-issuer
secretName: seldon-webhook-server-cert

View File

@ -0,0 +1,13 @@
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-selfsigned-issuer
namespace: kubeflow
spec:
selfSigned: {}

View File

@ -0,0 +1,175 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-manager-role-kubeflow
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- deployments/status
verbs:
- get
- patch
- update
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers/status
verbs:
- get
- patch
- update
- apiGroups:
- machinelearning.seldon.io
resources:
- seldondeployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- machinelearning.seldon.io
resources:
- seldondeployments/finalizers
verbs:
- get
- patch
- update
- apiGroups:
- machinelearning.seldon.io
resources:
- seldondeployments/status
verbs:
- get
- patch
- update
- apiGroups:
- networking.istio.io
resources:
- destinationrules
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- networking.istio.io
resources:
- destinationrules/status
verbs:
- get
- patch
- update
- apiGroups:
- networking.istio.io
resources:
- virtualservices
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- networking.istio.io
resources:
- virtualservices/status
verbs:
- get
- patch
- update
- apiGroups:
- v1
resources:
- namespaces
verbs:
- get
- list
- watch
- apiGroups:
- v1
resources:
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- v1
resources:
- services/status
verbs:
- get
- patch
- update

View File

@ -0,0 +1,36 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-manager-sas-role-kubeflow
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- get
- list
- watch

View File

@ -0,0 +1,18 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-manager-rolebinding-kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: seldon-manager-role-kubeflow
subjects:
- kind: ServiceAccount
name: seldon-manager
namespace: kubeflow

View File

@ -0,0 +1,18 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-manager-sas-rolebinding-kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: seldon-manager-sas-role-kubeflow
subjects:
- kind: ServiceAccount
name: seldon-manager
namespace: kubeflow

View File

@ -0,0 +1,38 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-leader-election-role
namespace: kubeflow
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- configmaps/status
verbs:
- get
- update
- patch
- apiGroups:
- ""
resources:
- events
verbs:
- create

View File

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-leader-election-rolebinding
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: seldon-leader-election-role
subjects:
- kind: ServiceAccount
name: seldon-manager
namespace: kubeflow

View File

@ -0,0 +1,17 @@
apiVersion: v1
data:
credentials: '{"gcs":{"gcsCredentialFileName":"gcloud-application-credentials.json"},"s3":{"s3AccessKeyIDName":"awsAccessKeyID","s3SecretAccessKeyName":"awsSecretAccessKey"}}'
explainer: '{"image":"seldonio/alibiexplainer:1.2.1"}'
predictor_servers: '{"MLFLOW_SERVER":{"grpc":{"defaultImageVersion":"1.2.1","image":"seldonio/mlflowserver_grpc"},"rest":{"defaultImageVersion":"1.2.1","image":"seldonio/mlflowserver_rest"}},"SKLEARN_SERVER":{"grpc":{"defaultImageVersion":"1.2.1","image":"seldonio/sklearnserver_grpc"},"rest":{"defaultImageVersion":"1.2.1","image":"seldonio/sklearnserver_rest"}},"TENSORFLOW_SERVER":{"grpc":{"defaultImageVersion":"1.2.1","image":"seldonio/tfserving-proxy_grpc"},"rest":{"defaultImageVersion":"1.2.1","image":"seldonio/tfserving-proxy_rest"},"tensorflow":true,"tfImage":"tensorflow/serving:2.1.0"},"XGBOOST_SERVER":{"grpc":{"defaultImageVersion":"1.2.1","image":"seldonio/xgboostserver_grpc"},"rest":{"defaultImageVersion":"1.2.1","image":"seldonio/xgboostserver_rest"}}}'
storageInitializer: '{"cpuLimit":"1","cpuRequest":"100m","image":"gcr.io/kfserving/storage-initializer:0.2.2","memoryLimit":"1Gi","memoryRequest":"100Mi"}'
kind: ConfigMap
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
control-plane: seldon-controller-manager
name: seldon-config
namespace: kubeflow

View File

@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-webhook-service
namespace: kubeflow
spec:
ports:
- port: 443
targetPort: 443
selector:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon1
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: v0.5
control-plane: seldon-controller-manager

View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: seldon
app.kubernetes.io/component: seldon
app.kubernetes.io/instance: seldon-core
app.kubernetes.io/name: seldon-core-operator
app.kubernetes.io/version: 1.2.1
name: seldon-manager
namespace: kubeflow

View File

@ -0,0 +1,15 @@
package base
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../stacks/ibm/base",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,9 @@
apiVersion: v1
data:
clusterDomain: cluster.local
userid-header: kubeflow-userid
userid-prefix: ""
kind: ConfigMap
metadata:
name: kubeflow-config-d7dttg89h2
namespace: kubeflow

View File

@ -0,0 +1,15 @@
package admission_webhook
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../../stacks/ibm/components/admission-webhook",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,31 @@
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: kubeflow/admission-webhook-cert
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
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
namespaceSelector:
matchLabels:
app.kubernetes.io/part-of: kubeflow-profile
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
resources:
- pods

View File

@ -0,0 +1,56 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
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

View File

@ -0,0 +1,39 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
name: webhook
namespace: kubeflow
spec:
addOwnerRef: true
componentKinds:
- group: core
kind: ConfigMap
- group: apps
kind: StatefulSet
- group: core
kind: Service
- group: core
kind: ServiceAccount
descriptor:
description: injects volume, volume mounts, env vars into PodDefault
keywords:
- admission-webhook
- kubeflow
links:
- description: About
url: https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook
maintainers: []
owners: []
type: bootstrap
version: v1beta1
selector:
matchLabels:
app.kubernetes.io/component: bootstrap
app.kubernetes.io/instance: webhook-v1.0.0
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/name: webhook
app.kubernetes.io/part-of: webhook
app.kubernetes.io/version: v1.0.0

View File

@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
name: admission-webhook-deployment
namespace: kubeflow
spec:
selector:
matchLabels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
spec:
containers:
- args:
- --tlsCertFile=/etc/webhook/certs/tls.crt
- --tlsKeyFile=/etc/webhook/certs/tls.key
image: gcr.io/kubeflow-images-public/admission-webhook:vmaster-gaf96e4e3
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

View File

@ -0,0 +1,18 @@
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
labels:
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
name: admission-webhook-cert
namespace: kubeflow
spec:
commonName: admission-webhook-service.kubeflow.svc
dnsNames:
- admission-webhook-service.kubeflow.svc
- admission-webhook-service.kubeflow.svc.cluster.local
isCA: true
issuerRef:
kind: ClusterIssuer
name: kubeflow-self-signing-issuer
secretName: webhook-certs

View File

@ -0,0 +1,22 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
name: admission-webhook-cluster-role
rules:
- apiGroups:
- kubeflow.org
resources:
- poddefaults
verbs:
- get
- watch
- list
- update
- create
- patch
- delete

View File

@ -0,0 +1,15 @@
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true"
name: admission-webhook-kubeflow-poddefaults-admin
rules: []

View File

@ -0,0 +1,15 @@
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true"
name: admission-webhook-kubeflow-poddefaults-edit
rules: []

View File

@ -0,0 +1,21 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true"
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true"
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true"
name: admission-webhook-kubeflow-poddefaults-view
rules:
- apiGroups:
- kubeflow.org
resources:
- poddefaults
verbs:
- get
- list
- watch

View File

@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
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

View File

@ -0,0 +1,14 @@
apiVersion: v1
data:
issuer: kubeflow-self-signing-issuer
namespace: kubeflow
kind: ConfigMap
metadata:
annotations: {}
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
name: admission-webhook-admission-webhook-parameters
namespace: kubeflow

View File

@ -0,0 +1,19 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
name: admission-webhook-service
namespace: kubeflow
spec:
ports:
- port: 443
targetPort: 443
selector:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook

View File

@ -0,0 +1,10 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: admission-webhook
app.kubernetes.io/component: poddefaults
app.kubernetes.io/name: poddefaults
kustomize.component: admission-webhook
name: admission-webhook-service-account
namespace: kubeflow

View File

@ -0,0 +1,15 @@
package argo
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../../stacks/ibm/components/argo",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,19 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
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

View File

@ -0,0 +1,39 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo
namespace: kubeflow
spec:
addOwnerRef: true
componentKinds:
- group: core
kind: ConfigMap
- group: apps
kind: Deployment
- group: core
kind: ServiceAccount
- group: core
kind: Service
- group: networking.istio.io
kind: VirtualService
descriptor:
description: Argo Workflows is an open source container-native workflow engine
for orchestrating parallel jobs on Kubernetes
keywords:
- argo
- kubeflow
links:
- description: About
url: https://github.com/argoproj/argo
maintainers: []
owners: []
type: argo
version: v1beta1
selector:
matchLabels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo

View File

@ -0,0 +1,66 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo-ui
namespace: kubeflow
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
creationTimestamp: null
labels:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
spec:
containers:
- env:
- name: ARGO_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: IN_CLUSTER
value: "true"
- name: ENABLE_WEB_CONSOLE
value: "false"
- 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

View File

@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: workflow-controller
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: workflow-controller
namespace: kubeflow
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: workflow-controller
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
creationTimestamp: null
labels:
app: workflow-controller
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
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

View File

@ -0,0 +1,25 @@
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo-ui
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /argo/
rewrite:
uri: /
route:
- destination:
host: argo-ui.$(namespace).svc.$(clusterDomain)
port:
number: 80

View File

@ -0,0 +1,35 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: argo
app.kubernetes.io/component: argo
app.kubernetes.io/name: 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
- workflows/finalizers
verbs:
- get
- list
- watch

View File

@ -0,0 +1,54 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: argo
app.kubernetes.io/component: argo
app.kubernetes.io/name: 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
- workflows/finalizers
verbs:
- get
- list
- watch
- update
- patch
- apiGroups:
- sparkoperator.k8s.io
resources:
- sparkapplications
verbs:
- '*'

View File

@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
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

View File

@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: argo
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: argo
subjects:
- kind: ServiceAccount
name: argo
namespace: kubeflow

View File

@ -0,0 +1,32 @@
apiVersion: v1
data:
config: |
{
executorImage: argoproj/argoexec:v2.3.0,
containerRuntimeExecutor: pns,
artifactRepository:
{
s3: {
bucket: mlpipeline,
keyPrefix: artifacts,
endpoint: minio-service.kubeflow:9000,
insecure: true,
accessKeySecret: {
name: mlpipeline-minio-artifact,
key: accesskey
},
secretKeySecret: {
name: mlpipeline-minio-artifact,
key: secretkey
}
}
}
}
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: workflow-controller-configmap
namespace: kubeflow

View File

@ -0,0 +1,23 @@
apiVersion: v1
data:
artifactRepositoryAccessKeySecretKey: accesskey
artifactRepositoryAccessKeySecretName: mlpipeline-minio-artifact
artifactRepositoryBucket: mlpipeline
artifactRepositoryEndpoint: minio-service.kubeflow:9000
artifactRepositoryInsecure: "true"
artifactRepositoryKeyPrefix: artifacts
artifactRepositorySecretKeySecretKey: secretkey
artifactRepositorySecretKeySecretName: mlpipeline-minio-artifact
clusterDomain: cluster.local
containerRuntimeExecutor: pns
executorImage: argoproj/argoexec:v2.3.0
namespace: ""
kind: ConfigMap
metadata:
annotations: {}
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: workflow-controller-parameters
namespace: kubeflow

View File

@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo-ui
namespace: kubeflow
spec:
ports:
- port: 80
targetPort: 8001
selector:
app: argo-ui
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
sessionAffinity: None
type: NodePort

View File

@ -0,0 +1,9 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo-ui
namespace: kubeflow

View File

@ -0,0 +1,9 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: argo
namespace: kubeflow

View File

@ -0,0 +1,15 @@
package katib
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../../stacks/ibm/components/katib",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,28 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-crds
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: v1alpha3

View File

@ -0,0 +1,37 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-crds
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
names:
categories:
- all
- kubeflow
- katib
kind: Suggestion
plural: suggestions
singular: suggestion
scope: Namespaced
subresources:
status: {}
version: v1alpha3

View File

@ -0,0 +1,31 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-crds
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
names:
categories:
- all
- kubeflow
- katib
kind: Trial
plural: trials
singular: trial
scope: Namespaced
subresources:
status: {}
version: v1alpha3

View File

@ -0,0 +1,70 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-controller
namespace: kubeflow
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: v1alpha3
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

View File

@ -0,0 +1,68 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-crds
name: katib-crds
namespace: kubeflow
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: v1alpha3
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

View File

@ -0,0 +1,56 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib-controller
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-controller
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib-controller
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
template:
metadata:
annotations:
prometheus.io/scrape: "true"
sidecar.istio.io/inject: "false"
labels:
app: katib-controller
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
spec:
containers:
- args:
- --webhook-port=8443
command:
- ./katib-controller
env:
- name: KATIB_CORE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/kubeflow-images-public/katib/v1alpha3/katib-controller:ce89cbf
imagePullPolicy: IfNotPresent
name: katib-controller
ports:
- containerPort: 8443
name: webhook
protocol: TCP
- containerPort: 8080
name: metrics
protocol: TCP
volumeMounts:
- mountPath: /tmp/cert
name: cert
readOnly: true
serviceAccountName: katib-controller
volumes:
- name: cert
secret:
defaultMode: 420
secretName: katib-controller

View File

@ -0,0 +1,60 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: db-manager
name: katib-db-manager
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: db-manager
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: db-manager
name: katib-db-manager
spec:
containers:
- command:
- ./katib-db-manager
env:
- name: DB_NAME
value: mysql
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: katib-mysql-secrets
image: gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:ce89cbf
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/grpc_health_probe
- -addr=:6789
failureThreshold: 5
initialDelaySeconds: 10
periodSeconds: 60
name: katib-db-manager
ports:
- containerPort: 6789
name: api
readinessProbe:
exec:
command:
- /bin/grpc_health_probe
- -addr=:6789
initialDelaySeconds: 5

View File

@ -0,0 +1,65 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: mysql
name: katib-mysql
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: mysql
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: mysql
name: katib-mysql
spec:
containers:
- args:
- --datadir
- /var/lib/mysql/datadir
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: MYSQL_ROOT_PASSWORD
name: katib-mysql-secrets
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
- name: MYSQL_DATABASE
value: katib
image: mysql:5.6
name: katib-mysql
ports:
- containerPort: 3306
name: dbapi
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
volumeMounts:
- mountPath: /var/lib/mysql
name: katib-mysql
volumes:
- name: katib-mysql
persistentVolumeClaim:
claimName: katib-mysql

View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: ui
name: katib-ui
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: ui
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
app: katib
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
component: ui
name: katib-ui
spec:
containers:
- args:
- --port=8080
command:
- ./katib-ui
env:
- name: KATIB_CORE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:ce89cbf
imagePullPolicy: IfNotPresent
name: katib-ui
ports:
- containerPort: 8080
name: ui
serviceAccountName: katib-ui

View File

@ -0,0 +1,24 @@
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
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.$(clusterDomain)
port:
number: 80

View File

@ -0,0 +1,75 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-controller
rules:
- apiGroups:
- ""
resources:
- configmaps
- serviceaccounts
- services
- secrets
- events
- namespaces
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
verbs:
- '*'

View File

@ -0,0 +1,23 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-ui
rules:
- apiGroups:
- ""
resources:
- configmaps
- namespaces
verbs:
- '*'
- apiGroups:
- kubeflow.org
resources:
- experiments
- trials
- suggestions
verbs:
- '*'

View File

@ -0,0 +1,13 @@
aggregationRule:
clusterRoleSelectors:
- matchLabels:
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-katib-admin: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true"
name: kubeflow-katib-admin
rules: []

View File

@ -0,0 +1,25 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true"
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-katib-admin: "true"
name: kubeflow-katib-edit
rules:
- apiGroups:
- kubeflow.org
resources:
- experiments
- trials
- suggestions
verbs:
- get
- list
- watch
- create
- delete
- deletecollection
- patch
- update

View File

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true"
name: kubeflow-katib-view
rules:
- apiGroups:
- kubeflow.org
resources:
- experiments
- trials
- suggestions
verbs:
- get
- list
- watch

View File

@ -0,0 +1,15 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: katib-controller
subjects:
- kind: ServiceAccount
name: katib-controller
namespace: kubeflow

View File

@ -0,0 +1,15 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-ui
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: katib-ui
subjects:
- kind: ServiceAccount
name: katib-ui
namespace: kubeflow

View File

@ -0,0 +1,59 @@
apiVersion: v1
data:
metrics-collector-sidecar: |-
{
"StdOut": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:ce89cbf"
},
"File": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:ce89cbf"
},
"TensorFlowEvent": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/tfevent-metrics-collector:ce89cbf",
"resources": {
"limits": {
"memory": "1Gi"
}
}
}
}
suggestion: |-
{
"random": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:ce89cbf"
},
"grid": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-chocolate:ce89cbf"
},
"hyperband": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperband:ce89cbf"
},
"bayesianoptimization": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-skopt:ce89cbf"
},
"tpe": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:ce89cbf"
},
"enas": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-enas:ce89cbf",
"imagePullPolicy": "Always",
"resources": {
"limits": {
"memory": "200Mi"
}
}
},
"cmaes": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-goptuna:ce89cbf"
},
"darts": {
"image": "gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-darts:ce89cbf"
}
}
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-config
namespace: kubeflow

View File

@ -0,0 +1,97 @@
apiVersion: v1
data:
defaultTrialTemplate.yaml: |-
apiVersion: batch/v1
kind: Job
metadata:
name: {{.Trial}}
namespace: {{.NameSpace}}
spec:
template:
spec:
containers:
- name: {{.Trial}}
image: docker.io/kubeflowkatib/mxnet-mnist
command:
- "python3"
- "/opt/mxnet-mnist/mnist.py"
- "--batch-size=64"
{{- with .HyperParameters}}
{{- range .}}
- "{{.Name}}={{.Value}}"
{{- end}}
{{- end}}
restartPolicy: Never
enasCPUTemplate: |-
apiVersion: batch/v1
kind: Job
metadata:
name: {{.Trial}}
namespace: {{.NameSpace}}
spec:
template:
spec:
containers:
- name: {{.Trial}}
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu
command:
- "python3.5"
- "-u"
- "RunTrial.py"
{{- with .HyperParameters}}
{{- range .}}
- "--{{.Name}}=\"{{.Value}}\""
{{- end}}
{{- end}}
- "--num_epochs=1"
restartPolicy: Never
pytorchJobTemplate: |-
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob
metadata:
name: {{.Trial}}
namespace: {{.NameSpace}}
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"
{{- with .HyperParameters}}
{{- range .}}
- "{{.Name}}={{.Value}}"
{{- end}}
{{- end}}
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"
{{- with .HyperParameters}}
{{- range .}}
- "{{.Name}}={{.Value}}"
{{- end}}
{{- end}}
kind: ConfigMap
metadata:
labels:
app: katib-trial-templates
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: trial-template-labeled
namespace: kubeflow

View File

@ -0,0 +1,31 @@
apiVersion: v1
data:
defaultTrialTemplate.yaml: |-
apiVersion: batch/v1
kind: Job
metadata:
name: {{.Trial}}
namespace: {{.NameSpace}}
spec:
template:
spec:
containers:
- name: {{.Trial}}
image: docker.io/kubeflowkatib/mxnet-mnist
command:
- "python3"
- "/opt/mxnet-mnist/mnist.py"
- "--batch-size=64"
{{- with .HyperParameters}}
{{- range .}}
- "{{.Name}}={{.Value}}"
{{- end}}
{{- end}}
restartPolicy: Never
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: trial-template
namespace: kubeflow

View File

@ -0,0 +1,14 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-mysql
namespace: kubeflow
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

View File

@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
metadata:
labels:
app.kubernetes.io/component: katib
app.kubernetes.io/name: katib-controller
name: katib-controller
namespace: kubeflow

Some files were not shown because too many files have changed in this diff Show More