diff --git a/helm-charts/Makefile b/helm-charts/Makefile index c069e93309..44f91e02d7 100644 --- a/helm-charts/Makefile +++ b/helm-charts/Makefile @@ -1,4 +1,4 @@ -CHARTS=seldon-core seldon-core-loadtesting +CHARTS=seldon-core seldon-core-analytics seldon-core-kafka seldon-core-loadtesting build_all: diff --git a/helm-charts/seldon-core-analytics/Chart.yaml b/helm-charts/seldon-core-analytics/Chart.yaml new file mode 100644 index 0000000000..4d0a915a8d --- /dev/null +++ b/helm-charts/seldon-core-analytics/Chart.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +description: Seldon Core Analytics +keywords: +- seldon-core +- kubernetes +- machine-learning +- prometheus +- grafana +name: seldon-core-analytics +sources: +- https://github.com/SeldonIO/seldon-core +version: 0.1 diff --git a/helm-charts/seldon-core/files/alertmanager/config.yaml.example b/helm-charts/seldon-core-analytics/files/alertmanager/config.yaml.example similarity index 100% rename from helm-charts/seldon-core/files/alertmanager/config.yaml.example rename to helm-charts/seldon-core-analytics/files/alertmanager/config.yaml.example diff --git a/helm-charts/seldon-core/files/grafana/configs/grafana-net-2115-dashboard.json b/helm-charts/seldon-core-analytics/files/grafana/configs/grafana-net-2115-dashboard.json similarity index 100% rename from helm-charts/seldon-core/files/grafana/configs/grafana-net-2115-dashboard.json rename to helm-charts/seldon-core-analytics/files/grafana/configs/grafana-net-2115-dashboard.json diff --git a/helm-charts/seldon-core/files/grafana/configs/import-dashboards-job.sh b/helm-charts/seldon-core-analytics/files/grafana/configs/import-dashboards-job.sh similarity index 100% rename from helm-charts/seldon-core/files/grafana/configs/import-dashboards-job.sh rename to helm-charts/seldon-core-analytics/files/grafana/configs/import-dashboards-job.sh diff --git a/helm-charts/seldon-core/files/grafana/configs/metrics-test-dashboard.json b/helm-charts/seldon-core-analytics/files/grafana/configs/metrics-test-dashboard.json similarity index 100% rename from helm-charts/seldon-core/files/grafana/configs/metrics-test-dashboard.json rename to helm-charts/seldon-core-analytics/files/grafana/configs/metrics-test-dashboard.json diff --git a/helm-charts/seldon-core/files/grafana/configs/predictions-analytics-dashboard.json b/helm-charts/seldon-core-analytics/files/grafana/configs/predictions-analytics-dashboard.json similarity index 100% rename from helm-charts/seldon-core/files/grafana/configs/predictions-analytics-dashboard.json rename to helm-charts/seldon-core-analytics/files/grafana/configs/predictions-analytics-dashboard.json diff --git a/helm-charts/seldon-core/files/grafana/configs/prometheus-datasource.json b/helm-charts/seldon-core-analytics/files/grafana/configs/prometheus-datasource.json similarity index 100% rename from helm-charts/seldon-core/files/grafana/configs/prometheus-datasource.json rename to helm-charts/seldon-core-analytics/files/grafana/configs/prometheus-datasource.json diff --git a/helm-charts/seldon-core/files/prometheus/LINKS-WORKAROUND-NOTES.txt b/helm-charts/seldon-core-analytics/files/prometheus/LINKS-WORKAROUND-NOTES.txt similarity index 100% rename from helm-charts/seldon-core/files/prometheus/LINKS-WORKAROUND-NOTES.txt rename to helm-charts/seldon-core-analytics/files/prometheus/LINKS-WORKAROUND-NOTES.txt diff --git a/helm-charts/seldon-core/files/prometheus/prometheus-config-default.yaml b/helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-default.yaml similarity index 100% rename from helm-charts/seldon-core/files/prometheus/prometheus-config-default.yaml rename to helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-default.yaml diff --git a/helm-charts/seldon-core/files/prometheus/prometheus-config-test-dynamic.yaml b/helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-test-dynamic.yaml similarity index 100% rename from helm-charts/seldon-core/files/prometheus/prometheus-config-test-dynamic.yaml rename to helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-test-dynamic.yaml diff --git a/helm-charts/seldon-core/files/prometheus/prometheus-config-test-static.yaml b/helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-test-static.yaml similarity index 100% rename from helm-charts/seldon-core/files/prometheus/prometheus-config-test-static.yaml rename to helm-charts/seldon-core-analytics/files/prometheus/prometheus-config-test-static.yaml diff --git a/helm-charts/seldon-core/files/prometheus/prometheus-config.yaml b/helm-charts/seldon-core-analytics/files/prometheus/prometheus-config.yaml similarity index 100% rename from helm-charts/seldon-core/files/prometheus/prometheus-config.yaml rename to helm-charts/seldon-core-analytics/files/prometheus/prometheus-config.yaml diff --git a/helm-charts/seldon-core/files/prometheus/rules.default/cpu-usage.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules.default/cpu-usage.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules.default/cpu-usage.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules.default/cpu-usage.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules.default/instance-availability.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules.default/instance-availability.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules.default/instance-availability.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules.default/instance-availability.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules.default/low-disk-space.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules.default/low-disk-space.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules.default/low-disk-space.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules.default/low-disk-space.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules.default/mem-usage.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules.default/mem-usage.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules.default/mem-usage.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules.default/mem-usage.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules/cpu-usage.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules/cpu-usage.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules/cpu-usage.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules/cpu-usage.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules/instance-availability.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules/instance-availability.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules/instance-availability.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules/instance-availability.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules/low-disk-space.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules/low-disk-space.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules/low-disk-space.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules/low-disk-space.rules diff --git a/helm-charts/seldon-core/files/prometheus/rules/mem-usage.rules b/helm-charts/seldon-core-analytics/files/prometheus/rules/mem-usage.rules similarity index 100% rename from helm-charts/seldon-core/files/prometheus/rules/mem-usage.rules rename to helm-charts/seldon-core-analytics/files/prometheus/rules/mem-usage.rules diff --git a/helm-charts/seldon-core-analytics/templates/NOTES.txt b/helm-charts/seldon-core-analytics/templates/NOTES.txt new file mode 100644 index 0000000000..695e094aa1 --- /dev/null +++ b/helm-charts/seldon-core-analytics/templates/NOTES.txt @@ -0,0 +1,2 @@ +NOTES: TODO + diff --git a/helm-charts/seldon-core/templates/alertmanager-config-configmap.yaml b/helm-charts/seldon-core-analytics/templates/alertmanager-config-configmap.yaml similarity index 100% rename from helm-charts/seldon-core/templates/alertmanager-config-configmap.yaml rename to helm-charts/seldon-core-analytics/templates/alertmanager-config-configmap.yaml diff --git a/helm-charts/seldon-core/templates/alertmanager-deployment.json b/helm-charts/seldon-core-analytics/templates/alertmanager-deployment.json similarity index 100% rename from helm-charts/seldon-core/templates/alertmanager-deployment.json rename to helm-charts/seldon-core-analytics/templates/alertmanager-deployment.json diff --git a/helm-charts/seldon-core/templates/grafana-prom-dashboards-configmap.yaml b/helm-charts/seldon-core-analytics/templates/grafana-prom-dashboards-configmap.yaml similarity index 100% rename from helm-charts/seldon-core/templates/grafana-prom-dashboards-configmap.yaml rename to helm-charts/seldon-core-analytics/templates/grafana-prom-dashboards-configmap.yaml diff --git a/helm-charts/seldon-core/templates/grafana-prom-deployment.json b/helm-charts/seldon-core-analytics/templates/grafana-prom-deployment.json similarity index 100% rename from helm-charts/seldon-core/templates/grafana-prom-deployment.json rename to helm-charts/seldon-core-analytics/templates/grafana-prom-deployment.json diff --git a/helm-charts/seldon-core/templates/grafana-prom-import-dashboards-job.json b/helm-charts/seldon-core-analytics/templates/grafana-prom-import-dashboards-job.json similarity index 100% rename from helm-charts/seldon-core/templates/grafana-prom-import-dashboards-job.json rename to helm-charts/seldon-core-analytics/templates/grafana-prom-import-dashboards-job.json diff --git a/helm-charts/seldon-core/templates/grafana-prom-secret.yaml b/helm-charts/seldon-core-analytics/templates/grafana-prom-secret.yaml similarity index 100% rename from helm-charts/seldon-core/templates/grafana-prom-secret.yaml rename to helm-charts/seldon-core-analytics/templates/grafana-prom-secret.yaml diff --git a/helm-charts/seldon-core/templates/node-exporter-daemonset.json b/helm-charts/seldon-core-analytics/templates/node-exporter-daemonset.json similarity index 100% rename from helm-charts/seldon-core/templates/node-exporter-daemonset.json rename to helm-charts/seldon-core-analytics/templates/node-exporter-daemonset.json diff --git a/helm-charts/seldon-core/templates/prometheus-deployment.json b/helm-charts/seldon-core-analytics/templates/prometheus-deployment.json similarity index 100% rename from helm-charts/seldon-core/templates/prometheus-deployment.json rename to helm-charts/seldon-core-analytics/templates/prometheus-deployment.json diff --git a/helm-charts/seldon-core/templates/prometheus-rules-configmap.yaml b/helm-charts/seldon-core-analytics/templates/prometheus-rules-configmap.yaml similarity index 100% rename from helm-charts/seldon-core/templates/prometheus-rules-configmap.yaml rename to helm-charts/seldon-core-analytics/templates/prometheus-rules-configmap.yaml diff --git a/helm-charts/seldon-core/templates/prometheus-server-conf-configmap.yaml b/helm-charts/seldon-core-analytics/templates/prometheus-server-conf-configmap.yaml similarity index 100% rename from helm-charts/seldon-core/templates/prometheus-server-conf-configmap.yaml rename to helm-charts/seldon-core-analytics/templates/prometheus-server-conf-configmap.yaml diff --git a/helm-charts/seldon-core-analytics/values.yaml b/helm-charts/seldon-core-analytics/values.yaml new file mode 100644 index 0000000000..4a05ea8abc --- /dev/null +++ b/helm-charts/seldon-core-analytics/values.yaml @@ -0,0 +1,7 @@ +alertmanager: + config: + enabled: false +grafana_prom_service_type: NodePort +grafana_prom_admin_password: admin +persistence: + enabled: true diff --git a/helm-charts/seldon-core-kafka/Chart.yaml b/helm-charts/seldon-core-kafka/Chart.yaml new file mode 100644 index 0000000000..d998a36c31 --- /dev/null +++ b/helm-charts/seldon-core-kafka/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +description: Seldon Core Kafka +keywords: +- seldon-core +- kafka +name: seldon-core-kafka +sources: +- https://github.com/SeldonIO/seldon-core +version: 0.1 diff --git a/helm-charts/seldon-core-kafka/templates/NOTES.txt b/helm-charts/seldon-core-kafka/templates/NOTES.txt new file mode 100644 index 0000000000..695e094aa1 --- /dev/null +++ b/helm-charts/seldon-core-kafka/templates/NOTES.txt @@ -0,0 +1,2 @@ +NOTES: TODO + diff --git a/helm-charts/seldon-core/templates/kafka-deployment.yaml b/helm-charts/seldon-core-kafka/templates/kafka-deployment.yaml similarity index 100% rename from helm-charts/seldon-core/templates/kafka-deployment.yaml rename to helm-charts/seldon-core-kafka/templates/kafka-deployment.yaml diff --git a/helm-charts/seldon-core/templates/zookeeper-deployment.yaml b/helm-charts/seldon-core-kafka/templates/zookeeper-deployment.yaml similarity index 100% rename from helm-charts/seldon-core/templates/zookeeper-deployment.yaml rename to helm-charts/seldon-core-kafka/templates/zookeeper-deployment.yaml diff --git a/helm-charts/seldon-core-kafka/values.yaml b/helm-charts/seldon-core-kafka/values.yaml new file mode 100644 index 0000000000..507315a9ab --- /dev/null +++ b/helm-charts/seldon-core-kafka/values.yaml @@ -0,0 +1,6 @@ +kafka_core: + image: + tag: '0.1' +zookeeper: + image: + tag: '1.0' diff --git a/helm-charts/seldon-core/templates/kube-apiserver.yaml b/helm-charts/seldon-core/templates/kube-apiserver.yaml deleted file mode 100644 index 55a7bf0cc4..0000000000 --- a/helm-charts/seldon-core/templates/kube-apiserver.yaml +++ /dev/null @@ -1,190 +0,0 @@ -{{- if .Values.kube_apiserver.enabled }} -apiVersion: apiregistration.k8s.io/v1beta1 -kind: APIService -metadata: - name: v1alpha1.machinelearning.seldon.io - labels: - api: seldonapi - apiserver: "true" -spec: - version: v1alpha1 - group: machinelearning.seldon.io - groupPriorityMinimum: 2000 - priority: 200 - service: - name: seldonapi - namespace: default - versionPriority: 10 - caBundle: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKekNDQWcrZ0F3SUJBZ0lKQU52L0NPVFoxdWtkTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ294S0RBbUJnTlYKQkFNTUgzTmxiR1J2Ym1Gd2FTMWpaWEowYVdacFkyRjBaUzFoZFhSb2IzSnBkSGt3SGhjTk1UY3hNREV4TVRZMApNakV5V2hjTk1UZ3hNREV4TVRZME1qRXlXakFxTVNnd0pnWURWUVFEREI5elpXeGtiMjVoY0drdFkyVnlkR2xtCmFXTmhkR1V0WVhWMGFHOXlhWFI1TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKcjVjZWp3QmlHcHJNUDQ1UERrajBGZ0hwVGNvVDdxejRZRTcya3ZqaWFnOC9DTGdJRUwyUFA1TkJVRm9MMkJCSwp4cFNHT2IrMjE4a0VZRHpZMkp0YVB4RFVEVEJxVjQ3NEx6ZHB2RVhnemRwM0dGNHlObHJIbjloZVF6TGd2NWQ3Cm5IOFF4eG1UdDhFcW9rNUFFNDltaXJnOXpWUkp1Ymc0a1UwRjNQb2hHYzhwbWI1RFh1cjJkamdGSTFzRHQrVzUKYzBpV0lwZlUvYTNTRDVuZklsYzEvMXR2bzMzWFk4aVVDWnpSVlFKUlBOdll4SlZYSTZxcjNyTStpVEVRYjFySQpoRTh5QytaeXhLTVo5OGpjL1o3dTJCVXVVK3Jyb3haQ2dOVmJ3TG1Vby93TEU5R1B0ZHNLZm1Ka0Z5ZTFLU2o3Ck1ubGZtVkdHVkRIa3l0M0ZXaE9zOVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVW5pUDQ2ZFNKWnV4V25SQU0KNXJYVDFOTkh4Yzh3SHdZRFZSMGpCQmd3Rm9BVW5pUDQ2ZFNKWnV4V25SQU01clhUMU5OSHhjOHdEQVlEVlIwVApCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuTnd0WTY2NTRYdFFrZzhQaktLTjhQL3dGTWY5CmNlQ1VjT1VTbHp3VjdqN1RwMEFBYlVVbFd5NHM1OTZrd3FRMmZjd3FyeFNSZXN1b1QyV3pXdUE0L1RkWDdwWVgKbmkvZ3dSRGxjZUtlbjR6bGdrelhkcGxNSS8yNjlFR0FkVWd1M0ZiaFZsSFh5YjdSejg1NHBtTWxLK2IxOUhMTAowV3JCK0lmek5qRFNIRGVuNmFuS3h3aW04QXBBMnNaeUwyRWlJaGJlZFdwT29rKzA1TGZrWmpCTFExd3pHV3F0CmI1NXBKRlVnQXc4bnZ0NUtzcXVLZUI1WnZ3UjZjUXk4ZUp5bHd4Q2FYOGxBZXlra3hPWVBJSGExSUZYOFV0RGcKaWRNSHBIOFUrZHlVRTlYK1NWd2pPRDZjaWpDMlBVOGgrZTRIUkN2SDEveWVtbGRRMldBa0xxL0tLQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" ---- -apiVersion: v1 -kind: Service -metadata: - name: seldonapi - namespace: default - labels: - api: seldonapi - apiserver: "true" -spec: - ports: - - port: 443 - protocol: TCP - targetPort: 443 - selector: - api: seldonapi - apiserver: "true" ---- -apiVersion: apps/v1beta1 -kind: Deployment -metadata: - name: seldonapi - namespace: default - labels: - api: seldonapi - apiserver: "true" -spec: - replicas: 1 - template: - metadata: - labels: - api: seldonapi - apiserver: "true" - spec: - containers: - - name: apiserver - image: seldonio/ml-kube-apiserver - imagePullPolicy: Always - volumeMounts: - - name: apiserver-certs - mountPath: /apiserver.local.config/certificates - readOnly: true - command: - - "./apiserver" - args: - - "--etcd-servers=http://etcd-svc:2379" - - "--tls-cert-file=/apiserver.local.config/certificates/tls.crt" - - "--tls-private-key-file=/apiserver.local.config/certificates/tls.key" - - "--audit-log-path=-" - - "--audit-log-maxage=0" - - "--audit-log-maxbackup=0" - resources: - requests: - cpu: 100m - memory: 20Mi - limits: - cpu: 100m - memory: 30Mi - - name: controller - image: seldonio/ml-kube-apiserver - imagePullPolicy: Always - command: - - "./controller-manager" - args: - resources: - requests: - cpu: 100m - memory: 20Mi - limits: - cpu: 100m - memory: 30Mi - volumes: - - name: apiserver-certs - secret: - secretName: seldonapi ---- -apiVersion: apps/v1beta1 -kind: StatefulSet -metadata: - name: etcd - namespace: default -spec: - serviceName: "etcd" - replicas: 1 - template: - metadata: - labels: - app: etcd - spec: - terminationGracePeriodSeconds: 10 - containers: - - name: etcd - image: quay.io/coreos/etcd:latest - imagePullPolicy: Always - resources: - requests: - cpu: 100m - memory: 20Mi - limits: - cpu: 100m - memory: 30Mi - env: - - name: ETCD_DATA_DIR - value: /etcd-data-dir - command: - - /usr/local/bin/etcd - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://localhost:2379 - ports: - - containerPort: 2379 - volumeMounts: - - name: etcd-data-dir - mountPath: /etcd-data-dir - readinessProbe: - httpGet: - port: 2379 - path: /health - failureThreshold: 1 - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 2 - livenessProbe: - httpGet: - port: 2379 - path: /health - failureThreshold: 3 - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 2 - volumeClaimTemplates: - - metadata: - name: etcd-data-dir - annotations: - volume.beta.kubernetes.io/storage-class: standard - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: 10Gi ---- -apiVersion: v1 -kind: Service -metadata: - name: etcd-svc - namespace: default - labels: - app: etcd -spec: - ports: - - port: 2379 - name: etcd - targetPort: 2379 - selector: - app: etcd ---- -apiVersion: v1 -kind: Secret -type: kubernetes.io/tls -metadata: - name: seldonapi - namespace: default - labels: - api: seldonapi - apiserver: "true" -data: - tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN4akNDQWE0Q0NRRG1Wek9aeW90ZDVEQU5CZ2txaGtpRzl3MEJBUXNGQURBcU1TZ3dKZ1lEVlFRRERCOXoKWld4a2IyNWhjR2t0WTJWeWRHbG1hV05oZEdVdFlYVjBhRzl5YVhSNU1CNFhEVEUzTVRBeE1URTJOREl4TWxvWApEVEU0TVRBeE1URTJOREl4TWxvd0lERWVNQndHQTFVRUF3d1ZjMlZzWkc5dVlYQnBMbVJsWm1GMWJIUXVjM1pqCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeldyanUwTm5NdlUzU2NCR1pJamUKR1FNdHVrMEVzOHJkTkx6YmVDeUhPbHdVQjR4RXF0U1pGeDRKUmlIcWJINXhsQzlOeHErUkJEd0FjSm1MNFVlNQptMXZCRDVHcU5YdHY5d3paMlpnSzZSNTRTSllQTXpVU2pZK1g4c1VKYlhibllHUWpBSVk4emFiSHh6Yis4TmpWCmkrZFRQYkRVVUhTeWgrbDFZOWtaSUo0MHRsZTVtc1did1duVnEwLy9xbjVySUt2OUdvcEVzQjBWUXZNT1d1TGMKMEJ2WTNDZ3BtWEtwMHJ4eE5ZV0szWGZkYlRMejZIWGFnSWowbHJIUDVlVmFqZTRSVEp1WFdnWlY1cEV3SGN4QQo4alIrcFoyQmpxSno4eFUxbk5MZlJpTWJKd21PSDAvT2t0Yy9ZRWRpbis3S2pqSTRSWHQxWXk2bGtVVmUyS3NNCmJRSURBUUFCTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDZGJxSFRnLzFVdEUxY3RzOENqUm1zTnNwNHZkaFIKOW5Za1NHTmJsa2V2TnVnK3hFcm9yYksvVW94SldIT2pBT2xCV2lUYzV4M2grMmVnT3UzeTNHN052S3NQYnA0QgphU2gwZlpWdlFRSUN4aEQ3ZnNKWlloQXBpaGtOaW1yMGF4dldoZ0N3RFh2d3A1NUR4bGhMUlVkb0xkcVFzajIyClUrajBXUmQvL2RKMDRZRllVdnhUcHNKdGF5dks3TnAyOTVYUklZdXFsOGdTeUt1KzRHZDF2ZU5jSkhzY3kyQjIKbENtNERaMEJwdUptYWJEL2ZTYzk2amU2YUpTcXlmSXFzMFJLSGlDRllaaHltbDFpM3cvY0loNW9oaEJtK2Y5SgowSTZYY2tac2JsTzBsSFRWRWF0MmVFSmMvRTNDbEpKK1huUmlOak56WWdyZGJnOThOSDVTSGlVawotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== - tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktZd2dnU2lBZ0VBQW9JQkFRRE5hdU83UTJjeTlUZEoKd0Vaa2lONFpBeTI2VFFTenl0MDB2TnQ0TEljNlhCUUhqRVNxMUprWEhnbEdJZXBzZm5HVUwwM0dyNUVFUEFCdwptWXZoUjdtYlc4RVBrYW8xZTIvM0ROblptQXJwSG5oSWxnOHpOUktOajVmeXhRbHRkdWRnWkNNQWhqek5wc2ZICk52N3cyTldMNTFNOXNOUlFkTEtINlhWajJSa2dualMyVjdtYXhadkJhZFdyVC8rcWZtc2dxLzBhaWtTd0hSVkMKOHc1YTR0elFHOWpjS0NtWmNxblN2SEUxaFlyZGQ5MXRNdlBvZGRxQWlQU1dzYy9sNVZxTjdoRk1tNWRhQmxYbQprVEFkekVEeU5INmxuWUdPb25QekZUV2MwdDlHSXhzbkNZNGZUODZTMXo5Z1IyS2Y3c3FPTWpoRmUzVmpMcVdSClJWN1lxd3h0QWdNQkFBRUNnZ0VBYkgxNHUyMlU4cWZxUkd4bGdURjhRNitYRmg4WlRhL2w5cldNSUVNOFJJbGYKRnNGeGZ0djc0dWE5TlNveWVveXBoZjhaejhib0MxbDVUZjc2anNmbjhuS2FXNU91VnNMVDFxSVY2TU5SZDkvYwozVkZMdzlyUzZxc2RNRjM2WmJMMzdzUFViTEY1S1pCZFVRenR4dHh1cEk1UE8zVEtIWmdVdG8ySnIydDR4dTExCkFXNEJMYmlveEpna0FtenV2WGc1VkRja0gwVE9PTTlpYnBWZDRHeGptV25YRlp0emNLQk9xMGxwVGdXbmlVZmIKdzJ6cVU3SnM1a3IrWGRkMzRGemRmdmc3RHA3d2RPcjZlWGZxUWhvNGFsaklpcUhJVzlqNEJEMkdLc0xnOFU4NAowQXgvbnpraFNmemNBcmQ4TVVrSk5rRXU0ZkxKTFNPUHRqN0xURGY0SVFLQmdRRHlxdG5TZ0hoNDFaNGZLQTBKCjZVWDF2SFZZM0I0SURPb0E5WkJpUW5xN1RIeHNENyt0bXZCTGR1MHBsdTVUTXU0elJxK1NGbWtGT2ZpMDk3TEEKaDV1U3l6UEVpQjBIODQ3ZDZsdEhrbzA1Q0pla29XbG9McjEraHFLNzlsaER4OU9BMWhDNys0TXdhK0NBb2hGLwpjemdyWDd2akMyT051S3lQTitwRFJIem5xUUtCZ1FEWXRCMVh0Ymt5V3ROL0hLMjJxN2FLYi9vanB4ODlmYXJiClZva3VIcVdtdGhya0p5RzM3SVlkditacENCNDRtVHBnNWRDWGFrNnU2aEd1b3lISGZMbVVqVENNUjFhVGtweE8KT3ltNnBORjZBQU9QeFlxcHFPWUViNk5scStLWFF1OGlrSW54QlQyV3dWa2tjU2w2Tzh5MXpjeldGbXl6TFQ0eApTWFUvc1plcEpRS0JnSDBMczBENHVKdXpvRTUzeWZoQWY2OTRWSlBjb1pFT2JvcmQvMi9TeUFHNkVTZHlHaGl3CmpZQ2xvT0pjaHlUU1N0S2JheCtCY3M2aHA5cEJCWmlXaUlGbE9xRGNidkZJL1dhM1BDQXVrWjFCSXp0UGZjeVUKd1Vyd3YrelJyWHdIL2FJWExQcGhTYUhyQlAza0JkWkNIa0NqaldNYTNFc01UY2RqVGRFcCtwODVBb0dBUGRFTAplY1MrQXE1RUhNT0tqa3huY3hCRVU3MU52UlhIRW5DYUMwejB4aHkyaVJUY21vSGZORWRVcSt1RDYzTlNZdWZMCjNCV1lRbTlGQWdOSkZJWHd6bjZFTmMvMzAzc0VHWkRvODNRbXlWMk5wb3FjWm85bXBpZE9maWROS1FjUC9sVXEKOUZVaFg0cmlLZklaK2VOckh3V0pCQjA3ZnRWT0kzTW4valpqNC8wQ2dZQWRLdzdlbm5DbStNdkd6SVdSdjdmNgo2WTlGWHpQYXdCdVBGSVcybkFlbEQ1dmNBdkI3Y0Z1NWhKa1dKbERyMExVRkttd1V1cjRlLzF3Qm1tdTlGOGhFCkhxaENkYzl5N1FWNWE0bVJ6eklIUDZBbWxDbXArRUlrK3JwM0xJS1p5TmJsRkYrVnFhZzBaS1ltaXVjb203OXAKeVBJMWZSMnUwaXVCSjJWdDAyQmY5Zz09Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K -{{- end }} diff --git a/helm-charts/seldon-core/values.yaml b/helm-charts/seldon-core/values.yaml index 9e8fce9aad..e83c8b32d4 100644 --- a/helm-charts/seldon-core/values.yaml +++ b/helm-charts/seldon-core/values.yaml @@ -1,6 +1,3 @@ -alertmanager: - config: - enabled: false apife: image: pull_policy: IfNotPresent @@ -17,17 +14,6 @@ cluster_manager: engine: image: tag: 0.1.3-SNAPSHOT -grafana_prom_service_type: NodePort -kafka_core: - image: - tag: '0.1' -kube_apiserver: - enabled: false -persistence: - enabled: true redis: image: tag: 4.0.1 -zookeeper: - image: - tag: '1.0' diff --git a/helm-charts/seldon-core/values.yaml.example b/helm-charts/seldon-core/values.yaml.example index 3a45790677..b6eb9446ae 100644 --- a/helm-charts/seldon-core/values.yaml.example +++ b/helm-charts/seldon-core/values.yaml.example @@ -29,28 +29,8 @@ zookeeper: redis: image: tag: "4.0.1" -kube_apiserver: - enabled: false - - -alertmanager: - # config disabled by default, create file "/files/alertmanager/config.yaml" then enable - config: - enabled: false - - -# set the grafana admin password -#grafana_prom_admin_password: - -# Set the type of service for Grafana Prom -#grafana_prom_service_type: LoadBalancer -grafana_prom_service_type: NodePort # Set the type of service for apife #apife_service_type: LoadBalancer apife_service_type: NodePort -# Persist data to a persitent volume -persistence: - enabled: true - diff --git a/notebooks/advanced_graphs.ipynb b/notebooks/advanced_graphs.ipynb index f02a4bebf3..3d37bad55d 100644 --- a/notebooks/advanced_graphs.ipynb +++ b/notebooks/advanced_graphs.ipynb @@ -45,9 +45,7 @@ "source": [ "!helm install ../helm-charts/seldon-core --name seldon-core \\\n", " --set cluster_manager.rbac=true \\\n", - " --set cluster_manager_client_secret=secret \\\n", " --set cluster_manager_service_type=LoadBalancer \\\n", - " --set grafana_prom_service_type=LoadBalancer \\\n", " --set apife_service_type=LoadBalancer" ] }, @@ -767,7 +765,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 2", "language": "python", "name": "python2" }, @@ -781,7 +779,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.12" + "version": "2.7.11" } }, "nbformat": 4, diff --git a/notebooks/kubectl_demo_gcp.ipynb b/notebooks/kubectl_demo_gcp.ipynb index 0f8ef6b0d1..9473371f51 100644 --- a/notebooks/kubectl_demo_gcp.ipynb +++ b/notebooks/kubectl_demo_gcp.ipynb @@ -57,9 +57,7 @@ "source": [ "!helm install ../helm-charts/seldon-core --name seldon-core \\\n", " --set cluster_manager.rbac=true \\\n", - " --set cluster_manager_client_secret=secret \\\n", " --set cluster_manager_service_type=LoadBalancer \\\n", - " --set grafana_prom_service_type=LoadBalancer \\\n", " --set apife_service_type=LoadBalancer" ] }, @@ -82,6 +80,13 @@ "!python -m grpc.tools.protoc -I./proto --python_out=./proto --grpc_python_out=./proto ./proto/prediction.proto" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup pyhton code to do RESR and gRPC requests. **Only run this when the LoadBalancer created by GCP for the seldon-apife is running**" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/notebooks/kubectl_demo_minikube.ipynb b/notebooks/kubectl_demo_minikube.ipynb index 0387511f9d..b6011c3867 100644 --- a/notebooks/kubectl_demo_minikube.ipynb +++ b/notebooks/kubectl_demo_minikube.ipynb @@ -47,22 +47,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "$HELM_HOME has been configured at /home/clive/.helm.\n", - "\n", - "Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.\n", - "Happy Helming!\n" - ] - } - ], + "outputs": [], "source": [ "!helm init" ] @@ -76,19 +65,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "node \"fresh\" not labeled\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl label nodes `kubectl get nodes -o jsonpath='{.items[0].metadata.name}'` role=locust --overwrite" ] @@ -109,7 +90,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "collapsed": false }, @@ -128,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "collapsed": false }, @@ -188,95 +169,31 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME: seldon-core\n", - "LAST DEPLOYED: Tue Jan 9 16:38:47 2018\n", - "NAMESPACE: default\n", - "STATUS: DEPLOYED\n", - "\n", - "RESOURCES:\n", - "==> v1/Secret\n", - "NAME TYPE DATA AGE\n", - "grafana-prom-secret Opaque 1 4s\n", - "\n", - "==> v1/ConfigMap\n", - "NAME DATA AGE\n", - "alertmanager-server-conf 1 4s\n", - "grafana-import-dashboards 5 4s\n", - "prometheus-rules 4 4s\n", - "prometheus-server-conf 1 4s\n", - "\n", - "==> v1beta1/CustomResourceDefinition\n", - "NAME AGE\n", - "seldondeployments.machinelearning.seldon.io 4s\n", - "\n", - "==> v1/Pod\n", - "NAME READY STATUS RESTARTS AGE\n", - "zookeeper-1 0/1 Pending 0 2s\n", - "zookeeper-2 0/1 Pending 0 2s\n", - "zookeeper-3 0/1 Pending 0 2s\n", - "\n", - "==> v1/Job\n", - "NAME DESIRED SUCCESSFUL AGE\n", - "grafana-prom-import-dashboards 1 0 4s\n", - "\n", - "==> v1beta1/Deployment\n", - "NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE\n", - "alertmanager-deployment 1 1 1 0 3s\n", - "seldon-apiserver 1 1 1 0 3s\n", - "seldon-cluster-manager 1 1 1 0 3s\n", - "grafana-prom-deployment 1 1 1 0 3s\n", - "kafka 1 1 1 0 3s\n", - "prometheus-deployment 1 1 1 0 3s\n", - "redis 1 1 1 0 3s\n", - "\n", - "==> v1/Service\n", - "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\n", - "alertmanager ClusterIP 10.103.61.75 80/TCP 3s\n", - "seldon-apiserver NodePort 10.99.214.150 8080:30032/TCP,5000:30033/TCP 3s\n", - "grafana-prom NodePort 10.104.27.246 80:30034/TCP 3s\n", - "kafka NodePort 10.98.31.127 9092:30010/TCP 3s\n", - "prometheus-node-exporter ClusterIP None 9100/TCP 3s\n", - "prometheus-seldon ClusterIP 10.108.244.208 80/TCP 3s\n", - "redis ClusterIP 10.104.201.88 6379/TCP 3s\n", - "zookeeper-1 ClusterIP 10.102.144.71 2181/TCP,2888/TCP,3888/TCP 3s\n", - "zookeeper-2 ClusterIP 10.110.17.14 2181/TCP,2888/TCP,3888/TCP 3s\n", - "zookeeper-3 ClusterIP 10.109.110.125 2181/TCP,2888/TCP,3888/TCP 2s\n", - "\n", - "==> v1beta1/DaemonSet\n", - "NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE\n", - "prometheus-node-exporter 1 1 0 1 0 3s\n", - "\n", - "==> v1/Pod(related)\n", - "NAME READY STATUS RESTARTS AGE\n", - "grafana-prom-import-dashboards-c7gbj 0/1 ContainerCreating 0 3s\n", - "alertmanager-deployment-6f5c9c5f58-hzfvs 0/1 ContainerCreating 0 3s\n", - "seldon-apiserver-775c6f4cdf-8hzps 0/1 ContainerCreating 0 3s\n", - "seldon-cluster-manager-69fcb5f4-2vt2p 0/1 ContainerCreating 0 3s\n", - "grafana-prom-deployment-bf46c5988-89744 0/1 ContainerCreating 0 3s\n", - "kafka-68cc697c5-hhdvs 0/1 Pending 0 3s\n", - "prometheus-node-exporter-ddlkl 0/1 Pending 0 3s\n", - "prometheus-deployment-6b7f9fcbc6-f56n9 0/1 Pending 0 3s\n", - "redis-5767447797-h456r 0/1 Pending 0 3s\n", - "\n", - "\n", - "NOTES:\n", - "NOTES: TODO\n", - "\n", - "\n" - ] - } - ], - "source": [ - "!helm install ../helm-charts/seldon-core --name seldon-core \\\n", + "outputs": [], + "source": [ + "!helm install ../helm-charts/seldon-core --name seldon-core" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Install prometheus and grafana for analytics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!helm install ../helm-charts/seldon-core-analytics --name seldon-core-analytics \\\n", " --set grafana_prom_admin_password=password \\\n", " --set persistence.enabled=false" ] @@ -290,31 +207,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME READY STATUS RESTARTS AGE\r\n", - "alertmanager-deployment-6f5c9c5f58-hzfvs 0/1 ContainerCreating 0 3s\r\n", - "grafana-prom-deployment-bf46c5988-89744 0/1 ContainerCreating 0 3s\r\n", - "grafana-prom-import-dashboards-c7gbj 0/1 ContainerCreating 0 3s\r\n", - "kafka-68cc697c5-hhdvs 0/1 ContainerCreating 0 3s\r\n", - "prometheus-deployment-6b7f9fcbc6-f56n9 0/1 ContainerCreating 0 3s\r\n", - "prometheus-node-exporter-ddlkl 0/1 ContainerCreating 0 3s\r\n", - "redis-5767447797-h456r 0/1 ContainerCreating 0 3s\r\n", - "seldon-apiserver-775c6f4cdf-8hzps 1/1 Running 0 3s\r\n", - "seldon-cluster-manager-69fcb5f4-2vt2p 1/1 Running 0 3s\r\n", - "zookeeper-1 0/1 ContainerCreating 0 2s\r\n", - "zookeeper-2 0/1 ContainerCreating 0 2s\r\n", - "zookeeper-3 0/1 ContainerCreating 0 2s\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl get pods" ] @@ -342,20 +239,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The SeldonDeployment \"seldon-deployment-example\" is invalid: []: Invalid value: map[string]interface {}{\"apiVersion\":\"machinelearning.seldon.io/v1alpha1\", \"kind\":\"SeldonDeployment\", \"metadata\":map[string]interface {}{\"clusterName\":\"\", \"namespace\":\"default\", \"deletionTimestamp\":interface {}(nil), \"creationTimestamp\":\"2018-01-09T16:42:10Z\", \"uid\":\"09e309f1-f55c-11e7-94f2-0800274e805e\", \"selfLink\":\"\", \"initializers\":interface {}(nil), \"labels\":map[string]interface {}{\"app\":\"seldon\"}, \"name\":\"seldon-deployment-example\", \"deletionGracePeriodSeconds\":(*int64)(nil)}, \"spec\":map[string]interface {}{\"annotations\":map[string]interface {}{\"deployment_version\":\"v1\", \"project_name\":\"FX Market Prediction\"}, \"name\":\"test-deployment\", \"oauth_key\":1234, \"oauth_secret\":\"oauth-secret\", \"predictors\":[]interface {}{map[string]interface {}{\"name\":\"fx-market-predictor\", \"replicas\":1, \"annotations\":map[string]interface {}{\"predictor_version\":\"v1\"}, \"componentSpec\":map[string]interface {}{\"spec\":map[string]interface {}{\"containers\":[]interface {}{map[string]interface {}{\"image\":\"seldonio/mean_classifier:0.6\", \"imagePullPolicy\":22, \"name\":\"mean-classifier\", \"resources\":map[string]interface {}{\"requests\":map[string]interface {}{\"memory\":\"1Mi\"}}}}, \"terminationGracePeriodSeconds\":20}}, \"graph\":map[string]interface {}{\"children\":[]interface {}{}, \"endpoint\":map[string]interface {}{\"type\":\"REST\"}, \"name\":\"mean-classifier\", \"type\":\"MODEL\"}}}}}: validation failure list:\r\n", - "spec.oauth_key in body must be of type string: \"integer\"\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl create -f resources/model_invalid1.json" ] @@ -410,71 +298,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\r\n", - " \"apiVersion\": \"machinelearning.seldon.io/v1alpha1\",\r\n", - " \"kind\": \"SeldonDeployment\",\r\n", - " \"metadata\": {\r\n", - " \"labels\": {\r\n", - " \"app\": \"seldon\"\r\n", - " },\r\n", - " \"name\": \"seldon-deployment-example\"\r\n", - " },\r\n", - " \"spec\": {\r\n", - " \"annotations\": {\r\n", - " \"project_name\": \"FX Market Prediction\",\r\n", - " \"deployment_version\": \"v1\"\r\n", - " },\r\n", - " \"name\": \"test-deployment\",\r\n", - " \"oauth_key\": \"oauth-key\",\r\n", - " \"oauth_secret\": \"oauth-secret\",\r\n", - " \"predictors\": [\r\n", - " {\r\n", - " \"componentSpec\": {\r\n", - " \"spec\": {\r\n", - " \"containers\": [\r\n", - " {\r\n", - " \"image\": \"seldonio/mean_classifier:0.6\",\r\n", - " \"imagePullPolicy\": \"IfNotPresent\",\r\n", - " \"name\": \"mean-classifier\",\r\n", - " \"resources\": {\r\n", - " \"requests\": {\r\n", - " \"memory\": \"1Mi\"\r\n", - " }\r\n", - " }\r\n", - " }\r\n", - " ],\r\n", - " \"terminationGracePeriodSeconds\": 20\r\n", - " }\r\n", - " },\r\n", - " \"graph\": {\r\n", - " \"children\": [],\r\n", - " \"name\": \"mean-classifier\",\r\n", - " \"endpoint\": {\r\n", - "\t\t\t\"type\" : \"GRPC\"\r\n", - "\t\t },\r\n", - " \"type\": \"MODEL\"\r\n", - " },\r\n", - " \"name\": \"fx-market-predictor\",\r\n", - " \"replicas\": 1,\r\n", - "\t\t\"annotations\": {\r\n", - "\t\t \"predictor_version\" : \"v1\"\r\n", - "\t\t}\r\n", - " }\r\n", - " ]\r\n", - " }\r\n", - "}\r\n" - ] - } - ], + "outputs": [], "source": [ "!cat resources/model.json" ] @@ -495,131 +323,33 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "seldondeployment \"seldon-deployment-example\" created\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl apply -f resources/model.json" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NAME AGE\r\n", - "seldon-deployment-example 1m\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl get seldondeployments" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name: seldon-deployment-example\r\n", - "Namespace: default\r\n", - "Labels: app=seldon\r\n", - "Annotations: kubectl.kubernetes.io/last-applied-configuration={\"apiVersion\":\"machinelearning.seldon.io/v1alpha1\",\"kind\":\"SeldonDeployment\",\"metadata\":{\"name\":\"seldon-deployment-example\",\"namespace\":\"default\",\"self...\r\n", - "API Version: machinelearning.seldon.io/v1alpha1\r\n", - "Kind: SeldonDeployment\r\n", - "Metadata:\r\n", - " Cluster Name: \r\n", - " Creation Timestamp: 2018-01-10T10:18:22Z\r\n", - " Generation: 0\r\n", - " Initializers: \r\n", - " Resource Version: 10347\r\n", - " Self Link: /apis/machinelearning.seldon.io/v1alpha1/namespaces/default/seldondeployments/seldon-deployment-example\r\n", - " UID: 9670910d-f5ef-11e7-a1a3-0800274e805e\r\n", - "Spec:\r\n", - " Annotations:\r\n", - " Deployment _ Version: v1\r\n", - " Project _ Name: FX Market Prediction\r\n", - " Name: test-deployment\r\n", - " Oauth _ Key: oauth-key\r\n", - " Oauth _ Secret: oauth-secret\r\n", - " Predictors:\r\n", - " Annotations:\r\n", - " Predictor _ Version: v1\r\n", - " Component Spec:\r\n", - " Metadata:\r\n", - " Labels:\r\n", - " Seldon - App: test-deployment\r\n", - " Spec:\r\n", - " Containers:\r\n", - " Env:\r\n", - " Name: PREDICTIVE_UNIT_SERVICE_PORT\r\n", - " Value: 9000\r\n", - " Name: PREDICTIVE_UNIT_PARAMETERS\r\n", - " Value: []\r\n", - " Image: seldonio/meanclassifier:0.1_grpc\r\n", - " Image Pull Policy: IfNotPresent\r\n", - " Lifecycle:\r\n", - " Pre Stop:\r\n", - " Exec:\r\n", - " Command:\r\n", - " /bin/sh\r\n", - " -c\r\n", - " /bin/sleep 5\r\n", - " Liveness Probe:\r\n", - " Handler:\r\n", - " Tcp Socket:\r\n", - " Port: grpc\r\n", - " Initial Delay Seconds: 10\r\n", - " Period Seconds: 5\r\n", - " Name: mean-classifier\r\n", - " Ports:\r\n", - " Container Port: 9000\r\n", - " Name: grpc\r\n", - " Readiness Probe:\r\n", - " Handler:\r\n", - " Tcp Socket:\r\n", - " Port: grpc\r\n", - " Initial Delay Seconds: 10\r\n", - " Period Seconds: 5\r\n", - " Resources:\r\n", - " Requests:\r\n", - " Memory: 1Mi\r\n", - " Termination Grace Period Seconds: 20\r\n", - " Graph:\r\n", - " Endpoint:\r\n", - " Service _ Host: 0.0.0.0\r\n", - " Service _ Port: 9000\r\n", - " Type: GRPC\r\n", - " Name: mean-classifier\r\n", - " Type: MODEL\r\n", - " Name: fx-market-predictor\r\n", - " Replicas: 1\r\n", - "Events: \r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl describe seldondeployments seldon-deployment-example " ] @@ -633,19 +363,11 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "map[predictorStatus:[map[name:test-deployment-fx-market-predictor replicas:1 replicasAvailable:1]]]" - ] - } - ], + "outputs": [], "source": [ "!kubectl get seldondeployments seldon-deployment-example -o jsonpath='{.status}'" ] @@ -666,34 +388,11 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"meta\": {\n", - " \"puid\": \"9ciu7ike3lsus1omus1u4ef82p\",\n", - " \"tags\": {\n", - " },\n", - " \"routing\": {\n", - " }\n", - " },\n", - " \"data\": {\n", - " \"names\": [\"proba\"],\n", - " \"tensor\": {\n", - " \"shape\": [2, 1],\n", - " \"values\": [0.05133579311531625, 0.12823373759251927]\n", - " }\n", - " }\n", - "}\n" - ] - } - ], + "outputs": [], "source": [ "rest_request()" ] @@ -707,32 +406,11 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "meta {\n", - " puid: \"i5pjfu2kerin2of27ecu1m6q5\"\n", - "}\n", - "data {\n", - " names: \"proba\"\n", - " tensor {\n", - " shape: 3\n", - " shape: 1\n", - " values: 0.128233737593\n", - " values: 0.397314662022\n", - " values: 0.829676081356\n", - " }\n", - "}\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "grpc_request()" ] @@ -846,10 +524,12 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": { "collapsed": false }, + "outputs": [], "source": [ "!helm install seldon-core-loadtesting --name loadtest \\\n", " --set oauth.key=oauth-key \\\n", @@ -891,19 +571,11 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "seldondeployment \"seldon-deployment-example\" deleted\r\n" - ] - } - ], + "outputs": [], "source": [ "!kubectl delete -f resources/model_with_canary.json" ] @@ -916,17 +588,19 @@ }, "outputs": [], "source": [ - "!helm delete seldon-core --purge" + "!helm delete seldon-core-analytics --purge" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], - "source": [] + "source": [ + "!helm delete seldon-core --purge" + ] } ], "metadata": { diff --git a/readme.md b/readme.md index e48ce1856a..d998be44f7 100644 --- a/readme.md +++ b/readme.md @@ -5,10 +5,11 @@ | master | [![Build Status](https://travis-ci.org/SeldonIO/seldon-core.svg?branch=master)](https://travis-ci.org/SeldonIO/seldon-core) | | release-0.1 | [![Build Status](https://travis-ci.org/SeldonIO/seldon-core.svg?branch=release-0.1)](https://travis-ci.org/SeldonIO/seldon-core) | -Seldon Core is an open source framework for deploying machine learning models on Kubernetes. +Seldon Core is an open source platform for deploying machine learning models on Kubernetes. - [Goals](#goals) - [Quick Start](#quick-start) +- [Install](#install) - [Deployment guide](#deployment-guide) - [Reference](#reference) @@ -40,17 +41,24 @@ Seldon Core goals: - [Jupyter Notebook showing deployment of prebuilt model using Minikube](https://github.com/SeldonIO/seldon-core/blob/master/notebooks/kubectl_demo_minikube.ipynb) - [Jupyter Notebook showing deployment of prebuilt model using GCP cluster](https://github.com/SeldonIO/seldon-core/blob/master/notebooks/kubectl_demo_gcp.ipynb) -## Installation +## Install Official releases can be installed via helm from the repository https://storage.googleapis.com/seldon-charts. -For example: + +To install seldon-core: + +``` +helm install seldon-core --name seldon-core --repo https://storage.googleapis.com/seldon-charts +``` + +To install the optional analytics components including Prometheus and Grafana with a built-in dashboard for monitoring the running ML deployments run: ``` helm install seldon-core --name seldon-core \ --set grafana_prom_admin_password=password \ --set persistence.enabled=false \ --repo https://storage.googleapis.com/seldon-charts -``` +``` ## Deployment Guide