From 1a3a3557a080ba7ee7d1022d9a3dd0e165779ab2 Mon Sep 17 00:00:00 2001 From: vagrant Date: Sat, 10 Mar 2018 23:56:32 +0000 Subject: Update from using hbase to using cassandra Also update resources and traversal to remove chef MK: Addressing the -1 statefulset comment Issue-ID: AAI-33 Change-Id: Ieee819703764fdda727f17d4e9be43084886828c Signed-off-by: Kajur, Harish vk250x@att.com Signed-off-by: Mandeep Khinda --- kubernetes/aai/charts/aai-cassandra/.helmignore | 21 ++++ kubernetes/aai/charts/aai-cassandra/Chart.yaml | 4 + .../charts/aai-cassandra/templates/service.yaml | 27 +++++ .../aai-cassandra/templates/statefulset.yaml | 115 +++++++++++++++++++++ .../charts/aai-cassandra/templates/volumes.yaml | 25 +++++ kubernetes/aai/charts/aai-cassandra/values.yaml | 106 +++++++++++++++++++ 6 files changed, 298 insertions(+) create mode 100644 kubernetes/aai/charts/aai-cassandra/.helmignore create mode 100644 kubernetes/aai/charts/aai-cassandra/Chart.yaml create mode 100644 kubernetes/aai/charts/aai-cassandra/templates/service.yaml create mode 100644 kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml create mode 100644 kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml create mode 100644 kubernetes/aai/charts/aai-cassandra/values.yaml (limited to 'kubernetes/aai/charts/aai-cassandra') diff --git a/kubernetes/aai/charts/aai-cassandra/.helmignore b/kubernetes/aai/charts/aai-cassandra/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/.helmignore @@ -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 diff --git a/kubernetes/aai/charts/aai-cassandra/Chart.yaml b/kubernetes/aai/charts/aai-cassandra/Chart.yaml new file mode 100644 index 0000000000..17694cbfff --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI Cassandra +name: aai-cassandra +version: 2.0.0 diff --git a/kubernetes/aai/charts/aai-cassandra/templates/service.yaml b/kubernetes/aai/charts/aai-cassandra/templates/service.yaml new file mode 100644 index 0000000000..a4557fe187 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/service.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ template "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + clusterIP: None + type: {{ .Values.service.type }} + ports: + - name: cql + port: {{ default 9042 .Values.config.ports.cql }} + targetPort: {{ default 9042 .Values.config.ports.cql }} + - name: thrift + port: {{ default 9160 .Values.config.ports.thrift }} + targetPort: {{ default 9160 .Values.config.ports.thrift }} + {{- if .Values.config.ports.agent }} + - name: agent + port: {{ .Values.config.ports.agent }} + targetPort: {{ .Values.config.ports.agent }} + {{- end }} + selector: + app: {{ template "common.fullname" . }} diff --git a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml new file mode 100644 index 0000000000..aa3482d293 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml @@ -0,0 +1,115 @@ +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + serviceName: {{ include "common.fullname" . }} + replicas: {{ .Values.replicaCount }} + podManagementPolicy: {{ .Values.podManagementPolicy }} + updateStrategy: + type: {{ .Values.updateStrategy.type }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + - containerPort: {{ .Values.service.internalPort3 }} + - containerPort: {{ .Values.service.internalPort4 }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + exec: + command: + - /bin/bash + - -c + - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }' + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + exec: + command: + - /bin/bash + - -c + - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }' + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + timeoutSeconds: {{ .Values.liveness.periodSeconds }} + lifecycle: + preStop: + exec: + command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] + env: + {{- $seed_size := default 1 .Values.replicaCount | int -}} + {{- $global := . }} + - name: MAX_HEAP_SIZE + value: {{ .Values.config.heap.max }} + - name: HEAP_NEWSIZE + value: {{ .Values.config.heap.min }} + - name: CASSANDRA_SEEDS + value: "{{- range $i, $e := until $seed_size }}{{ template "common.fullname" $global }}-{{ $i }},{{- end }}" + - name: JVM_OPTS + value: {{ .Values.config.jvmOpts | quote }} + - name: CASSANDRA_CLUSTER_NAME + value: {{ .Values.config.clusterName | quote }} + - name: CASSANDRA_DC + value: {{ .Values.config.dataCenter | quote }} + - name: CASSANDRA_RACK + value: {{ .Values.config.rackName | quote }} + - name: CASSANDRA_AUTO_BOOTSTRAP + value: {{ .Values.config.autoBootstrap | quote }} + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + volumeMounts: + - name: cassandra-data + mountPath: /var/lib/cassandra/data + resources: +{{ toYaml .Values.resources | indent 10 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + {{- if not .Values.persistence.enabled }} + - name: cassandra-data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: cassandra-data + labels: + app: {{ template "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + annotations: + volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass }} + spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- end }} diff --git a/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml b/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml new file mode 100644 index 0000000000..0e1a3dfc26 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml @@ -0,0 +1,25 @@ +#{{ if .Values.persistence.enabled }} +{{- $root := . -}} +{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }} +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ $root.Values.service.name }}-{{ $i }} + namespace: {{ $root.Release.Namespace }} + labels: + type: {{ $root.Values.persistence.storageType }} + app: {{ $root.Values.service.name }} + chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }} + release: {{ $root.Release.Name }} + heritage: {{ $root.Release.Service }} +spec: + capacity: + storage: {{ $root.Values.persistence.size }} + accessModes: + - {{ $root.Values.persistence.accessMode }} + hostPath: + path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }} + persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }} +{{ end }} +#{{ end }} \ No newline at end of file diff --git a/kubernetes/aai/charts/aai-cassandra/values.yaml b/kubernetes/aai/charts/aai-cassandra/values.yaml new file mode 100644 index 0000000000..884bc396a8 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/values.yaml @@ -0,0 +1,106 @@ +# Default values for cassandra. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + +# application image +dockerhubRepository: registry.hub.docker.com +image: cassandra:2.1 +pullPolicy: Always + +# application configuration +config: + heap: + max: 512M + min: 100M + jvmOpts: -Dcassandra.consistent.rangemovement=false + clusterName: aai-cluster + dataCenter: Pod lab + rackName: Rack1 + autoBootstrap: true + ports: + cql: 9042 + thrift: 9160 + # If a JVM Agent is in place + # agent: 61621 + +# default number of instances +replicaCount: 3 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: aai-cassandra + internalPort: 7000 + internalPort2: 7001 + internalPort3: 7199 + internalPort4: 9042 + +podManagementPolicy: OrderedReady +updateStrategy: + type: OnDelete + +ingress: + enabled: false + +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + ## storageClass: "-" + accessMode: ReadWriteOnce + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: aai/cassandra + storageType: local + storageClass: "" + + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi -- cgit 1.2.3-korg