Deprecate and promote spring-cloud-data-flow to stable (#8757)

* [incubator/spring-cloud-data-flow] Deprecate incubator/spring-cloud-data-flow for promotion to stable

Signed-off-by: Chris Schaefer <cschaefer@pivotal.io>

* [stable/spring-cloud-data-flow] Promote to stable and update to new SCDF version 1.7.0

- promote chart to stable
- update app version to 1.7.0
- update chart version to 0.3.0
- update skipper version to 1.1.0
- enable task scheduling & update corresponding RBAC rules

Signed-off-by: Chris Schaefer <cschaefer@pivotal.io>

* Updates from PR review

Signed-off-by: Chris Schaefer <cschaefer@pivotal.io>

* Add release label to matchLabels

Signed-off-by: Chris Schaefer <cschaefer@pivotal.io>
This commit is contained in:
Chris Schaefer
2018-11-09 07:21:49 -08:00
committed by k8s-ci-robot
parent 48fb8cdf84
commit 2d9828b26a
22 changed files with 775 additions and 7 deletions
+4 -7
View File
@@ -1,7 +1,7 @@
apiVersion: v1
description: Toolkit for building data processing pipelines.
description: DEPRECATED Toolkit for building data processing pipelines.
name: spring-cloud-data-flow
version: 0.2.6
version: 0.2.7
appVersion: 1.6.2.RELEASE
home: http://cloud.spring.io/spring-cloud-dataflow/
sources:
@@ -10,8 +10,5 @@ sources:
- https://github.com/spring-cloud/spring-cloud-skipper
- https://github.com/spring-cloud/spring-cloud-dataflow-metrics-collector
icon: https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/master/spring-cloud-dataflow-docs/src/main/docbook/images/logo.png
maintainers:
- name: trisberg
email: trisberg@pivotal.io
- name: chrisjs
email: cschaefer@pivotal.io
# The chart has been moved to stable.
deprecated: true
@@ -1,5 +1,9 @@
# Spring Cloud Data Flow Chart
****
**NOTE: This chart has been DEPRECATED. Please use stable/spring-cloud-data-flow.**
****
[Spring Cloud Data Flow](http://cloud.spring.io/spring-cloud-dataflow/) is a toolkit for building data integration and real-time data processing pipelines.
Pipelines consist of [Spring Boot](http://projects.spring.io/spring-boot/) apps, built using the [Spring Cloud Stream](http://cloud.spring.io/spring-cloud-stream/) or [Spring Cloud Task](http://cloud.spring.io/spring-cloud-task/) microservice frameworks. This makes Spring Cloud Data Flow suitable for a range of data processing use cases, from import/export to event streaming and predictive analytics.
@@ -1,3 +1,7 @@
***********************************************************************************
* NOTE: This chart has been DEPRECATED. Please use stable/spring-cloud-data-flow. *
***********************************************************************************
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.server.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "scdf.fullname" . }}-server)
+21
View File
@@ -0,0 +1,21 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
+17
View File
@@ -0,0 +1,17 @@
apiVersion: v1
description: Toolkit for building data processing pipelines.
name: spring-cloud-data-flow
version: 1.0.0
appVersion: 1.7.0.RELEASE
home: http://cloud.spring.io/spring-cloud-dataflow/
sources:
- https://github.com/spring-cloud/spring-cloud-dataflow
- https://github.com/spring-cloud/spring-cloud-dataflow-server-kubernetes
- https://github.com/spring-cloud/spring-cloud-skipper
- https://github.com/spring-cloud/spring-cloud-dataflow-metrics-collector
icon: https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow/master/spring-cloud-dataflow-docs/src/main/docbook/images/logo.png
maintainers:
- name: trisberg
email: trisberg@pivotal.io
- name: chrisjs
email: cschaefer@pivotal.io
+108
View File
@@ -0,0 +1,108 @@
# Spring Cloud Data Flow Chart
[Spring Cloud Data Flow](http://cloud.spring.io/spring-cloud-dataflow/) is a toolkit for building data integration and real-time data processing pipelines.
Pipelines consist of [Spring Boot](http://projects.spring.io/spring-boot/) apps, built using the [Spring Cloud Stream](http://cloud.spring.io/spring-cloud-stream/) or [Spring Cloud Task](http://cloud.spring.io/spring-cloud-task/) microservice frameworks. This makes Spring Cloud Data Flow suitable for a range of data processing use cases, from import/export to event streaming and predictive analytics.
## Chart Details
This chart will provision a fully functional and fully featured Spring Cloud Data Flow installation
that can deploy and manage data processing pipelines in the cluster that it is deployed to.
MySQL and Redis are used as the stores for Spring Cloud Data Flow state and RabbitMQ is used for the pipelines' messaging layer.
For more information on Spring Cloud Data Flow and its capabilities, see it's [documentation](http://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/).
## Prerequisites
Assumes that serviceAccount credentials are available so the deployed Data Flow server can access the API server (Works on GKE and Minikube by default). See [Configure Service Accounts for Pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
$ helm install --name my-release stable/spring-cloud-data-flow
```
If you are using a cluster that does not have a load balancer (like Minikube) then you can install using a NodePort:
```bash
$ helm install --name my-release --set server.service.type=NodePort stable/spring-cloud-data-flow
```
Note that this chart pulls in many different Docker images so can take a while to fully install.
## Configuration
The following tables list the configurable parameters and their default values.
### RBAC Configuration
| Parameter | Description | Default |
| ------------- | --------------------------- | ------------------------- |
| rbac.create | Create RBAC configurations | true
### ServiceAccount Configuration
| Parameter | Description | Default |
| --------------------- | ---------------------- | --------------------------- |
| serviceAccount.create | Create ServiceAccount | true
| serviceAccount.name | ServiceAccount name | (generated if not specified)
### Data Flow User Accounts
| Parameter | Description | Default |
| ----------------------- | -------------------------------------- | ------------------------- |
| dataflowUsername | The username for the primary user | user
| dataflowPassword | The password for the primary user | password
| dataflowRoles | The roles assigned to the primary user | ROLE_VIEW, ROLE_CREATE
| dataflowAdminUsername | The username for the admin user | admin
| dataflowAdminPassword | The password for the admin user | admin
| dataflowAdminRoles | The roles assigned to the admin user | ROLE_MANAGE, ROLE_VIEW
### Data Flow Server Configuration
| Parameter | Description | Default |
| --------------------------------- | -------------------------------------------------- | ---------------- |
| server.version | The version/tag of the Data Flow server | 1.7.0.RELEASE
| server.imagePullPolicy | The imagePullPolicy of the Data Flow server | IfNotPresent
| server.service.type | The service type for the Data Flow server | LoadBalancer
| server.service.externalPort | The external port for the Data Flow server | 80
### Skipper Server Configuration
| Parameter | Description | Default |
| ---------------------------------- | ------------------------------------------------- | ---------------- |
| skipper.version | The version/tag of the Skipper server | 1.1.0.RELEASE
| skipper.imagePullPolicy | The imagePullPolicy of the Skipper server | IfNotPresent
| skipper.platformName | The name of the configured platform account | minikube
| skipper.service.type | The service type for the Skipper server | ClusterIP
### Metrics Server Configuration
| Parameter | Description | Default |
| ---------------------------------- | ------------------------------------------------- | ---------------- |
| metrics.version | The version/tag of the Metrics server | 2.0.0.RELEASE
| metrics.imagePullPolicy | The imagePullPolicy of the Metrics server | IfNotPresent
| metrics.service.type | The service type for the Metrics server | ClusterIP
### Spring Cloud Deployer Configuration
| Parameter | Description | Default |
| ------------------------------------------- | -------------------------------------- | ------------------------- |
| deployer.resourceLimits.cpu | Deployer resource limit for cpu | 500m
| deployer.resourceLimits.memory | Deployer resource limit for memory | 1024Mi
| deployer.readinessProbe.initialDelaySeconds | Deployer readiness probe initial delay | 120
| deployer.livenessProbe.initialDelaySeconds | Deployer liveness probe initial delay | 90
### RabbitMQ Configuration
| Parameter | Description | Default |
| -------------------------- | --------------------- | ------------------------- |
| rabbitmq.rabbitmqUsername | RabbitMQ user name | user
### MySQL Configuration
| Parameter | Description | Default |
| -------------------------- | --------------------- | ------------------------- |
| mysql.mysqlDatabase | MySQL database name | dataflow
@@ -0,0 +1,12 @@
dependencies:
- name: mysql
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.3.4
- name: redis
repository: https://kubernetes-charts.storage.googleapis.com/
version: 1.1.11
- name: rabbitmq
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.6.16
digest: sha256:b16ffdc5da316b3a7e677d3a83670341b13670d7e59f8ce74d023a01df05f135
generated: 2018-01-31T09:21:26.470351-05:00
@@ -0,0 +1,10 @@
dependencies:
- name: mysql
version: 0.3.4
repository: https://kubernetes-charts.storage.googleapis.com/
- name: redis
version: 1.1.11
repository: https://kubernetes-charts.storage.googleapis.com/
- name: rabbitmq
version: 0.6.16
repository: https://kubernetes-charts.storage.googleapis.com/
@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.server.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "scdf.fullname" . }}-server)
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.server.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of the server by running 'kubectl get svc -w {{ template "scdf.fullname" . }}-server'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "scdf.fullname" . }}-server -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.server.service.externalPort }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "scdf.fullname" . }}-server" -> -l "app={{ template "scdf.name" . }},release={{ .Release.Name }},component=server"
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:{{ .Values.server.service.externalPort }}
{{- end }}
@@ -0,0 +1,42 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "scdf.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default short app name to use for resource naming.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "scdf.fullname" -}}
{{- $name := default "data-flow" .Values.appNameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create an uppercase app name to use for environment variables.
*/}}
{{- define "scdf.envname" -}}
{{- $name := default "data-flow" .Values.appNameOverride -}}
{{- printf "%s_%s" .Release.Name $name | upper | replace "-" "_" | trimSuffix "_" -}}
{{- end -}}
{{/*
Create an uppercase release prefix to use for environment variables.
*/}}
{{- define "scdf.envrelease" -}}
{{- printf "%s" .Release.Name | upper | replace "-" "_" | trimSuffix "_" -}}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "scdf.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "scdf.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
@@ -0,0 +1,66 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "scdf.fullname" . }}-metrics
labels:
app: {{ template "scdf.name" . }}
component: metrics
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
selector:
matchLabels:
app: {{ template "scdf.name" . }}
component: metrics
release: "{{ .Release.Name }}"
replicas: 1
template:
metadata:
labels:
app: {{ template "scdf.name" . }}
component: metrics
release: "{{ .Release.Name }}"
spec:
containers:
- name: {{ template "scdf.fullname" . }}-metrics
image: {{ .Values.metrics.image }}:{{ .Values.metrics.version }}
imagePullPolicy: {{ .Values.metrics.imagePullPolicy }}
ports:
- containerPort: 8080
name: http
resources:
{{ toYaml .Values.metrics.resources | indent 10 }}
livenessProbe:
httpGet:
path: /actuator/health
port: http
initialDelaySeconds: 90
periodSeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /actuator/health
port: http
initialDelaySeconds: 60
periodSeconds: 15
timeoutSeconds: 5
env:
- name: SERVER_PORT
value: '8080'
- name: SPRING_CLOUD_CONFIG_ENABLED
value: 'false'
- name: SPRING_AUTOCONFIGURE_EXCLUDE
value: 'org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration'
- name: SPRING_RABBITMQ_HOST
value: '${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_HOST}'
- name: SPRING_RABBITMQ_PORT
value: '${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_PORT_AMQP}'
- name: SPRING_RABBITMQ_USERNAME
value: '{{ .Values.rabbitmq.rabbitmqUsername }}'
- name: SPRING_RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-%s" .Release.Name "rabbitmq" | trunc 63 | trimSuffix "-" }}
key: rabbitmq-password
serviceAccountName: {{ template "scdf.serviceAccountName" . }}
@@ -0,0 +1,20 @@
kind: Service
apiVersion: v1
metadata:
name: {{ template "scdf.fullname" . }}-metrics
labels:
app: {{ template "scdf.name" . }}
component: metrics
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.metrics.service.type }}
ports:
- port: 80
targetPort: http
name: http
selector:
app: {{ template "scdf.name" . }}
component: metrics
release: {{ .Release.Name }}
@@ -0,0 +1,21 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "scdf.fullname" . }}
labels:
app: {{ template "scdf.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{- if .Values.dataflowAdminPassword }}
data-flow-admin-password: {{ .Values.dataflowAdminPassword | b64enc | quote }}
{{- else }}
data-flow-admin-password: {{ randAlphaNum 10 | b64enc | quote }}
{{- end }}
{{- if .Values.dataflowPassword }}
data-flow-password: {{ .Values.dataflowPassword | b64enc | quote }}
{{- else }}
data-flow-password: {{ randAlphaNum 10 | b64enc | quote }}
{{- end }}
@@ -0,0 +1,40 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "scdf.fullname" . }}-server
labels:
app: {{ template "scdf.name" . }}
component: server
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data:
application.yaml: |-
security:
basic:
enabled: true
realm: Spring Cloud Data Flow
spring:
cloud:
dataflow:
security:
authentication:
file:
enabled: true
users:
{{ .Values.dataflowAdminUsername }}: ${data-flow-admin-password}, {{ .Values.dataflowAdminRoles }}
{{ .Values.dataflowUsername }}: ${data-flow-password}, {{ .Values.dataflowRoles }}
deployer:
kubernetes:
environmentVariables: 'SPRING_RABBITMQ_HOST=${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_HOST},SPRING_RABBITMQ_PORT=${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_PORT_AMQP},SPRING_RABBITMQ_USERNAME={{ .Values.rabbitmq.rabbitmqUsername }},SPRING_RABBITMQ_PASSWORD=${rabbitmq-password},SPRING_REDIS_HOST=${{ printf "{" }}{{ template "scdf.envrelease" . }}_REDIS_SERVICE_HOST},SPRING_REDIS_PORT=${{ printf "{" }}{{ template "scdf.envrelease" . }}_REDIS_SERVICE_PORT},SPRING_REDIS_PASSWORD=${redis-password}'
datasource:
url: 'jdbc:mysql://${{ printf "{" }}{{ template "scdf.envrelease" . }}_MYSQL_SERVICE_HOST}:3306/dataflow'
driverClassName: org.mariadb.jdbc.Driver
username: root
password: ${mysql-root-password}
testOnBorrow: true
validationQuery: "SELECT 1"
redis:
host: ${{ printf "{" }}{{ template "scdf.envrelease" . }}_REDIS_SERVICE_HOST}
port: ${{ printf "{" }}{{ template "scdf.envrelease" . }}_REDIS_SERVICE_PORT}
password: ${redis-password}
@@ -0,0 +1,120 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "scdf.fullname" . }}-server
labels:
app: {{ template "scdf.name" . }}
component: server
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
selector:
matchLabels:
app: {{ template "scdf.name" . }}
component: server
release: "{{ .Release.Name }}"
replicas: 1
template:
metadata:
labels:
app: {{ template "scdf.name" . }}
component: server
release: "{{ .Release.Name }}"
spec:
containers:
- name: {{ template "scdf.fullname" . }}-server
image: {{ .Values.server.image }}:{{ .Values.server.version }}
imagePullPolicy: {{ .Values.server.imagePullPolicy }}
volumeMounts:
- name: data-flow
mountPath: /etc/secrets/data-flow
readOnly: true
- name: rabbitmq
mountPath: /etc/secrets/rabbitmq
readOnly: true
- name: mysql
mountPath: /etc/secrets/mysql
readOnly: true
- name: redis
mountPath: /etc/secrets/redis
readOnly: true
ports:
- containerPort: 8080
name: http
resources:
{{ toYaml .Values.server.resources | indent 10 }}
livenessProbe:
httpGet:
path: /management/health
port: http
httpHeaders:
- name: Authorization
value: 'Basic {{ printf "%s:%s" .Values.dataflowAdminUsername .Values.dataflowAdminPassword | b64enc }}'
initialDelaySeconds: 120
periodSeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /management/health
port: http
httpHeaders:
- name: Authorization
value: 'Basic {{ printf "%s:%s" .Values.dataflowAdminUsername .Values.dataflowAdminPassword | b64enc }}'
initialDelaySeconds: 60
periodSeconds: 15
timeoutSeconds: 5
env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: "metadata.namespace"
- name: SERVER_PORT
value: '8080'
- name: SPRING_CLOUD_CONFIG_ENABLED
value: 'false'
- name: SPRING_CLOUD_DATAFLOW_FEATURES_ANALYTICS_ENABLED
value: 'true'
- name: SPRING_CLOUD_DATAFLOW_FEATURES_SCHEDULES_ENABLED
value: 'true'
- name: SPRING_CLOUD_DEPLOYER_KUBERNETES_CREATE_DEPLOYMENT
value: 'true'
- name: SPRING_CLOUD_DEPLOYER_KUBERNETES_CPU
value: '{{ .Values.deployer.resourceLimits.cpu }}'
- name: SPRING_CLOUD_DEPLOYER_KUBERNETES_MEMORY
value: '{{ .Values.deployer.resourceLimits.memory }}'
- name: SPRING_CLOUD_DEPLOYER_KUBERNETES_READINESS_PROBE_DELAY
value: '{{ .Values.deployer.readinessProbe.initialDelaySeconds }}'
- name: SPRING_CLOUD_DEPLOYER_KUBERNETES_LIVENESS_PROBE_DELAY
value: '{{ .Values.deployer.livenessProbe.initialDelaySeconds }}'
- name: SPRING_CLOUD_KUBERNETES_CONFIG_NAME
value: {{ template "scdf.fullname" . }}-server
- name: SPRING_CLOUD_KUBERNETES_SECRETS_ENABLE_API
value: 'true'
- name: SPRING_CLOUD_KUBERNETES_SECRETS_PATHS
value: /etc/secrets
- name: SPRING_CLOUD_DATAFLOW_FEATURES_SKIPPER_ENABLED
value: 'true'
- name: SPRING_CLOUD_SKIPPER_CLIENT_SERVER_URI
value: 'http://${{ printf "{" }}{{ template "scdf.envname" . }}_SKIPPER_SERVICE_HOST}/api'
- name: SPRING_CLOUD_DATAFLOW_METRICS_COLLECTOR_URI
value: 'http://${{ printf "{" }}{{ template "scdf.envname" . }}_METRICS_SERVICE_HOST}'
- name: SPRING_CLOUD_DATAFLOW_SERVER_URI
value: 'http://${{ printf "{" }}{{ template "scdf.envname" . }}_SERVER_SERVICE_HOST}:${{ printf "{" }}{{ template "scdf.envname" . }}_SERVER_SERVICE_PORT}'
# Maven repo for metadata artifact resolution plus metrics destination for all stream apps
- name: SPRING_APPLICATION_JSON
value: "{ \"maven\": { \"local-repository\": null, \"remote-repositories\": { \"repo1\": { \"url\": \"https://repo.spring.io/libs-snapshot\"} } }, \"spring.cloud.dataflow.application-properties.stream.spring.cloud.stream.bindings.applicationMetrics.destination\": \"metrics\" }"
volumes:
- name: data-flow
secret:
secretName: {{ template "scdf.fullname" . }}
- name: rabbitmq
secret:
secretName: {{ printf "%s-%s" .Release.Name "rabbitmq" | trunc 63 | trimSuffix "-" }}
- name: mysql
secret:
secretName: {{ printf "%s-%s" .Release.Name "mysql" | trunc 63 | trimSuffix "-" }}
- name: redis
secret:
secretName: {{ printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" }}
serviceAccountName: {{ template "scdf.serviceAccountName" . }}
@@ -0,0 +1,44 @@
{{- if .Values.rbac.create -}}
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ template "scdf.fullname" . }}
labels:
app: {{ template "scdf.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
rules:
- apiGroups: [""]
resources: ["services", "pods", "replicationcontrollers", "persistentvolumeclaims"]
verbs: ["get", "list", "watch", "create", "delete", "update"]
- apiGroups: [""]
resources: ["configmaps", "secrets"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["statefulsets", "deployments", "replicasets"]
verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
- apiGroups: ["extensions"]
resources: ["deployments", "replicasets", "jobs"]
verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
- apiGroups: ["batch"]
resources: ["cronjobs"]
verbs: ["create", "delete", "get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ template "scdf.fullname" . }}
labels:
app: {{ template "scdf.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
roleRef:
kind: Role
name: {{ template "scdf.fullname" . }}
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: {{ template "scdf.serviceAccountName" . }}
{{- end -}}
@@ -0,0 +1,21 @@
kind: Service
apiVersion: v1
metadata:
name: {{ template "scdf.fullname" . }}-server
labels:
app: {{ template "scdf.name" . }}
component: server
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
# If you are running k8s on a local dev box, you can use type NodePort instead
type: {{ .Values.server.service.type }}
ports:
- port: {{ .Values.server.service.externalPort }}
targetPort: http
name: http
selector:
app: {{ template "scdf.name" . }}
component: server
release: {{ .Release.Name }}
@@ -0,0 +1,11 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "scdf.serviceAccountName" . }}
labels:
app: {{ template "scdf.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
{{- end -}}
@@ -0,0 +1,12 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "scdf.fullname" . }}-skipper
labels:
app: {{ template "scdf.name" . }}
component: skipper
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data:
spring.application.json: '{"spring.cloud.skipper.server.enableLocalPlatform" : false, "spring.cloud.skipper.server.platform.kubernetes.accounts.{{ .Values.skipper.platformName }}.environmentVariables" : "SPRING_RABBITMQ_HOST=${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_HOST},SPRING_RABBITMQ_PORT=${{ printf "{" }}{{ template "scdf.envrelease" . }}_RABBITMQ_SERVICE_PORT_AMQP},SPRING_RABBITMQ_USERNAME={{ .Values.rabbitmq.rabbitmqUsername }},SPRING_RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}","spring.cloud.skipper.server.platform.kubernetes.accounts.{{ .Values.skipper.platformName }}.memory" : "{{ .Values.deployer.resourceLimits.memory }}","spring.cloud.skipper.server.platform.kubernetes.accounts.{{ .Values.skipper.platformName }}.cpu" : "{{ .Values.deployer.resourceLimits.cpu }}","spring.cloud.skipper.server.platform.kubernetes.accounts.{{ .Values.skipper.platformName }}.createDeployment" : true}'
@@ -0,0 +1,84 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "scdf.fullname" . }}-skipper
labels:
app: {{ template "scdf.name" . }}
component: skipper
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
selector:
matchLabels:
app: {{ template "scdf.name" . }}
component: skipper
release: "{{ .Release.Name }}"
replicas: 1
template:
metadata:
labels:
app: {{ template "scdf.name" . }}
component: skipper
release: "{{ .Release.Name }}"
spec:
containers:
- name: {{ template "scdf.fullname" . }}-skipper
image: {{ .Values.skipper.image }}:{{ .Values.skipper.version }}
imagePullPolicy: {{ .Values.skipper.imagePullPolicy }}
ports:
- containerPort: 7577
name: http
resources:
{{ toYaml .Values.skipper.resources | indent 10 }}
livenessProbe:
httpGet:
path: /api/about
port: http
initialDelaySeconds: 90
periodSeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /api/about
port: http
initialDelaySeconds: 30
periodSeconds: 15
timeoutSeconds: 5
env:
- name: SPRING_DATASOURCE_URL
value: 'jdbc:mysql://${{ printf "{" }}{{ template "scdf.envrelease" . }}_MYSQL_SERVICE_HOST}:3306/skipper'
- name: SPRING_DATASOURCE_USERNAME
value: root
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-%s" .Release.Name "mysql" | trunc 63 | trimSuffix "-" }}
key: mysql-root-password
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
value: org.mariadb.jdbc.Driver
- name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-%s" .Release.Name "rabbitmq" | trunc 63 | trimSuffix "-" }}
key: rabbitmq-password
- name: SPRING_APPLICATION_JSON
valueFrom:
configMapKeyRef:
name: {{ template "scdf.fullname" . }}-skipper
key: spring.application.json
value:
initContainers:
- name: init-mysql-wait
image: busybox
command: ['sh', '-c', 'until nc -w3 -z {{ printf "%s-%s" .Release.Name "mysql" | trunc 63 | trimSuffix "-" }} 3306; do echo waiting for mysql; sleep 3; done;']
- name: init-mysql-database
image: mysql:5.7.14
env:
- name: MYSQL_PWD
valueFrom:
secretKeyRef:
name: {{ printf "%s-%s" .Release.Name "mysql" | trunc 63 | trimSuffix "-" }}
key: mysql-root-password
command: ['sh', '-c', 'mysql -h {{ printf "%s-%s" .Release.Name "mysql" | trunc 63 | trimSuffix "-" }} -u root -e "CREATE DATABASE IF NOT EXISTS skipper;"']
serviceAccountName: {{ template "scdf.serviceAccountName" . }}
@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "scdf.fullname" . }}-skipper
labels:
app: {{ template "scdf.name" . }}
component: skipper
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.skipper.service.type }}
ports:
- port: 80
targetPort: http
name: http
selector:
app: {{ template "scdf.name" . }}
component: skipper
release: {{ .Release.Name }}
+79
View File
@@ -0,0 +1,79 @@
# Default values for spring-cloud-data-flow.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
dataflowUsername: user
dataflowPassword: password
dataflowRoles: ROLE_VIEW, ROLE_CREATE
dataflowAdminUsername: admin
dataflowAdminPassword: admin
dataflowAdminRoles: ROLE_MANAGE, ROLE_VIEW
rbac:
# Specifies whether RBAC resources should be created
create: true
serviceAccount:
# Specifies whether a service account should be created
create: true
# The name of the service account to use.
# If not set and create is true, a name is generated using the serviceAccountName template
name:
server:
image: springcloud/spring-cloud-dataflow-server-kubernetes
version: 1.7.0.RELEASE
imagePullPolicy: IfNotPresent
service:
type: LoadBalancer
externalPort: 80
resources: {}
# limits:
# cpu: 1.0
# memory: 2048Mi
# requests:
# cpu: 0.5
# memory: 640Mi
skipper:
image: springcloud/spring-cloud-skipper-server
version: 1.1.0.RELEASE
imagePullPolicy: IfNotPresent
platformName: minikube
service:
type: ClusterIP
resources: {}
# limits:
# cpu: 1.0
# memory: 1024Mi
# requests:
# cpu: 0.5
# memory: 640Mi
metrics:
image: springcloud/metrics-collector-rabbit
version: 2.0.0.RELEASE
imagePullPolicy: IfNotPresent
service:
type: ClusterIP
resources: {}
# limits:
# cpu: 1.0
# memory: 1024Mi
# requests:
# cpu: 0.5
# memory: 640Mi
deployer:
resourceLimits:
cpu: 500m
memory: 1024Mi
readinessProbe:
initialDelaySeconds: 120
livenessProbe:
initialDelaySeconds: 90
rabbitmq:
rabbitmqUsername: user
mysql:
mysqlDatabase: dataflow