diff options
Diffstat (limited to 'kubernetes')
162 files changed, 3894 insertions, 1849 deletions
diff --git a/kubernetes/Makefile b/kubernetes/Makefile index 7ba5ba934a..4962c825d8 100644 --- a/kubernetes/Makefile +++ b/kubernetes/Makefile @@ -47,17 +47,23 @@ lint-%: dep-% package-%: lint-% @mkdir -p $(PACKAGE_DIR) @if [ -f $*/Chart.yaml ]; then helm package -d $(PACKAGE_DIR) $*; fi + @helm repo index $(PACKAGE_DIR) clean: @rm -f */requirements.lock @rm -f *tgz */charts/*tgz - @rm -rf $(PACKAGE_DIR) + @rm -rf $(PACKAGE_DIR)/* -# start up a local helm repo to serve up +# start up a local helm repo to serve up helm chart packages repo: @mkdir -p $(PACKAGE_DIR) @helm serve --repo-path $(PACKAGE_DIR) & @helm repo index $(PACKAGE_DIR) @helm repo add local http://127.0.0.1:8879 + +# stop local helm repo +repo-stop: + @pkill helm + @helm repo remove local %: @: diff --git a/kubernetes/aai/.helmignore b/kubernetes/aai/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/.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/Chart.yaml b/kubernetes/aai/Chart.yaml index 49b12ec0a3..5b36e11e0a 100644 --- a/kubernetes/aai/Chart.yaml +++ b/kubernetes/aai/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP Active and Available Inventory name: aai -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/aai/charts/aai-data-router/.helmignore b/kubernetes/aai/charts/aai-data-router/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/.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-data-router/Chart.yaml b/kubernetes/aai/charts/aai-data-router/Chart.yaml new file mode 100644 index 0000000000..59d3c77d2e --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI Data-Router +name: aai-data-router +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/data-router/appconfig/auth/client-cert-onap.p12 b/kubernetes/aai/charts/aai-data-router/resources/config/auth/client-cert-onap.p12 Binary files differindex dbf4fcacec..dbf4fcacec 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/auth/client-cert-onap.p12 +++ b/kubernetes/aai/charts/aai-data-router/resources/config/auth/client-cert-onap.p12 diff --git a/kubernetes/aai/resources/config/data-router/appconfig/auth/data-router_policy.json b/kubernetes/aai/charts/aai-data-router/resources/config/auth/data-router_policy.json index 1b4a6b0868..1b4a6b0868 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/auth/data-router_policy.json +++ b/kubernetes/aai/charts/aai-data-router/resources/config/auth/data-router_policy.json diff --git a/kubernetes/aai/resources/config/data-router/appconfig/auth/tomcat_keystore b/kubernetes/aai/charts/aai-data-router/resources/config/auth/tomcat_keystore Binary files differindex 9eec841aa2..9eec841aa2 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/auth/tomcat_keystore +++ b/kubernetes/aai/charts/aai-data-router/resources/config/auth/tomcat_keystore diff --git a/kubernetes/aai/resources/config/data-router/appconfig/data-router.properties b/kubernetes/aai/charts/aai-data-router/resources/config/data-router.properties index e69de29bb2..e69de29bb2 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/data-router.properties +++ b/kubernetes/aai/charts/aai-data-router/resources/config/data-router.properties diff --git a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v10.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v10.xml index 7eddd10179..7eddd10179 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v10.xml +++ b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v10.xml diff --git a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v11.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v11.xml index ecf163e097..ecf163e097 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v11.xml +++ b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v11.xml diff --git a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v8.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v8.xml index 3ed2ea531f..3ed2ea531f 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v8.xml +++ b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v8.xml diff --git a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v9.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v9.xml index 87a3d656e5..87a3d656e5 100644 --- a/kubernetes/aai/resources/config/data-router/appconfig/model/aai_oxm_v9.xml +++ b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v9.xml diff --git a/kubernetes/aai/resources/config/data-router/dynamic/conf/entity-event-policy.xml b/kubernetes/aai/charts/aai-data-router/resources/dynamic/conf/entity-event-policy.xml index e995053f12..e995053f12 100644 --- a/kubernetes/aai/resources/config/data-router/dynamic/conf/entity-event-policy.xml +++ b/kubernetes/aai/charts/aai-data-router/resources/dynamic/conf/entity-event-policy.xml diff --git a/kubernetes/aai/resources/config/data-router/dynamic/routes/entity-event.route b/kubernetes/aai/charts/aai-data-router/resources/dynamic/routes/entity-event.route index 293688ecd4..7b4e902313 100644 --- a/kubernetes/aai/resources/config/data-router/dynamic/routes/entity-event.route +++ b/kubernetes/aai/charts/aai-data-router/resources/dynamic/routes/entity-event.route @@ -1,4 +1,4 @@ <route xmlns="http://camel.apache.org/schema/spring" trace="true"> - <from uri="event-bus:mybus/?eventTopic=AAI-EVENT&groupName=datarouter&groupId=datarouter&url=http://dmaap.{{.Values.nsPrefix}}:3904"/> + <from uri="event-bus:mybus/?eventTopic=AAI-EVENT&groupName=datarouter&groupId=datarouter&url=http://dmaap.{{.Release.Namespace}}:3904"/> <to uri="bean:entityEventPolicy?method=process"/> </route> diff --git a/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml b/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml new file mode 100644 index 0000000000..a8793acd9f --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml @@ -0,0 +1,48 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-prop + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/data-router.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-model-v8 + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v8.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-model-v9 + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v9.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-model-v10 + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v10.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-model-v11 + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v11.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-dynamic + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/dynamic/routes/entity-event.route").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/dynamic/conf/entity-event-policy.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml b/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml new file mode 100644 index 0000000000..79bcff33eb --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml @@ -0,0 +1,154 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + initContainers: + - command: + - /bin/sh + - -c + - | + mkdir -p /logroot/data-router/logs + chmod -R 777 /logroot/data-router/logs + chown -R root:root /logroot + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + securityContext: + privileged: true + image: {{ .Values.global.dockerhubRepository | default .Values.dockerhubRepository }}/{{ .Values.global.busyboxImage | default .Values.busyboxImage }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: init-sysctl + volumeMounts: + - name: {{ include "common.fullname" . }}-logs + mountPath: /logroot/ + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: SERVICE_BEANS + value: /opt/app/data-router/dynamic/conf + - name: CONFIG_HOME + value: /opt/app/data-router/config/ + - name: KEY_STORE_PASSWORD + value: {{ .Values.config.keyStorePassword }} + - name: DYNAMIC_ROUTES + value: /opt/app/data-router/dynamic/routes + - name: KEY_MANAGER_PASSWORD + value: {{ .Values.config.keyManagerPassword }} + - name: PATH + value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + - name: JAVA_HOME + value: usr/lib/jvm/java-8-openjdk-amd64 + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/data-router/config/model/aai_oxm_v8.xml + subPath: aai_oxm_v8.xml + name: {{ include "common.fullname" . }}-model-v8 + - mountPath: /opt/app/data-router/config/model/aai_oxm_v9.xml + subPath: aai_oxm_v9.xml + name: {{ include "common.fullname" . }}-model-v9 + - mountPath: /opt/app/data-router/config/model/aai_oxm_v10.xml + subPath: aai_oxm_v10.xml + name: {{ include "common.fullname" . }}-model-v10 + - mountPath: /opt/app/data-router/config/model/aai_oxm_v11.xml + subPath: aai_oxm_v11.xml + name: {{ include "common.fullname" . }}-model-v11 + - mountPath: /opt/app/data-router/config/auth + name: {{ include "common.fullname" . }}-auth + - mountPath: /opt/app/data-router/config/data-router.properties + name: {{ include "common.fullname" . }}-properties + subPath: data-router.properties + - mountPath: /opt/app/data-router/dynamic/routes/entity-event.route + subPath: entity-event.route + name: {{ include "common.fullname" . }}-dynamic-route + - mountPath: /opt/app/data-router/dynamic/conf/entity-event-policy.xml + subPath: entity-event-policy.xml + name: {{ include "common.fullname" . }}-dynamic-policy + - mountPath: /logs/ + name: {{ include "common.fullname" . }}-logs + ports: + - containerPort: {{ .Values.service.internalPort }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-model-v8 + configMap: + name: {{ include "common.fullname" . }}-model-v8 + - name: {{ include "common.fullname" . }}-model-v9 + configMap: + name: {{ include "common.fullname" . }}-model-v9 + - name: {{ include "common.fullname" . }}-model-v10 + configMap: + name: {{ include "common.fullname" . }}-model-v10 + - name: {{ include "common.fullname" . }}-model-v11 + configMap: + name: {{ include "common.fullname" . }}-model-v11 + - name: {{ include "common.fullname" . }}-auth + secret: + secretName: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-properties + configMap: + name: {{ include "common.fullname" . }}-prop + - name: {{ include "common.fullname" . }}-dynamic-route + configMap: + name: {{ include "common.fullname" . }}-dynamic + - name: {{ include "common.fullname" . }}-dynamic-policy + configMap: + name: {{ include "common.fullname" . }}-dynamic + - name: {{ include "common.fullname" . }}-logs + hostPath: + path: {{ .Values.persistence.mountPath }}/{{ include "common.namespace" . }}/{{ .Values.persistence.mountSubPath }} + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-data-router/templates/secret.yaml b/kubernetes/aai/charts/aai-data-router/templates/secret.yaml new file mode 100644 index 0000000000..69bd3f86de --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/templates/secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-data-router/values.yaml b/kubernetes/aai/charts/aai-data-router/values.yaml new file mode 100644 index 0000000000..3957df156d --- /dev/null +++ b/kubernetes/aai/charts/aai-data-router/values.yaml @@ -0,0 +1,86 @@ +# Default values for data-router. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + +# application image +repository: nexus3.onap.org:10001 +image: onap/data-router:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: + keyStorePassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + keyManagerPassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + + +# default number of instances +replicaCount: 1 + +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: + name: aai-data-router + internalPort: 9502 + +ingress: + enabled: false + +persistence: + enabled: true + + ## 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: <storageClass> + ## 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: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: aai/data-router/logs + +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 diff --git a/kubernetes/aai/charts/aai-elasticsearch/.helmignore b/kubernetes/aai/charts/aai-elasticsearch/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-elasticsearch/.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-elasticsearch/Chart.yaml b/kubernetes/aai/charts/aai-elasticsearch/Chart.yaml new file mode 100644 index 0000000000..348e4fa8cd --- /dev/null +++ b/kubernetes/aai/charts/aai-elasticsearch/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI elasticsearch +name: aai-elasticsearch +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/elasticsearch/config/elasticsearch.yml b/kubernetes/aai/charts/aai-elasticsearch/resources/config/elasticsearch.yml index 21e29df84b..822ae32f10 100644 --- a/kubernetes/aai/resources/config/elasticsearch/config/elasticsearch.yml +++ b/kubernetes/aai/charts/aai-elasticsearch/resources/config/elasticsearch.yml @@ -155,14 +155,14 @@ network.bind_host: 0.0.0.0 # Set a custom port for the node to node communication (9300 by default): -transport.tcp.port: 8443 +transport.tcp.port: {{ .Values.config.tcpPort }} # Enable compression for all communication between nodes (disabled by default): transport.tcp.compress: false # Set a custom port to listen for HTTP traffic: # http.port: 9200 -http.port: 9200 +http.port: {{ .Values.service.internalPort }} # Set a custom allowed content length: # http.max_content_length: 100mb diff --git a/kubernetes/aai/templates/elasticsearch-configmap.yaml b/kubernetes/aai/charts/aai-elasticsearch/templates/configmap.yaml index e3225be8aa..991a06abcf 100644 --- a/kubernetes/aai/templates/elasticsearch-configmap.yaml +++ b/kubernetes/aai/charts/aai-elasticsearch/templates/configmap.yaml @@ -16,8 +16,8 @@ apiVersion: v1 kind: ConfigMap metadata: - name: aai-elasticsearch-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/elasticsearch/config/elasticsearch.yml").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/elasticsearch.yml").AsConfig . | indent 2 }} #{{ end }} diff --git a/kubernetes/aai/charts/aai-elasticsearch/templates/deployment.yaml b/kubernetes/aai/charts/aai-elasticsearch/templates/deployment.yaml new file mode 100644 index 0000000000..6792d4cd54 --- /dev/null +++ b/kubernetes/aai/charts/aai-elasticsearch/templates/deployment.yaml @@ -0,0 +1,96 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + name: {{ include "common.name" . }} + spec: + initContainers: + - command: + - /bin/sh + - -c + - | + mkdir -p /logroot/elasticsearch/es-data + chmod -R 777 /logroot/elasticsearch/es-data + chown -R root:root /logroot + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + securityContext: + privileged: true + image: {{ .Values.global.dockerhubRepository | default .Values.dockerhubRepository }}/{{ .Values.global.busyboxImage | default .Values.busyboxImage }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: init-sysctl + volumeMounts: + - name: elasticsearch-data + mountPath: /logroot/ + hostname: {{ include "common.name" . }} + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.global.dockerhubRepository | default .Values.dockerhubRepository }}/{{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - name: localtime + mountPath: /etc/localtime + readOnly: true + - name: elasticsearch-config + subPath: elasticsearch.yml + mountPath: /usr/share/elasticsearch/config/elasticsearch.yml + - name: elasticsearch-data + mountPath: /usr/share/elasticsearch/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 + - name: elasticsearch-config + configMap: + name: {{ include "common.fullname" . }} + - name: elasticsearch-data + hostPath: + path: {{ .Values.persistence.mountPath }}/{{ include "common.namespace" . }}/{{ .Values.persistence.mountSubPath }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-elasticsearch/templates/service.yaml b/kubernetes/aai/charts/aai-elasticsearch/templates/service.yaml new file mode 100644 index 0000000000..84548eda86 --- /dev/null +++ b/kubernetes/aai/charts/aai-elasticsearch/templates/service.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.fullname" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-elasticsearch/values.yaml b/kubernetes/aai/charts/aai-elasticsearch/values.yaml new file mode 100644 index 0000000000..af7fd3d3ed --- /dev/null +++ b/kubernetes/aai/charts/aai-elasticsearch/values.yaml @@ -0,0 +1,84 @@ +# Default values for elasticsearch. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +# application image +dockerhubRepository: docker.io +image: elasticsearch:2.4.1 +pullPolicy: Always + +# application configuration +config: + tcpPort: 8443 + + +# default number of instances +replicaCount: 1 + +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-elasticsearch + internalPort: 9200 + +ingress: + enabled: false + +persistence: + enabled: true + + ## 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: <storageClass> + ## 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: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: aai/elasticsearch/data + +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 diff --git a/kubernetes/aai/charts/aai-hbase/.helmignore b/kubernetes/aai/charts/aai-hbase/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-hbase/.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-hbase/Chart.yaml b/kubernetes/aai/charts/aai-hbase/Chart.yaml new file mode 100644 index 0000000000..eaf6bbdb74 --- /dev/null +++ b/kubernetes/aai/charts/aai-hbase/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI hbase +name: aai-hbase +version: 2.0.0 diff --git a/kubernetes/aai/charts/aai-hbase/templates/deployment.yaml b/kubernetes/aai/charts/aai-hbase/templates/deployment.yaml new file mode 100644 index 0000000000..4c92dfd4a8 --- /dev/null +++ b/kubernetes/aai/charts/aai-hbase/templates/deployment.yaml @@ -0,0 +1,72 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + hostname: aai-hbase + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.global.dockerhubRepository | default .Values.dockerhubRepository }}/{{ .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 }} + - containerPort: {{ .Values.service.internalPort5 }} + - containerPort: {{ .Values.service.internalPort6 }} + - containerPort: {{ .Values.service.internalPort7 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - name: hbase-data + mountPath: /tmp + - name: localtime + mountPath: /etc/localtime + readOnly: true + 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: hbase-data + hostPath: + path: {{ .Values.persistence.mountPath }}/{{ include "common.namespace" . }}/{{ .Values.persistence.mountSubPath }} + - name: localtime + hostPath: + path: /etc/localtime + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-hbase/templates/service.yaml b/kubernetes/aai/charts/aai-hbase/templates/service.yaml new file mode 100644 index 0000000000..c503e6ca6a --- /dev/null +++ b/kubernetes/aai/charts/aai-hbase/templates/service.yaml @@ -0,0 +1,55 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name }}2 + - port: {{ .Values.service.internalPor3t }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }} + name: {{ .Values.service.name }}3 + - port: {{ .Values.service.internalPort4 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort4 }} + name: {{ .Values.service.name }}4 + - port: {{ .Values.service.internalPort5 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort5 }} + name: {{ .Values.service.name }}5 + - port: {{ .Values.service.internalPort6 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort6 }} + name: {{ .Values.service.name }}6 + - port: {{ .Values.service.internalPort7 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort7 }} + name: {{ .Values.service.name }}7 + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + - port: {{ .Values.service.internalPort3 }} + name: {{ .Values.service.name }}3 + - port: {{ .Values.service.internalPort4 }} + name: {{ .Values.service.name }}4 + - port: {{ .Values.service.internalPort5 }} + name: {{ .Values.service.name }}5 + - port: {{ .Values.service.internalPort6 }} + name: {{ .Values.service.name }}6 + - port: {{ .Values.service.internalPort7 }} + name: {{ .Values.service.name }}7 + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-hbase/values.yaml b/kubernetes/aai/charts/aai-hbase/values.yaml new file mode 100644 index 0000000000..f1d0c33eff --- /dev/null +++ b/kubernetes/aai/charts/aai-hbase/values.yaml @@ -0,0 +1,92 @@ +# Default values for hbase. +# 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: aaionap/hbase:1.2.0 +pullPolicy: Always + +# application configuration +config: {} + + +# default number of instances +replicaCount: 1 + +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-hbase + internalPort: 2181 + internalPort2: 8080 + internalPort3: 8085 + internalPort4: 9090 + internalPort5: 16000 + internalPort6: 16010 + internalPort7: 16201 + + +ingress: + enabled: false + +persistence: + enabled: true + + ## 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: <storageClass> + ## 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: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: aai/hbase + + +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 diff --git a/kubernetes/aai/charts/aai-modelloader/.helmignore b/kubernetes/aai/charts/aai-modelloader/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/.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-modelloader/Chart.yaml b/kubernetes/aai/charts/aai-modelloader/Chart.yaml new file mode 100644 index 0000000000..33558f24b3 --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI modelloader +name: aai-modelloader +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/model-loader/appconfig/auth/aai-os-cert.p12 b/kubernetes/aai/charts/aai-modelloader/resources/config/auth/aai-os-cert.p12 Binary files differindex ee57120fa0..ee57120fa0 100644 --- a/kubernetes/aai/resources/config/model-loader/appconfig/auth/aai-os-cert.p12 +++ b/kubernetes/aai/charts/aai-modelloader/resources/config/auth/aai-os-cert.p12 diff --git a/kubernetes/aai/resources/config/log/model-loader/logback.xml b/kubernetes/aai/charts/aai-modelloader/resources/config/log/logback.xml index d512d3b91c..d512d3b91c 100644 --- a/kubernetes/aai/resources/config/log/model-loader/logback.xml +++ b/kubernetes/aai/charts/aai-modelloader/resources/config/log/logback.xml diff --git a/kubernetes/aai/resources/config/model-loader/appconfig/model-loader.properties b/kubernetes/aai/charts/aai-modelloader/resources/config/model-loader.properties index 5d61fbaaae..5604c1f877 100644 --- a/kubernetes/aai/resources/config/model-loader/appconfig/model-loader.properties +++ b/kubernetes/aai/charts/aai-modelloader/resources/config/model-loader.properties @@ -1,6 +1,6 @@ # Model Loader Distribution Client Configuration ml.distribution.ACTIVE_SERVER_TLS_AUTH=false -ml.distribution.ASDC_ADDRESS=sdc-be.{{.Values.nsPrefix}}:8443 +ml.distribution.ASDC_ADDRESS=sdc-be.{{.Release.Namespace}}:8443 ml.distribution.CONSUMER_GROUP=aai-ml-group ml.distribution.CONSUMER_ID=aai-ml ml.distribution.ENVIRONMENT_NAME=AUTO @@ -13,7 +13,7 @@ ml.distribution.USER=aai ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG # Model Loader AAI REST Client Configuration -ml.aai.BASE_URL=https://aai-service.{{.Values.nsPrefix}}:8443 +ml.aai.BASE_URL=https://aai.{{.Release.Namespace}}:8443 ml.aai.MODEL_URL=/aai/v10/service-design-and-creation/models/model/ ml.aai.NAMED_QUERY_URL=/aai/v10/service-design-and-creation/named-queries/named-query/ ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images diff --git a/kubernetes/aai/charts/aai-modelloader/templates/configmap.yaml b/kubernetes/aai/charts/aai-modelloader/templates/configmap.yaml new file mode 100644 index 0000000000..8b63cfa048 --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/templates/configmap.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-prop + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model-loader.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-modelloader/templates/deployment.yaml b/kubernetes/aai/charts/aai-modelloader/templates/deployment.yaml new file mode 100644 index 0000000000..38ebe7689f --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/templates/deployment.yaml @@ -0,0 +1,97 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: CONFIG_HOME + value: /opt/app/model-loader/config/ + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/model-loader/config/model-loader.properties + subPath: model-loader.properties + name: {{ include "common.fullname" . }}-prop-config + - mountPath: /opt/app/model-loader/config/auth/ + name: {{ include "common.fullname" . }}-auth-config + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /opt/app/model-loader/bundleconfig/etc/logback.xml + name: {{ include "common.fullname" . }}-log-conf + subPath: logback.xml + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + name: filebeat-conf + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /usr/share/filebeat/data + name: aai-filebeat + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-prop-config + configMap: + name: {{ include "common.fullname" . }}-prop + - name: {{ include "common.fullname" . }}-auth-config + secret: + secretName: {{ include "common.fullname" . }} + - name: filebeat-conf + configMap: + name: aai-filebeat + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: aai-filebeat + emptyDir: {} + - name: {{ include "common.fullname" . }}-log-conf + configMap: + name: {{ include "common.fullname" . }}-log + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-modelloader/templates/secret.yaml b/kubernetes/aai/charts/aai-modelloader/templates/secret.yaml new file mode 100644 index 0000000000..69bd3f86de --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/templates/secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-modelloader/templates/service.yaml b/kubernetes/aai/charts/aai-modelloader/templates/service.yaml new file mode 100644 index 0000000000..bd59edb94f --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/templates/service.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name }}2 + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/aai/charts/aai-modelloader/values.yaml b/kubernetes/aai/charts/aai-modelloader/values.yaml new file mode 100644 index 0000000000..f44d5247ab --- /dev/null +++ b/kubernetes/aai/charts/aai-modelloader/values.yaml @@ -0,0 +1,67 @@ +# Default values for modelloader. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + +# application image +repository: nexus3.onap.org:10001 +image: onap/model-loader:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +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: NodePort + name: aai-modelloader + externalPort: 8080 + internalPort: 8080 + nodePort: 10 + externalPort2: 8443 + internalPort2: 8443 + nodePort2: 29 + +ingress: + enabled: false + +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 diff --git a/kubernetes/aai/charts/aai-resources/.helmignore b/kubernetes/aai/charts/aai-resources/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/.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-resources/Chart.yaml b/kubernetes/aai/charts/aai-resources/Chart.yaml new file mode 100644 index 0000000000..3ab5c1a486 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI resources +name: aai-resources +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/log/resources/logback.xml b/kubernetes/aai/charts/aai-resources/resources/config/log/logback.xml index 6cfc293f46..6cfc293f46 100644 --- a/kubernetes/aai/resources/config/log/resources/logback.xml +++ b/kubernetes/aai/charts/aai-resources/resources/config/log/logback.xml diff --git a/kubernetes/aai/charts/aai-resources/templates/configmap.yaml b/kubernetes/aai/charts/aai-resources/templates/configmap.yaml new file mode 100644 index 0000000000..97c720a6ab --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/templates/aai-resources-deployment.yaml b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml index 332b89045b..6aef4475f7 100644 --- a/kubernetes/aai/templates/aai-resources-deployment.yaml +++ b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml @@ -12,22 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiResources }} apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: aai-resources - namespace: "{{ .Values.nsPrefix }}" + 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: - replicas: {{ .Values.aaiResourceReplicas }} + replicas: {{ .Values.replicaCount }} selector: matchLabels: - app: aai-resources + app: {{ include "common.name" . }} template: metadata: labels: - app: aai-resources - name: aai-resources + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} annotations: msb.onap.org/service-info: '[ { @@ -407,7 +412,7 @@ spec: "enable_ssl": true, "lb_policy":"ip_hash", "visualRange": "1" - } + } ]' spec: initContainers: @@ -415,27 +420,27 @@ spec: - /root/ready.py args: - --container-name - - hbase + - aai-hbase env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: aai-resources-readiness + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness containers: - - name: aai-resources - image: "{{ .Values.image.aaiResourcesImage }}:{{ .Values.image.aaiResourcesVersion}}" - imagePullPolicy: {{ .Values.pullPolicy }} + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - name: CHEF_BRANCH value: master - name: AAI_CHEF_ENV value: simpledemo - name: AAI_CORE_VERSION - value: {{ .Values.aaicoreversion }} + value: {{ .Values.config.aaicoreversion }} - name: AAI_CHEF_LOC value: /var/chef/aai-data/environments - name: CHEF_GIT_URL @@ -457,15 +462,37 @@ spec: name: aai-resources-log-conf subPath: logback.xml ports: - - containerPort: 8447 + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} readinessProbe: tcpSocket: - port: 8447 - initialDelaySeconds: 5 - periodSeconds: 10 - - name: filebeat-onap-aai-resources - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + 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 }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} volumeMounts: - mountPath: /usr/share/filebeat/filebeat.yml subPath: filebeat.yml @@ -474,28 +501,27 @@ spec: name: aai-resources-logs - mountPath: /usr/share/filebeat/data name: aai-resources-filebeat + volumes: - name: localtime hostPath: path: /etc/localtime - name: aai-chef-config configMap: - name: aai-chef-config-configmap + name: aai-chef-config - name: aai-data configMap: - name: aai-resources-environments-configmap + name: aai-resources-environments - name: filebeat-conf configMap: - name: aai-filebeat-configmap + name: aai-filebeat - name: aai-resources-logs emptyDir: {} - name: aai-resources-filebeat emptyDir: {} - name: aai-resources-log-conf configMap: - name: aai-resources-log-configmap - restartPolicy: Always + name: {{ include "common.fullname" . }} + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-resources/templates/service.yaml b/kubernetes/aai/charts/aai-resources/templates/service.yaml new file mode 100644 index 0000000000..8cea86cf54 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/templates/service.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name }}2 + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-resources/values.yaml b/kubernetes/aai/charts/aai-resources/values.yaml new file mode 100644 index 0000000000..f72e29905f --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/values.yaml @@ -0,0 +1,68 @@ +# Default values for resources. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + + +# application image +repository: nexus3.onap.org:10001 +image: openecomp/aai-resources:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: + aaicoreversion: 1.1.0-SNAPSHOT + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 60 + periodSeconds: 60 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: false + +readiness: + initialDelaySeconds: 60 + periodSeconds: 10 + + +service: + type: ClusterIP + name: aai-resources + internalPort: 8447 + internalPort2: 5005 + + +ingress: + enabled: false + +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 diff --git a/kubernetes/aai/charts/aai-search-data/.helmignore b/kubernetes/aai/charts/aai-search-data/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/.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-search-data/Chart.yaml b/kubernetes/aai/charts/aai-search-data/Chart.yaml new file mode 100644 index 0000000000..da911abb5e --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI search-data +name: aai-search-data +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/search-data-service/appconfig/analysis-config.json b/kubernetes/aai/charts/aai-search-data/resources/config/analysis-config.json index f98ea3799b..f98ea3799b 100644 --- a/kubernetes/aai/resources/config/search-data-service/appconfig/analysis-config.json +++ b/kubernetes/aai/charts/aai-search-data/resources/config/analysis-config.json diff --git a/kubernetes/aai/resources/config/search-data-service/appconfig/auth/search_policy.json b/kubernetes/aai/charts/aai-search-data/resources/config/auth/search_policy.json index 72d8902fbe..72d8902fbe 100644 --- a/kubernetes/aai/resources/config/search-data-service/appconfig/auth/search_policy.json +++ b/kubernetes/aai/charts/aai-search-data/resources/config/auth/search_policy.json diff --git a/kubernetes/aai/resources/config/search-data-service/appconfig/auth/tomcat_keystore b/kubernetes/aai/charts/aai-search-data/resources/config/auth/tomcat_keystore Binary files differindex 9eec841aa2..9eec841aa2 100644 --- a/kubernetes/aai/resources/config/search-data-service/appconfig/auth/tomcat_keystore +++ b/kubernetes/aai/charts/aai-search-data/resources/config/auth/tomcat_keystore diff --git a/kubernetes/aai/charts/aai-search-data/resources/config/elastic-search.properties b/kubernetes/aai/charts/aai-search-data/resources/config/elastic-search.properties new file mode 100644 index 0000000000..532a9fb2f0 --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/resources/config/elastic-search.properties @@ -0,0 +1,5 @@ +# ElasticSearch Configuration + +es.cluster-name=ES_AAI +es.ip-address=aai-elasticsearch.{{.Release.Namespace}} +es.http-port={{ .Values.config.elasticsearchHttpPort }} diff --git a/kubernetes/aai/resources/config/search-data-service/appconfig/filter-config.json b/kubernetes/aai/charts/aai-search-data/resources/config/filter-config.json index e2d5285824..e2d5285824 100644 --- a/kubernetes/aai/resources/config/search-data-service/appconfig/filter-config.json +++ b/kubernetes/aai/charts/aai-search-data/resources/config/filter-config.json diff --git a/kubernetes/aai/resources/config/log/search-data-service/logback.xml b/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml index 14ed4142fe..14ed4142fe 100644 --- a/kubernetes/aai/resources/config/log/search-data-service/logback.xml +++ b/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml diff --git a/kubernetes/aai/charts/aai-search-data/templates/configmap.yaml b/kubernetes/aai/charts/aai-search-data/templates/configmap.yaml new file mode 100644 index 0000000000..0715f0d51a --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/templates/configmap.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-service-log + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-search-data/templates/deployment.yaml b/kubernetes/aai/charts/aai-search-data/templates/deployment.yaml new file mode 100644 index 0000000000..beaee7d374 --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/templates/deployment.yaml @@ -0,0 +1,137 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: CONFIG_HOME + value: /opt/app/search-data-service/config/ + - name: KEY_STORE_PASSWORD + value: {{ .Values.config.keyStorePassword }} + - name: KEY_MANAGER_PASSWORD + value: {{ .Values.config.keyManagerPassword }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/search-data-service/config/filter-config.json + subPath: filter-config.json + name: {{ include "common.fullname" . }}-service-config + - mountPath: /opt/app/search-data-service/config/elastic-search.properties + subPath: elastic-search.properties + name: {{ include "common.fullname" . }}-service-config + - mountPath: /opt/app/search-data-service/config/analysis-config.json + subPath: filter-config.json + name: {{ include "common.fullname" . }}-service-config + - mountPath: /opt/app/search-data-service/config/auth/tomcat_keystore + subPath: tomcat_keystore + name: {{ include "common.fullname" . }}-service-auth-config + - mountPath: /opt/app/search-data-service/config/auth/search_policy.json + subPath: search_policy.json + name: {{ include "common.fullname" . }}-search-policy-config + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-service-logs + - mountPath: /opt/app/search-data-service/bundleconfig/etc/logback.xml + name: {{ include "common.fullname" . }}-service-log-conf + subPath: logback.xml + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + 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 }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + name: filebeat-conf + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-service-logs + - mountPath: /usr/share/filebeat/data + name: {{ include "common.fullname" . }}-service-filebeat + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-service-config + configMap: + name: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-service-auth-config + secret: + secretName: {{ include "common.fullname" . }}-keystone + - name: {{ include "common.fullname" . }}-search-policy-config + secret: + secretName: {{ include "common.fullname" . }}-policy + - name: filebeat-conf + configMap: + name: aai-filebeat + - name: {{ include "common.fullname" . }}-service-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-service-filebeat + emptyDir: {} + - name: {{ include "common.fullname" . }}-service-log-conf + configMap: + name: {{ include "common.fullname" . }}-service-log + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-search-data/templates/secret.yaml b/kubernetes/aai/charts/aai-search-data/templates/secret.yaml new file mode 100644 index 0000000000..33b058fc8f --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/templates/secret.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-keystone + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/auth/tomcat_keystore").AsSecrets . | indent 2 }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-policy + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/auth/search_policy.json").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-search-data/templates/service.yaml b/kubernetes/aai/charts/aai-search-data/templates/service.yaml new file mode 100644 index 0000000000..41bc163696 --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/templates/service.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-search-data/values.yaml b/kubernetes/aai/charts/aai-search-data/values.yaml new file mode 100644 index 0000000000..e7bfa6bdfa --- /dev/null +++ b/kubernetes/aai/charts/aai-search-data/values.yaml @@ -0,0 +1,68 @@ +# Default values for search-data. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + + +# application image +repository: nexus3.onap.org:10001 +image: onap/search-data-service:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: + elasticsearchHttpPort: 9200 + keyStorePassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + keyManagerPassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + + +# default number of instances +replicaCount: 1 + +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-search-data + internalPort: 9509 + +ingress: + enabled: false + +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 diff --git a/kubernetes/aai/charts/aai-sparky-be/.helmignore b/kubernetes/aai/charts/aai-sparky-be/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/.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-sparky-be/Chart.yaml b/kubernetes/aai/charts/aai-sparky-be/Chart.yaml new file mode 100644 index 0000000000..4d8a3a496b --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI sparky-be +name: aai-sparky-be +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/aai.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/aai.properties index aaca346760..813a263d90 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/aai.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/aai.properties @@ -6,7 +6,7 @@ # # The ip address/hostname and port to the desired AAI instance # -aai.rest.host=aai-service.{{.Values.nsPrefix}} +aai.rest.host=aai.{{.Release.Namespace}} aai.rest.port=8443 ############################## REST ############################## diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/aai-os-cert.p12 b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/aai-os-cert.p12 Binary files differindex ee57120fa0..ee57120fa0 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/aai-os-cert.p12 +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/aai-os-cert.p12 diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/client-cert-onap.p12 b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/client-cert-onap.p12 Binary files differindex dbf4fcacec..dbf4fcacec 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/client-cert-onap.p12 +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/client-cert-onap.p12 diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/inventory-ui-keystore b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/inventory-ui-keystore Binary files differindex efa01f8d79..efa01f8d79 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/auth/inventory-ui-keystore +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/auth/inventory-ui-keystore diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/elasticsearch.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/elasticsearch.properties index 99aea27d9e..082744b94e 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/elasticsearch.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/elasticsearch.properties @@ -7,8 +7,8 @@ # The ip address/hostname and port to the desired AAI instance # For development it's recommended to use a local instance of ES # -elasticsearch.ipAddress=aai-elasticsearch.{{.Values.nsPrefix}} -elasticsearch.httpPort=9200 +elasticsearch.ipAddress=aai-elasticsearch.{{.Release.Namespace}} +elasticsearch.httpPort={{ .Values.config.elasticsearchHttpPort }} elasticsearch.javaApiPort=8443 ############################## Indexes ############################## diff --git a/kubernetes/aai/resources/config/log/sparky-be/logback.xml b/kubernetes/aai/charts/aai-sparky-be/resources/config/log/logback.xml index c1b99c183f..c1b99c183f 100644 --- a/kubernetes/aai/resources/config/log/sparky-be/logback.xml +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/log/logback.xml diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/model/aai_oxm_v9.xml b/kubernetes/aai/charts/aai-sparky-be/resources/config/model/aai_oxm_v9.xml index 6337c32edc..6337c32edc 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/model/aai_oxm_v9.xml +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/model/aai_oxm_v9.xml diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/portal/portal-authentication.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/portal/portal-authentication.properties index 0873fc1c61..0873fc1c61 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/portal/portal-authentication.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/portal/portal-authentication.properties diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/portal/portal.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/portal/portal.properties index 90147362b0..04a19555e2 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/portal/portal.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/portal/portal.properties @@ -7,10 +7,10 @@ portal.api.impl.class = org.openecomp.sparky.security.portal.PortalRestAPIServic # Instance of ECOMP Portal where the app has been on-boarded # use insecure http for dev purposes to avoid self-signed certificate -ecomp_rest_url = http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/auxapi +ecomp_rest_url = http://portalapps.{{.Release.Namespace}}:8989/ONAPPORTAL/auxapi # Standard global logon page -ecomp_redirect_url = http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/login.htm +ecomp_redirect_url = http://portalapps.{{.Release.Namespace}}:8989/ONAPPORTAL/login.htm # Name of cookie to extract on login request csp_cookie_name = EPService diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/roles.config b/kubernetes/aai/charts/aai-sparky-be/resources/config/roles.config index b8313bd378..b8313bd378 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/roles.config +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/roles.config diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/search-service.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/search-service.properties index 57e34759d3..f28047333a 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/search-service.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/search-service.properties @@ -6,7 +6,7 @@ # # The ip address/hostname and port to the desired Search Data Service instance # -search-service.ipAddress=search-data-service.{{.Values.nsPrefix}} +search-service.ipAddress=aai-search-data.{{.Release.Namespace}} search-service.httpPort=9509 ############################## Indexes ############################## diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/suggestive-search.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/suggestive-search.properties index b82baffc14..b82baffc14 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/suggestive-search.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/suggestive-search.properties diff --git a/kubernetes/aai/resources/config/sparky-be/appconfig/synchronizer.properties b/kubernetes/aai/charts/aai-sparky-be/resources/config/synchronizer.properties index 0b84f06abe..0b84f06abe 100644 --- a/kubernetes/aai/resources/config/sparky-be/appconfig/synchronizer.properties +++ b/kubernetes/aai/charts/aai-sparky-be/resources/config/synchronizer.properties diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml new file mode 100644 index 0000000000..68fa1e4966 --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-model + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/model/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-portal + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/portal/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml new file mode 100644 index 0000000000..278a32728e --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml @@ -0,0 +1,149 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: CONFIG_HOME + value: /opt/app/sparky/config/ + - name: KEY_MANAGER_PASSWORD + value: {{ .Values.config.keyManagerPassword }} + - name: KEY_STORE_PASSWORD + value: {{ .Values.config.keyStorePassword }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/sparky/config/auth/ + name: {{ include "common.fullname" . }}-auth-config + - mountPath: /opt/app/sparky/config/synchronizer.properties + subPath: synchronizer.properties + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/suggestive-search.properties + subPath: suggestive-search.properties + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/search-service.properties + subPath: search-service.properties + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/roles.config + subPath: roles.config + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/elasticsearch.properties + subPath: elasticsearch.properties + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/aai.properties + subPath: aai.properties + name: {{ include "common.fullname" . }}-config + - mountPath: /opt/app/sparky/config/model/ + name: {{ include "common.fullname" . }}-model-config + - mountPath: /opt/app/sparky/config/portal/ + name: {{ include "common.fullname" . }}-portal-config + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /opt/app/sparky/bundleconfig/etc/logback.xml + name: {{ include "common.fullname" . }}-log-conf + subPath: logback.xml + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + 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 }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + name: filebeat-conf + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /usr/share/filebeat/data + name: aai-sparky-filebeat + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-model-config + configMap: + name: {{ include "common.fullname" . }}-model + - name: {{ include "common.fullname" . }}-portal-config + configMap: + name: {{ include "common.fullname" . }}-portal + - name: {{ include "common.fullname" . }}-auth-config + secret: + secretName: {{ include "common.fullname" . }} + - name: filebeat-conf + configMap: + name: aai-filebeat + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: aai-sparky-filebeat + emptyDir: {} + - name: {{ include "common.fullname" . }}-log-conf + configMap: + name: {{ include "common.fullname" . }}-log + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/secret.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/secret.yaml new file mode 100644 index 0000000000..69bd3f86de --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/templates/secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/service.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/service.yaml new file mode 100644 index 0000000000..41bc163696 --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/templates/service.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-sparky-be/values.yaml b/kubernetes/aai/charts/aai-sparky-be/values.yaml new file mode 100644 index 0000000000..34be1befb2 --- /dev/null +++ b/kubernetes/aai/charts/aai-sparky-be/values.yaml @@ -0,0 +1,70 @@ +# Default values for sparky-be. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + +# application image +repository: nexus3.onap.org:10001 +image: onap/sparky-be:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: + elasticsearchHttpPort: 9200 + keyStorePassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o + keyManagerPassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o + +# override chart name (sparky-be) to share a common namespace +# suffix with parent chart (aai) +nsSuffix: aai + + +# default number of instances +replicaCount: 1 + +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-sparky-be + internalPort: 9517 + +ingress: + enabled: false + +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 diff --git a/kubernetes/aai/charts/aai-traversal/.helmignore b/kubernetes/aai/charts/aai-traversal/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/.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-traversal/Chart.yaml b/kubernetes/aai/charts/aai-traversal/Chart.yaml new file mode 100644 index 0000000000..8f79b421c3 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI traversal +name: aai-traversal +version: 2.0.0 diff --git a/kubernetes/aai/resources/config/log/traversal/logback.xml b/kubernetes/aai/charts/aai-traversal/resources/config/log/logback.xml index fb8d8a53bf..fb8d8a53bf 100644 --- a/kubernetes/aai/resources/config/log/traversal/logback.xml +++ b/kubernetes/aai/charts/aai-traversal/resources/config/log/logback.xml diff --git a/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml b/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml new file mode 100644 index 0000000000..a7e9428a88 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/templates/aai-traversal-deployment.yaml b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml index f039d0f332..b4249aede1 100644 --- a/kubernetes/aai/templates/aai-traversal-deployment.yaml +++ b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml @@ -12,22 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiTraversal }} apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: aai-traversal - namespace: "{{ .Values.nsPrefix }}" + 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: - replicas: {{ .Values.aaiTraversalReplicas }} + replicas: {{ .Values.replicaCount }} selector: matchLabels: - app: aai-traversal + app: {{ include "common.name" . }} template: metadata: labels: - app: aai-traversal - name: aai-traversal + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} annotations: msb.onap.org/service-info: '[ { @@ -245,8 +250,6 @@ spec: - /root/ready.py args: - --container-name - - hbase - - --container-name - aai-resources env: - name: NAMESPACE @@ -254,26 +257,26 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: aai-traversal-readiness + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness containers: - - name: aai-traversal - image: "{{ .Values.image.aaiTraversalImage }}:{{ .Values.image.aaiTraversalVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - name: CHEF_BRANCH value: master - name: AAI_CHEF_ENV value: simpledemo - name: AAI_CORE_VERSION - value: {{ .Values.aaicoreversion }} + value: {{ .Values.config.aaicoreversion }} - name: AAI_CHEF_LOC value: /var/chef/aai-data/environments - name: CHEF_GIT_URL value: http://gerrit.onap.org/r/aai - name: RESOURCES_HOSTNAME - value: aai-resources.{{ .Values.nsPrefix }} + value: aai-resources.{{ include "common.namespace" . }} volumeMounts: - mountPath: /etc/localtime name: localtime @@ -289,15 +292,37 @@ spec: name: aai-traversal-log-conf subPath: logback.xml ports: - - containerPort: 8446 + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} readinessProbe: tcpSocket: - port: 8446 - initialDelaySeconds: 5 - periodSeconds: 10 - - name: filebeat-onap-aai-traversal - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + 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 }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} volumeMounts: - mountPath: /usr/share/filebeat/filebeat.yml subPath: filebeat.yml @@ -306,28 +331,27 @@ spec: name: aai-traversal-logs - mountPath: /usr/share/filebeat/data name: aai-traversal-filebeat + volumes: - name: localtime hostPath: path: /etc/localtime - name: aai-chef-config configMap: - name: aai-chef-config-configmap + name: aai-chef-config - name: aai-data configMap: - name: aai-resources-environments-configmap + name: aai-resources-environments - name: filebeat-conf configMap: - name: aai-filebeat-configmap + name: aai-filebeat - name: aai-traversal-logs emptyDir: {} - name: aai-traversal-filebeat emptyDir: {} - name: aai-traversal-log-conf configMap: - name: aai-traversal-log-configmap - restartPolicy: Always + name: {{ include "common.fullname" . }}-log + restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-traversal/templates/service.yaml b/kubernetes/aai/charts/aai-traversal/templates/service.yaml new file mode 100644 index 0000000000..8cea86cf54 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/templates/service.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name }}2 + {{- else -}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/aai/charts/aai-traversal/values.yaml b/kubernetes/aai/charts/aai-traversal/values.yaml new file mode 100644 index 0000000000..17640338d1 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/values.yaml @@ -0,0 +1,67 @@ +# Default values for traversal. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + + +# application image +repository: nexus3.onap.org:10001 +image: openecomp/aai-traversal:v1.1.0 +pullPolicy: Always +restartPolicy: Always + +# application configuration +config: + aaicoreversion: 1.1.0-SNAPSHOT + + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 60 + periodSeconds: 60 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: false + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: aai-traversal + internalPort: 8446 + internalPort2: 5005 + +ingress: + enabled: false + +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 diff --git a/kubernetes/aai/charts/champ/Chart.yaml b/kubernetes/aai/charts/champ/Chart.yaml new file mode 100644 index 0000000000..a4ee888fce --- /dev/null +++ b/kubernetes/aai/charts/champ/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: Champ microservice +name: champ +version: 2.0.0 diff --git a/kubernetes/aai/charts/champ/requirements.yaml b/kubernetes/aai/charts/champ/requirements.yaml new file mode 100644 index 0000000000..9552dfd9e0 --- /dev/null +++ b/kubernetes/aai/charts/champ/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json new file mode 100644 index 0000000000..ee04a714be --- /dev/null +++ b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json @@ -0,0 +1,19 @@ +{ + "roles": [ + { + "name": "admin", + "functions": [ + { + "name": "search", "methods": [ { "name": "GET" },{ "name": "DELETE" }, { "name": "PUT" }, { "name": "POST" } ] + } + ], + + "users": [ + { + "username": "CN=ONAP, OU=ONAP, O=ONAP, L=Ottawa, ST=Ontario, C=CA" + } + ] + } + ] +} + diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore Binary files differnew file mode 100644 index 0000000000..9eec841aa2 --- /dev/null +++ b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties b/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties new file mode 100644 index 0000000000..3b90c5522f --- /dev/null +++ b/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties @@ -0,0 +1,6 @@ +keyName=aai-uuid +sourceOfTruthName=source-of-truth +createdTsName=aai-created-ts +lastModTsName=aai-last-mod-ts +collectionPropertiesKey=properties + diff --git a/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml b/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml new file mode 100644 index 0000000000..cdf3aada40 --- /dev/null +++ b/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml @@ -0,0 +1,62 @@ +<beans xmlns="http://www.springframework.org/schema/beans" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:util="http://www.springframework.org/schema/util" +xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd + "> + + <!-- Event publisher to pass to the Champ library for logging raw graph + events (Kafka implementation). --> + <bean id="champEventPublisher" class="org.onap.aai.event.client.KafkaEventPublisher" > + <constructor-arg name="hosts" value="global-kafka.{{.Release.Namespace}}:9092" /> + <constructor-arg name="topic" value="champRawEvents" /> + </bean> + + <!-- Graph Implementation Configuration--> + <util:map id="props" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.Object"> + <entry key="champcore.event.stream.buffer.capacity" value="50" value-type="java.lang.Integer"/> + <entry key="champcore.event.stream.publisher-pool-size" value="10" value-type="java.lang.Integer"/> + <entry key="champcore.event.stream.publisher" value-ref="champEventPublisher"/> + + <entry key="graph.name" value="aaigraph.dev"/> + <entry key="storage.backend" value="hbase"/> + <entry key="storage.hostname" value="hbase.{{.Release.Namespace}}"/> + + <!-- Hbase Config --> + <entry key="storage.hbase.ext.hbase.zookeeper.property.clientPort" value="2181"/> + <entry key="storage.hbase.ext.zookeeper.znode.parent" value="/hbase"/> + </util:map> + + <!-- Janus Implementation --> + <bean id="graphBuilder" class="org.onap.aai.champjanus.graph.impl.JanusChampGraphImpl$Builder"> + <constructor-arg value="aaigraph.dev"/> + <constructor-arg ref="props" /> + </bean> + + <bean id="graphImpl" class="org.onap.aai.champjanus.graph.impl.JanusChampGraphImpl"> + <constructor-arg ref="graphBuilder" /> + </bean> + + <bean id="champUUIDService" class="org.onap.champ.service.ChampUUIDService" > + <constructor-arg name="graphImpl" ref="graphImpl" /> + </bean> + + <bean id="cache" class="org.onap.champ.service.ChampTransactionCache" > + <constructor-arg name="txTimeOutInSec" value="600" /> + <constructor-arg name="graphImpl" ref="graphImpl" /> + </bean> + + <bean id="champDataService" class="org.onap.champ.service.ChampDataService" > + <constructor-arg name="champUUIDService" ref="champUUIDService" /> + <constructor-arg name="graphImpl" ref="graphImpl" /> + <constructor-arg name="cache" ref="cache" /> + </bean> + + <bean id="champRestService" class="org.onap.champ.ChampRESTAPI" > + <constructor-arg name="champDataService" ref="champDataService" /> + <constructor-arg name="champAsyncRequestProcessor"><null/></constructor-arg> + </bean> +</beans> diff --git a/kubernetes/aai/charts/champ/templates/configmap.yaml b/kubernetes/aai/charts/champ/templates/configmap.yaml new file mode 100644 index 0000000000..8f48f199f8 --- /dev/null +++ b/kubernetes/aai/charts/champ/templates/configmap.yaml @@ -0,0 +1,29 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/appconfig/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-dynamic-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/dynamic/conf/*").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/champ/templates/deployment.yaml b/kubernetes/aai/charts/champ/templates/deployment.yaml new file mode 100644 index 0000000000..a1a1d0ad06 --- /dev/null +++ b/kubernetes/aai/charts/champ/templates/deployment.yaml @@ -0,0 +1,108 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: CONFIG_HOME + value: "/opt/app/champ-service/appconfig" + - name: GRAPHIMPL + value: "janus-deps" + - name: SERVICE_BEANS + value: "/opt/app/champ-service/dynamic/conf" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/champ-service/appconfig/champ-api.properties + name: {{ include "common.fullname" . }}-config + subPath: champ-api.properties + - mountPath: /opt/app/champ-service/appconfig/auth + name: {{ include "common.fullname" . }}-secrets + - mountPath: /opt/app/champ-service/dynamic/conf/champ-beans.xml + name: {{ include "common.fullname" . }}-dynamic-config + subPath: champ-beans.xml + - mountPath: /logs + name: {{ include "common.fullname" . }}-logs + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }}-configmap + items: + - key: champ-api.properties + path: champ-api.properties + - name: {{ include "common.fullname" . }}-secrets + secret: + secretName: {{ include "common.fullname" . }}-champ-secrets + - name: {{ include "common.fullname" . }}-dynamic-config + configMap: + name: {{ include "common.fullname" . }}-dynamic-configmap + items: + - key: champ-beans.xml + path: champ-beans.xml + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/champ/templates/secrets.yaml b/kubernetes/aai/charts/champ/templates/secrets.yaml new file mode 100644 index 0000000000..e939eb904b --- /dev/null +++ b/kubernetes/aai/charts/champ/templates/secrets.yaml @@ -0,0 +1,22 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-champ-secrets + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/appconfig/auth/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/champ/templates/service.yaml b/kubernetes/aai/charts/champ/templates/service.yaml new file mode 100644 index 0000000000..93b0fd1254 --- /dev/null +++ b/kubernetes/aai/charts/champ/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +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: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort}} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/aai/charts/champ/values.yaml b/kubernetes/aai/charts/champ/values.yaml new file mode 100644 index 0000000000..91a1e52091 --- /dev/null +++ b/kubernetes/aai/charts/champ/values.yaml @@ -0,0 +1,58 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + readinessImage: readiness-check:1.0.0 + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# + +# application image +image: onap/champ:1.2.0 + +# default number of instances +replicaCount: 1 + +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: false + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: champ + externalPort: 78 + internalPort: 9522 + nodePort: 78 + +ingress: + enabled: false + +resources: {} diff --git a/kubernetes/aai/requirements.yaml b/kubernetes/aai/requirements.yaml new file mode 100644 index 0000000000..56029ab047 --- /dev/null +++ b/kubernetes/aai/requirements.yaml @@ -0,0 +1,7 @@ +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local'
\ No newline at end of file diff --git a/kubernetes/aai/resources/config/aai-data/environments/simpledemo.json b/kubernetes/aai/resources/config/aai-data/environments/simpledemo.json index 7b299f7a39..9795975c16 100644 --- a/kubernetes/aai/resources/config/aai-data/environments/simpledemo.json +++ b/kubernetes/aai/resources/config/aai-data/environments/simpledemo.json @@ -33,16 +33,16 @@ "PROJECT_HOME": "/opt/app/aai-traversal", "LOGROOT": "/opt/aai/logroot", "JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64", - "AAI_SERVER_URL_BASE": "https://aai-servicei.{{.Values.nsPrefix}}:8443/aai/", - "AAI_SERVER_URL": "https://aai-service.{{.Values.nsPrefix}}:8443/aai/v11/", - "AAI_GLOBAL_CALLBACK_URL": "https://aai-service.{{.Values.nsPrefix}}:8443/aai/", + "AAI_SERVER_URL_BASE": "https:/aai.{{.Release.Namespace}}:8443/aai/", + "AAI_SERVER_URL": "https:/aai.{{.Release.Namespace}}:8443/aai/v11/", + "AAI_GLOBAL_CALLBACK_URL": "https:/aai.{{.Release.Namespace}}:8443/aai/", "AAI_TRUSTSTORE_FILENAME": "aai_keystore", "AAI_TRUSTSTORE_PASSWD_X": "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0", "AAI_KEYSTORE_FILENAME": "aai_keystore", "AAI_KEYSTORE_PASSWD_X": "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0", - "APPLICATION_SERVERS": "aai-service.{{.Values.nsPrefix}}", + "APPLICATION_SERVERS": "aai.{{.Release.Namespace}}", "AAI_DMAAP_PROTOCOL": "http", - "AAI_DMAAP_HOST_PORT": "dmaap.{{.Values.nsPrefix}}:3904", + "AAI_DMAAP_HOST_PORT": "dmaap.{{.Release.Namespace}}:3904", "AAI_DMAAP_TOPIC_NAME": "AAI-EVENT", "AAI_NOTIFICATION_EVENT_DEFAULT_EVENT_STATUS": "UNPROCESSED", "AAI_NOTIFICATION_EVENT_DEFAULT_EVENT_TYPE": "AAI-EVENT", @@ -54,11 +54,11 @@ "AAI_NOTIFICATION_CURRENT_VERSION": "v11", "RESOURCE_VERSION_ENABLE_FLAG": "true", "TXN_HBASE_TABLE_NAME": "aailogging.dev", - "TXN_ZOOKEEPER_QUORUM": "hbase.{{.Values.nsPrefix}}", + "TXN_ZOOKEEPER_QUORUM": "aai-hbase.{{.Release.Namespace}}", "TXN_ZOOKEEPER_PROPERTY_CLIENTPORT": "2181", "TXN_HBASE_ZOOKEEPER_ZNODE_PARENT": "/hbase", "AAI_WORKLOAD_PREFERRED_ROUTE_KEY": "MR1", - "STORAGE_HOSTNAME": "hbase.{{.Values.nsPrefix}}", + "STORAGE_HOSTNAME": "aai-hbase.{{.Release.Namespace}}", "STORAGE_HBASE_TABLE": "aaigraph.dev", "STORAGE_HBASE_ZOOKEEPER_ZNODE_PARENT": "/hbase", "DB_CACHE_CLEAN_WAIT": "20", @@ -85,16 +85,16 @@ "PROJECT_HOME": "/opt/app/aai-resources", "LOGROOT": "/opt/aai/logroot", "JAVA_HOME": "/usr/lib/jvm/java-8-openjdk-amd64", - "AAI_SERVER_URL_BASE": "https://aai-service.{{.Values.nsPrefix}}:8443/aai/", - "AAI_SERVER_URL": "https://aai-service.{{.Values.nsPrefix}}:8443/aai/v11/", - "AAI_GLOBAL_CALLBACK_URL": "https://aai-service.{{.Values.nsPrefix}}:8443/aai/", + "AAI_SERVER_URL_BASE": "https:/aai.{{.Release.Namespace}}:8443/aai/", + "AAI_SERVER_URL": "https:/aai.{{.Release.Namespace}}:8443/aai/v11/", + "AAI_GLOBAL_CALLBACK_URL": "https:/aai.{{.Release.Namespace}}:8443/aai/", "AAI_TRUSTSTORE_FILENAME": "aai_keystore", "AAI_TRUSTSTORE_PASSWD_X": "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0", "AAI_KEYSTORE_FILENAME": "aai_keystore", "AAI_KEYSTORE_PASSWD_X": "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0", - "APPLICATION_SERVERS": "aai-service.{{.Values.nsPrefix}}", + "APPLICATION_SERVERS": "aai.{{.Release.Namespace}}", "AAI_DMAAP_PROTOCOL": "http", - "AAI_DMAAP_HOST_PORT": "dmaap.{{.Values.nsPrefix}}:3904", + "AAI_DMAAP_HOST_PORT": "dmaap.{{.Release.Namespace}}:3904", "AAI_DMAAP_TOPIC_NAME": "AAI-EVENT", "AAI_NOTIFICATION_EVENT_DEFAULT_EVENT_STATUS": "UNPROCESSED", "AAI_NOTIFICATION_EVENT_DEFAULT_EVENT_TYPE": "AAI-EVENT", @@ -106,11 +106,11 @@ "AAI_NOTIFICATION_CURRENT_VERSION": "v11", "RESOURCE_VERSION_ENABLE_FLAG": "true", "TXN_HBASE_TABLE_NAME": "aailogging.dev", - "TXN_ZOOKEEPER_QUORUM": "hbase.{{.Values.nsPrefix}}", + "TXN_ZOOKEEPER_QUORUM": "aai-hbase.{{.Release.Namespace}}", "TXN_ZOOKEEPER_PROPERTY_CLIENTPORT": "2181", "TXN_HBASE_ZOOKEEPER_ZNODE_PARENT": "/hbase", "AAI_WORKLOAD_PREFERRED_ROUTE_KEY": "MR1", - "STORAGE_HOSTNAME": "hbase.{{.Values.nsPrefix}}", + "STORAGE_HOSTNAME": "aai-hbase.{{.Release.Namespace}}", "STORAGE_HBASE_TABLE": "aaigraph.dev", "STORAGE_HBASE_ZOOKEEPER_ZNODE_PARENT": "/hbase", "DB_CACHE_CLEAN_WAIT": "20", diff --git a/kubernetes/aai/resources/config/haproxy/haproxy.cfg b/kubernetes/aai/resources/config/haproxy/haproxy.cfg index 6e6f489470..b9721ae41a 100644 --- a/kubernetes/aai/resources/config/haproxy/haproxy.cfg +++ b/kubernetes/aai/resources/config/haproxy/haproxy.cfg @@ -95,7 +95,7 @@ backend IST_Default_8447 balance roundrobin http-request set-header X-Forwarded-Port %[src_port] http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload; - server aai-resources.{{.Values.nsPrefix}} aai-resources.{{.Values.nsPrefix}}:8447 port 8447 ssl verify none + server aai-resources.{{.Release.Namespace}} aai-resources.{{.Release.Namespace}}:8447 port 8447 ssl verify none ####################### # BACKEND 8446######### @@ -105,7 +105,7 @@ backend IST_AAI_8446 balance roundrobin http-request set-header X-Forwarded-Port %[src_port] http-response set-header Strict-Transport-Security max-age=16000000;\ includeSubDomains;\ preload; - server aai-traversal.{{.Values.nsPrefix}} aai-traversal.{{.Values.nsPrefix}}:8446 port 8446 ssl verify none + server aai-traversal.{{.Release.Namespace}} aai-traversal.{{.Release.Namespace}}:8446 port 8446 ssl verify none listen IST_AAI_STATS mode http @@ -118,4 +118,3 @@ listen IST_AAI_STATS stats show-legends stats show-desc IST AAI APPLICATION NODES stats admin if TRUE - diff --git a/kubernetes/aai/resources/config/search-data-service/appconfig/elastic-search.properties b/kubernetes/aai/resources/config/search-data-service/appconfig/elastic-search.properties deleted file mode 100644 index c19667ad3c..0000000000 --- a/kubernetes/aai/resources/config/search-data-service/appconfig/elastic-search.properties +++ /dev/null @@ -1,5 +0,0 @@ -# ElasticSearch Configuration - -es.cluster-name=ES_AAI -es.ip-address=aai-elasticsearch.{{.Values.nsPrefix}} -es.http-port=9200 diff --git a/kubernetes/aai/templates/aai-deployment.yaml b/kubernetes/aai/templates/aai-deployment.yaml deleted file mode 100644 index 1b32463735..0000000000 --- a/kubernetes/aai/templates/aai-deployment.yaml +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiAaiService }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-service - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.aaiServiceReplicas }} - selector: - matchLabels: - app: aai-service - template: - metadata: - labels: - app: aai-service - name: aai-service - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - aai-resources - - --container-name - - aai-traversal - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: aai-service-readiness - containers: - - name: aai-service - image: "{{ .Values.image.aaiProxy }}:{{ .Values.image.aaiProxyVersion}}" - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /dev/log - name: aai-service-log - - mountPath: /usr/local/etc/haproxy/haproxy.cfg - subPath: haproxy.cfg - name: haproxy-cfg - ports: - - containerPort: 8080 - - containerPort: 8443 - readinessProbe: - tcpSocket: - port: 8443 - initialDelaySeconds: 5 - periodSeconds: 10 - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: aai-service-log - hostPath: - path: "/dev/log" - - name: haproxy-cfg - configMap: - name: aai-deployment-configmap - restartPolicy: Always - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/aai/templates/aai-resources-traversal-configmap.yaml b/kubernetes/aai/templates/aai-resources-traversal-configmap.yaml deleted file mode 100644 index 32055c47c8..0000000000 --- a/kubernetes/aai/templates/aai-resources-traversal-configmap.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiAaiResources }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-chef-config-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/aai-data/chef-config/dev/.knife/solo.rb").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-resources-environments-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/aai-data/environments/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-resources-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/resources/logback.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-traversal-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/traversal/logback.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/aai/templates/all-services.yaml b/kubernetes/aai/templates/all-services.yaml deleted file mode 100644 index 39739de723..0000000000 --- a/kubernetes/aai/templates/all-services.yaml +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiHbase }} -apiVersion: v1 -kind: Service -metadata: - name: hbase - namespace: "{{ .Values.nsPrefix }}" - labels: - app: hbase -spec: - ports: - - name: "hbase-port-1" - port: 2181 - - name: "hbase-port-2" - port: 8080 - - name: "hbase-port-3" - port: 8085 - - name: "hbase-port-4" - port: 9090 - - name: "hbase-port-5" - port: 16000 - - name: "hbase-port-6" - port: 16010 - - name: "hbase-port-7" - port: 16201 - selector: - app: hbase - clusterIP: None -#{{ end }} -#{{ if not .Values.disableAaiAaiService }} ---- -apiVersion: v1 -kind: Service -metadata: - name: aai-service - namespace: "{{ .Values.nsPrefix }}" - labels: - app: aai-service -spec: - ports: - - name: "aai-service-port-8443" - port: 8443 - targetPort: 8443 - nodePort: {{ .Values.nodePortPrefix }}33 - - name: "aai-service-port-8080" - port: 8080 - targetPort: 8080 - nodePort: {{ .Values.nodePortPrefix }}32 - type: NodePort - selector: - app: aai-service - clusterIP: {{ .Values.aaiServiceClusterIp }} -#{{ end }} -#{{ if not .Values.disableAaiModelLoaderService }} ---- -apiVersion: v1 -kind: Service -metadata: - name: model-loader-service - namespace: "{{ .Values.nsPrefix }}" - labels: - app: model-loader-service -spec: - ports: - - name: "model-loader-service-port-8443" - port: 8443 - nodePort: {{ .Values.nodePortPrefix }}29 - - name: "model-loader-service-port-8080" - port: 8080 - nodePort: {{ .Values.nodePortPrefix }}10 - type: NodePort - selector: - app: model-loader-service -#{{ end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: gremlin - namespace: "{{ .Values.nsPrefix }}" - labels: - app: gremlin -spec: - ports: - - name: "gremlin-port" - port: 8182 - selector: - app: gremlin - clusterIP: None -#{{ if not .Values.disableAaiElasticsearch }} ---- -apiVersion: v1 -kind: Service -metadata: - name: aai-elasticsearch - namespace: "{{ .Values.nsPrefix }}" - labels: - app: aai-elasticsearch -spec: - ports: - - name: "aai-elasticsearch-port" - port: 9200 - selector: - app: aai-elasticsearch - clusterIP: None -#{{ end }} -#{{ if not .Values.disableAaiSearchDataService }} ---- -apiVersion: v1 -kind: Service -metadata: - name: search-data-service - namespace: "{{ .Values.nsPrefix }}" - labels: - app: search-data-service -spec: - ports: - - name: "search-data-service-port-9509" - port: 9509 - selector: - app: search-data-service - clusterIP: None -#{{ end }} -#{{ if not .Values.disableAaiAaiTraversal }} ---- -apiVersion: v1 -kind: Service -metadata: - name: aai-traversal - namespace: "{{ .Values.nsPrefix }}" - labels: - app: aai-traversal -spec: - ports: - - name: "aai-traversal-port-8446" - port: 8446 - - name: aai-traversal-port-debug - port: 5005 - selector: - app: aai-traversal - clusterIP: None -#{{ end }} -#{{ if not .Values.disableAaiAaiResources }} ---- -apiVersion: v1 -kind: Service -metadata: - name: aai-resources - namespace: "{{ .Values.nsPrefix }}" - labels: - app: aai-resources -spec: - ports: - - name: "aai-resources-port-8447" - port: 8447 - - name: aai-resources-port-debug - port: 5005 - selector: - app: aai-resources - clusterIP: None -#{{ end }} -#{{ if not .Values.disableAaiSparkyBe }} ---- -apiVersion: v1 -kind: Service -metadata: - name: sparky-be - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sparky-be -spec: - ports: - - name: "sparky-be-port-9517" - port: 9517 - selector: - app: sparky-be - clusterIP: None -#{{ end }} diff --git a/kubernetes/aai/templates/configmap.yaml b/kubernetes/aai/templates/configmap.yaml new file mode 100644 index 0000000000..78235bcd4f --- /dev/null +++ b/kubernetes/aai/templates/configmap.yaml @@ -0,0 +1,35 @@ +# this is a shared resource for subcharts +apiVersion: v1 +kind: ConfigMap +metadata: + name: aai-filebeat + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: aai-deployment-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/haproxy/*").AsConfig . | indent 2 }} +--- +# this is a shared resource for subcharts +apiVersion: v1 +kind: ConfigMap +metadata: + name: aai-chef-config + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/aai-data/chef-config/dev/.knife/solo.rb").AsConfig . | indent 2 }} +--- +# this is a shared resource for subcharts +apiVersion: v1 +kind: ConfigMap +metadata: + name: aai-resources-environments + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/aai-data/environments/*").AsConfig . | indent 2 }} + diff --git a/kubernetes/aai/templates/data-router-configmap.yaml b/kubernetes/aai/templates/data-router-configmap.yaml deleted file mode 100644 index 8c2d988e66..0000000000 --- a/kubernetes/aai/templates/data-router-configmap.yaml +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiDataRouter }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-prop-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/data-router.properties").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-model-v8-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/model/aai_oxm_v8.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-model-v9-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/model/aai_oxm_v9.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-model-v10-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/model/aai_oxm_v10.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-model-v11-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/model/aai_oxm_v11.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: aai-data-router-secret - namespace: {{ .Values.nsPrefix }} -type: Opaque -data: -{{ tpl (.Files.Glob "resources/config/data-router/appconfig/auth/*").AsSecrets . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-data-router-dynamic-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/data-router/dynamic/routes/entity-event.route").AsConfig . | indent 2 }} -{{ tpl (.Files.Glob "resources/config/data-router/dynamic/conf/entity-event-policy.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/aai/templates/data-router-deployment.yaml b/kubernetes/aai/templates/data-router-deployment.yaml deleted file mode 100644 index b1cb834eeb..0000000000 --- a/kubernetes/aai/templates/data-router-deployment.yaml +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiDataRouter }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-data-router - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.dataRouterReplicas }} - selector: - matchLabels: - app: aai-data-router - template: - metadata: - labels: - app: aai-data-router - name: aai-data-router - spec: - initContainers: - - command: - - /bin/sh - - -c - - | - mkdir -p /logroot/data-router/logs - chmod -R 777 /logroot/data-router/logs - chown -R root:root /logroot - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - securityContext: - privileged: true - image: {{ .Values.image.es_bb }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: init-sysctl - volumeMounts: - - name: aai-data-router-logs - mountPath: /logroot/ - containers: - - name: aai-data-router - image: "{{ .Values.image.dataRouterImage }}:{{ .Values.image.dataRouterVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - env: - - name: SERVICE_BEANS - value: /opt/app/data-router/dynamic/conf - - name: CONFIG_HOME - value: /opt/app/data-router/config/ - - name: KEY_STORE_PASSWORD - value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - - name: DYNAMIC_ROUTES - value: /opt/app/data-router/dynamic/routes - - name: KEY_MANAGER_PASSWORD - value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - - name: PATH - value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - - name: JAVA_HOME - value: usr/lib/jvm/java-8-openjdk-amd64 - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/app/data-router/config/model/aai_oxm_v8.xml - subPath: aai_oxm_v8.xml - name: aai-data-router-model-v8 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v9.xml - subPath: aai_oxm_v9.xml - name: aai-data-router-model-v9 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v10.xml - subPath: aai_oxm_v10.xml - name: aai-data-router-model-v10 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v11.xml - subPath: aai_oxm_v11.xml - name: aai-data-router-model-v11 - - mountPath: /opt/app/data-router/config/auth - name: aai-data-router-auth - - mountPath: /opt/app/data-router/config/data-router.properties - name: aai-data-router-properties - subPath: data-router.properties - - mountPath: /opt/app/data-router/dynamic/routes/entity-event.route - subPath: entity-event.route - name: aai-data-router-dynamic-route - - mountPath: /opt/app/data-router/dynamic/conf/entity-event-policy.xml - subPath: entity-event-policy.xml - name: aai-data-router-dynamic-policy - - mountPath: /logs/ - name: aai-data-router-logs - ports: - - containerPort: 9502 - readinessProbe: - tcpSocket: - port: 9502 - initialDelaySeconds: 5 - periodSeconds: 10 - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: aai-data-router-model-v8 - configMap: - name: aai-data-router-model-v8-configmap - - name: aai-data-router-model-v9 - configMap: - name: aai-data-router-model-v9-configmap - - name: aai-data-router-model-v10 - configMap: - name: aai-data-router-model-v10-configmap - - name: aai-data-router-model-v11 - configMap: - name: aai-data-router-model-v11-configmap - - name: aai-data-router-auth - secret: - secretName: aai-data-router-secret - - name: aai-data-router-properties - configMap: - name: aai-data-router-prop-configmap - - name: aai-data-router-dynamic-route - configMap: - name: aai-data-router-dynamic-configmap - - name: aai-data-router-dynamic-policy - configMap: - name: aai-data-router-dynamic-configmap - - name: aai-data-router-logs - hostPath: - path: {{ .Values.persistence.mountPath }}/{{ .Release.Name }}/aai/data-router/logs - restartPolicy: Always - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - diff --git a/kubernetes/aai/templates/deployment.yaml b/kubernetes/aai/templates/deployment.yaml new file mode 100644 index 0000000000..6216758749 --- /dev/null +++ b/kubernetes/aai/templates/deployment.yaml @@ -0,0 +1,86 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + name: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - aai-traversal + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.dockerhubRepository | default .Values.dockerhubRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /dev/log + name: aai-service-log + - mountPath: /usr/local/etc/haproxy/haproxy.cfg + subPath: haproxy.cfg + name: haproxy-cfg + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort2 }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort2 }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: aai-service-log + hostPath: + path: "/dev/log" + - name: haproxy-cfg + configMap: + name: aai-deployment-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/templates/elasticsearch-deployment.yaml b/kubernetes/aai/templates/elasticsearch-deployment.yaml deleted file mode 100644 index a07db04566..0000000000 --- a/kubernetes/aai/templates/elasticsearch-deployment.yaml +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiElasticsearch }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-elasticsearch - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.elasticsearchReplicas }} - selector: - matchLabels: - app: aai-elasticsearch - template: - metadata: - labels: - app: aai-elasticsearch - name: aai-elasticsearch - spec: - initContainers: - - command: - - /bin/sh - - -c - - | - mkdir -p /logroot/elasticsearch/es-data - chmod -R 777 /logroot/elasticsearch/es-data - chown -R root:root /logroot - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - securityContext: - privileged: true - image: {{ .Values.image.es_bb }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: init-sysctl - volumeMounts: - - name: elasticsearch-data - mountPath: /logroot/ - hostname: aai-elasticsearch - containers: - - name: aai-elasticsearch - image: "{{ .Values.image.elasticsearchImage }}:{{ .Values.image.elasticsearchVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - ports: - - containerPort: 9200 - readinessProbe: - tcpSocket: - port: 9200 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - name: localtime - mountPath: /etc/localtime - readOnly: true - - name: elasticsearch-config - subPath: elasticsearch.yml - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml - - name: elasticsearch-data - mountPath: /usr/share/elasticsearch/data - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: elasticsearch-config - configMap: - name: aai-elasticsearch-configmap - - name: elasticsearch-data - hostPath: - path: {{ .Values.persistence.mountPath }}/{{ .Release.Name }}/aai/elasticsearch/data - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - diff --git a/kubernetes/aai/templates/hbase-deployment.yaml b/kubernetes/aai/templates/hbase-deployment.yaml deleted file mode 100644 index 62b017db29..0000000000 --- a/kubernetes/aai/templates/hbase-deployment.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiHbase }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-hbase - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.hbaseReplicas }} - selector: - matchLabels: - app: hbase - template: - metadata: - labels: - app: hbase - name: aai-hbase - spec: - hostname: hbase - containers: - - name: hbase - image: "{{ .Values.image.aaiHbaseImage }}:{{ .Values.image.aaiHbaseVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - ports: - - containerPort: 2181 - - containerPort: 8080 - - containerPort: 8085 - - containerPort: 9090 - - containerPort: 16000 - - containerPort: 16010 - - containerPort: 16201 - readinessProbe: - tcpSocket: - port: 2181 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - name: hbase-data - mountPath: /tmp - - name: localtime - mountPath: /etc/localtime - readOnly: true - volumes: - - name: hbase-data - hostPath: - path: {{ .Values.persistence.mountPath }}/{{ .Release.Name }}/aai/hbase - - name: localtime - hostPath: - path: /etc/localtime - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - diff --git a/kubernetes/aai/templates/modelloader-deployment-configmap.yaml b/kubernetes/aai/templates/modelloader-deployment-configmap.yaml deleted file mode 100644 index 14d316c42b..0000000000 --- a/kubernetes/aai/templates/modelloader-deployment-configmap.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiModelLoaderService }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-model-loader-prop-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/model-loader/appconfig/model-loader.properties").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: aai-model-loader-secret - namespace: {{ .Values.nsPrefix }} -type: Opaque -data: -{{ tpl (.Files.Glob "resources/config/model-loader/appconfig/auth/*").AsSecrets . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-model-loader-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/model-loader/logback.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/aai/templates/modelloader-deployment.yaml b/kubernetes/aai/templates/modelloader-deployment.yaml deleted file mode 100644 index 33458c772a..0000000000 --- a/kubernetes/aai/templates/modelloader-deployment.yaml +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiModelLoaderService }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-model-loader-service - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.modelLoaderReplicas }} - selector: - matchLabels: - app: model-loader-service - template: - metadata: - labels: - app: model-loader-service - name: aai-model-loader-service - spec: - containers: - - name: model-loader-service - image: "{{ .Values.image.modelLoaderImage }}:{{ .Values.image.modelLoaderVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - env: - - name: CONFIG_HOME - value: /opt/app/model-loader/config/ - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/app/model-loader/config/model-loader.properties - subPath: model-loader.properties - name: aai-model-loader-prop-config - - mountPath: /opt/app/model-loader/config/auth/ - name: aai-model-loader-auth-config - - mountPath: /var/log/onap - name: aai-model-loader-logs - - mountPath: /opt/app/model-loader/bundleconfig/etc/logback.xml - name: aai-model-loader-log-conf - subPath: logback.xml - ports: - - containerPort: 8080 - - containerPort: 8443 - - name: filebeat-onap-aai-model-loader - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - subPath: filebeat.yml - name: filebeat-conf - - mountPath: /var/log/onap - name: aai-model-loader-logs - - mountPath: /usr/share/filebeat/data - name: aai-model-loader-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: aai-model-loader-prop-config - configMap: - name: aai-model-loader-prop-configmap - - name: aai-model-loader-auth-config - secret: - secretName: aai-model-loader-secret - - name: filebeat-conf - configMap: - name: aai-filebeat-configmap - - name: aai-model-loader-logs - emptyDir: {} - - name: aai-model-loader-filebeat - emptyDir: {} - - name: aai-model-loader-log-conf - configMap: - name: aai-model-loader-log-configmap - restartPolicy: Always - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/aai/templates/search-data-service-configmap.yaml b/kubernetes/aai/templates/search-data-service-configmap.yaml deleted file mode 100644 index 2094f605c2..0000000000 --- a/kubernetes/aai/templates/search-data-service-configmap.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiSearchDataService }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-search-data-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/search-data-service/appconfig/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: aai-search-data-keystone-secret - namespace: {{ .Values.nsPrefix }} -type: Opaque -data: -{{ tpl (.Files.Glob "resources/config/search-data-service/appconfig/auth/tomcat_keystore").AsSecrets . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-search-policy-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/search-data-service/appconfig/auth/search_policy.json").AsSecrets . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-search-data-service-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/search-data-service/logback.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/aai/templates/search-data-service-deployment.yaml b/kubernetes/aai/templates/search-data-service-deployment.yaml deleted file mode 100644 index 28cc4f3236..0000000000 --- a/kubernetes/aai/templates/search-data-service-deployment.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiSearchDataService }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-search-data-service - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.searchDataServiceReplicas }} - selector: - matchLabels: - app: search-data-service - template: - metadata: - labels: - app: search-data-service - name: aai-search-data-service - spec: - containers: - - name: search-data-service - image: "{{ .Values.image.searchDataImage }}:{{ .Values.image.searchDataVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - env: - - name: CONFIG_HOME - value: /opt/app/search-data-service/config/ - - name: KEY_STORE_PASSWORD - value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - - name: KEY_MANAGER_PASSWORD - value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/app/search-data-service/config/filter-config.json - subPath: filter-config.json - name: aai-search-data-service-config - - mountPath: /opt/app/search-data-service/config/elastic-search.properties - subPath: elastic-search.properties - name: aai-search-data-service-config - - mountPath: /opt/app/search-data-service/config/analysis-config.json - subPath: filter-config.json - name: aai-search-data-service-config - - mountPath: /opt/app/search-data-service/config/auth/tomcat_keystore - subPath: tomcat_keystore - name: aai-search-data-service-auth-config - - mountPath: /opt/app/search-data-service/config/auth/search_policy.json - subPath: search_policy.json - name: aai-search-data-search-policy-config - - mountPath: /var/log/onap - name: aai-search-data-service-logs - - mountPath: /opt/app/search-data-service/bundleconfig/etc/logback.xml - name: aai-search-data-service-log-conf - subPath: logback.xml - ports: - - containerPort: 9509 - readinessProbe: - tcpSocket: - port: 9509 - initialDelaySeconds: 5 - periodSeconds: 10 - - name: filebeat-onap-aai-search - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - subPath: filebeat.yml - name: filebeat-conf - - mountPath: /var/log/onap - name: aai-search-data-service-logs - - mountPath: /usr/share/filebeat/data - name: aai-search-data-service-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: aai-search-data-service-config - configMap: - name: aai-search-data-configmap - - name: aai-search-data-service-auth-config - secret: - secretName: aai-search-data-keystone-secret - - name: aai-search-data-search-policy-config - configMap: - name: aai-search-policy-configmap - - name: filebeat-conf - configMap: - name: aai-filebeat-configmap - - name: aai-search-data-service-logs - emptyDir: {} - - name: aai-search-data-service-filebeat - emptyDir: {} - - name: aai-search-data-service-log-conf - configMap: - name: aai-search-data-service-log-configmap - restartPolicy: Always - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/aai/templates/service.yaml b/kubernetes/aai/templates/service.yaml new file mode 100644 index 0000000000..d21ac7ed87 --- /dev/null +++ b/kubernetes/aai/templates/service.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + ports: + {{if eq .Values.service.type "NodePort" -}} + - name: {{ .Values.service.name }} + port: {{ .Values.service.internalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + - name: {{ .Values.service.name }}2 + port: {{ .Values.service.internalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + {{- end}} + type: {{ .Values.service.type }} + selector: + app: {{ include "common.name" . }} + clusterIP: {{ .Values.config.aaiServiceClusterIp }} diff --git a/kubernetes/aai/templates/sparky-be-deployment-configmap.yaml b/kubernetes/aai/templates/sparky-be-deployment-configmap.yaml deleted file mode 100644 index 39c6138db3..0000000000 --- a/kubernetes/aai/templates/sparky-be-deployment-configmap.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiSparkyBe }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-sparky-be-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/sparky-be/appconfig/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-sparky-be-model-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/sparky-be/appconfig/model/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-sparky-be-portal-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/sparky-be/appconfig/portal/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: aai-sparky-be-secret - namespace: {{ .Values.nsPrefix }} -type: Opaque -data: -{{ tpl (.Files.Glob "resources/config/sparky-be/appconfig/auth/*").AsSecrets . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-sparky-be-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/sparky-be/logback.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/aai/templates/sparky-be-deployment.yaml b/kubernetes/aai/templates/sparky-be-deployment.yaml deleted file mode 100644 index 4b3196910e..0000000000 --- a/kubernetes/aai/templates/sparky-be-deployment.yaml +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableAaiSparkyBe }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: aai-sparky-be - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.sparkyReplicas }} - selector: - matchLabels: - app: sparky-be - template: - metadata: - labels: - app: sparky-be - name: aai-sparky-be - spec: - containers: - - name: sparky-be - image: "{{ .Values.image.sparkyBeImage }}:{{ .Values.image.sparkyBeVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - env: - - name: CONFIG_HOME - value: /opt/app/sparky/config/ - - name: KEY_MANAGER_PASSWORD - value: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o - - name: KEY_STORE_PASSWORD - value: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/app/sparky/config/auth/ - name: aai-sparky-be-auth-config - - mountPath: /opt/app/sparky/config/synchronizer.properties - subPath: synchronizer.properties - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/suggestive-search.properties - subPath: suggestive-search.properties - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/search-service.properties - subPath: search-service.properties - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/roles.config - subPath: roles.config - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/elasticsearch.properties - subPath: elasticsearch.properties - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/aai.properties - subPath: aai.properties - name: aai-sparky-be-config - - mountPath: /opt/app/sparky/config/model/ - name: aai-sparky-be-model-config - - mountPath: /opt/app/sparky/config/portal/ - name: aai-sparky-be-portal-config - - mountPath: /var/log/onap - name: aai-sparky-be-logs - - mountPath: /opt/app/sparky/bundleconfig/etc/logback.xml - name: aai-sparky-be-log-conf - subPath: logback.xml - ports: - - containerPort: 9517 - readinessProbe: - tcpSocket: - port: 9517 - initialDelaySeconds: 5 - periodSeconds: 10 - - name: filebeat-onap-aai-sparky - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - subPath: filebeat.yml - name: filebeat-conf - - mountPath: /var/log/onap - name: aai-sparky-be-logs - - mountPath: /usr/share/filebeat/data - name: aai-sparky-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: aai-sparky-be-config - configMap: - name: aai-sparky-be-configmap - - name: aai-sparky-be-model-config - configMap: - name: aai-sparky-be-model-configmap - - name: aai-sparky-be-portal-config - configMap: - name: aai-sparky-be-portal-configmap - - name: aai-sparky-be-auth-config - secret: - secretName: aai-sparky-be-secret - - name: filebeat-conf - configMap: - name: aai-filebeat-configmap - - name: aai-sparky-be-logs - emptyDir: {} - - name: aai-sparky-filebeat - emptyDir: {} - - name: aai-sparky-be-log-conf - configMap: - name: aai-sparky-be-log-configmap - restartPolicy: Always - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/aai/values.yaml b/kubernetes/aai/values.yaml index eaeaa2e71d..b06456800a 100644 --- a/kubernetes/aai/values.yaml +++ b/kubernetes/aai/values.yaml @@ -12,69 +12,84 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: Always -nodePortPrefix: 302 +# Default values for aai. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + dockerhubRepository: docker.io + busyboxImage: busybox + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + restartPolicy: Always -# POLICY hotfix - Note this must be temporary -# See https://jira.onap.org/browse/POLICY-510 -aaiServiceClusterIp: 10.43.255.254 -aaiServiceReplicas: 1 -aaiResourceReplicas: 1 -aaiTraversalReplicas: 1 -dataRouterReplicas: 1 -elasticsearchReplicas: 1 -hbaseReplicas: 1 -modelLoaderReplicas: 1 -searchDataServiceReplicas: 1 -sparkyReplicas: 1 -image: - readiness: oomk8s/readiness-check:1.1.0 - aaiProxy: aaionap/haproxy - aaiProxyVersion: 1.1.0 - aaiHbaseImage: aaionap/hbase - aaiHbaseVersion: 1.2.0 - modelLoaderImage: nexus3.onap.org:10001/onap/model-loader - modelLoaderVersion: v1.1.0 - aaiResourcesImage: nexus3.onap.org:10001/openecomp/aai-resources - aaiResourcesVersion: v1.1.0 - aaiTraversalImage: nexus3.onap.org:10001/openecomp/aai-traversal - aaiTraversalVersion: v1.1.0 - dataRouterImage: nexus3.onap.org:10001/onap/data-router - dataRouterVersion: v1.1.0 - elasticsearchImage: elasticsearch - elasticsearchVersion: 2.4.1 - searchDataImage: nexus3.onap.org:10001/onap/search-data-service - searchDataVersion: v1.1.0 - sparkyBeImage: nexus3.onap.org:10001/onap/sparky-be - sparkyBeVersion: v1.1.0 - gremlinServerImage: aaionap/gremlin-server - filebeat: docker.elastic.co/beats/filebeat:5.5.0 - es_bb: busybox -aaicoreversion: 1.1.0-SNAPSHOT -persistence: - enabled: true - - ## 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 +# application image +dockerhubRepository: registry.hub.docker.com +image: aaionap/haproxy:1.1.0 +pullPolicy: Always - ## database data Persistent Volume Storage Class - ## If defined, storageClassName: <storageClass> - ## 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: ReadWriteMany - size: 2Gi - mountPath: /dockerdata-nfs - mountSubPath: aai/data-router/logs +# flag to enable debugging - application support required +debugEnabled: false +# application configuration config: + # POLICY hotfix - Note this must be temporary + # See https://jira.onap.org/browse/POLICY-510 + aaiServiceClusterIp: logstashServiceName: log-ls logstashPort: 5044 +# default number of instances +replicaCount: 1 + +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: NodePort + name: aai + externalPort: 8080 + internalPort: 8080 + nodePort: 32 + externalPort2: 8443 + internalPort2: 8443 + nodePort2: 33 + +ingress: + enabled: false + +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 diff --git a/kubernetes/common/Makefile b/kubernetes/common/Makefile index a78cc88b89..d634a8c506 100644 --- a/kubernetes/common/Makefile +++ b/kubernetes/common/Makefile @@ -41,6 +41,7 @@ lint-%: dep-% package-%: lint-% @mkdir -p $(PACKAGE_DIR) @if [ -f $*/Chart.yaml ]; then helm package -d $(PACKAGE_DIR) $*; fi + @helm repo index $(PACKAGE_DIR) clean: @rm -f */requirements.lock diff --git a/kubernetes/esr/.helmignore b/kubernetes/esr/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/esr/.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/esr/Chart.yaml b/kubernetes/esr/Chart.yaml index a80e6995b3..b47761d605 100644 --- a/kubernetes/esr/Chart.yaml +++ b/kubernetes/esr/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP External System Register name: esr -version: 1.0.0 +version: 2.0.0 diff --git a/kubernetes/esr/charts/esr-gui/.helmignore b/kubernetes/esr/charts/esr-gui/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/esr/charts/esr-gui/.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/templates/aai-deployment-configmap.yaml b/kubernetes/esr/charts/esr-gui/Chart.yaml index c81fb801c5..ae53f85857 100644 --- a/kubernetes/aai/templates/aai-deployment-configmap.yaml +++ b/kubernetes/esr/charts/esr-gui/Chart.yaml @@ -12,12 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiService }} apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-deployment-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/haproxy/*").AsConfig . | indent 2 }} -#{{ end }} +description: ONAP External System Register GUI +name: esr-gui +version: 2.0.0 diff --git a/kubernetes/esr/charts/esr-gui/templates/NOTES.txt b/kubernetes/esr/charts/esr-gui/templates/NOTES.txt new file mode 100644 index 0000000000..dde49c1439 --- /dev/null +++ b/kubernetes/esr/charts/esr-gui/templates/NOTES.txt @@ -0,0 +1,16 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/esr/charts/esr-gui/templates/deployment.yaml b/kubernetes/esr/charts/esr-gui/templates/deployment.yaml new file mode 100644 index 0000000000..747df228c3 --- /dev/null +++ b/kubernetes/esr/charts/esr-gui/templates/deployment.yaml @@ -0,0 +1,67 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: {{ tpl .Values.msbaddr . }} + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/esr/charts/esr-gui/templates/service.yaml b/kubernetes/esr/charts/esr-gui/templates/service.yaml new file mode 100644 index 0000000000..6a274b50d4 --- /dev/null +++ b/kubernetes/esr/charts/esr-gui/templates/service.yaml @@ -0,0 +1,42 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "aai-esr-gui", + "version": "v1", + "url": "/esr-gui", + "protocol": "UI", + "port": "{{ .Values.service.internalPort }}", + "visualRange":"1" + } + ]' +spec: + ports: + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/esr/charts/esr-gui/values.yaml b/kubernetes/esr/charts/esr-gui/values.yaml new file mode 100644 index 0000000000..f5013995c2 --- /dev/null +++ b/kubernetes/esr/charts/esr-gui/values.yaml @@ -0,0 +1,74 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + persistence: {} +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/aai/esr-gui:v1.0.0 +pullPolicy: Always +msbaddr: msb-iag.{{ include "common.namespace" . }}:80 + +# default number of instances +replicaCount: 1 + +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: + name: esr-gui + internalPort: 8080 + +ingress: + enabled: false + +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 diff --git a/kubernetes/esr/templates/esr-filebeat-configmap.yaml b/kubernetes/esr/requirements.yaml index 5f9ee9c217..f639633537 100644 --- a/kubernetes/esr/templates/esr-filebeat-configmap.yaml +++ b/kubernetes/esr/requirements.yaml @@ -12,12 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiResources }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: esr-filebeat-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} -#{{ end }} +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/esr/templates/NOTES.txt b/kubernetes/esr/templates/NOTES.txt new file mode 100644 index 0000000000..c1c46b126c --- /dev/null +++ b/kubernetes/esr/templates/NOTES.txt @@ -0,0 +1,13 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/esr/templates/esr-server-log-configmap.yaml b/kubernetes/esr/templates/configmap.yaml index 5a3ddf2c2a..a0c82bee55 100644 --- a/kubernetes/esr/templates/esr-server-log-configmap.yaml +++ b/kubernetes/esr/templates/configmap.yaml @@ -12,12 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiResources }} apiVersion: v1 kind: ConfigMap metadata: - name: esr-esrserver-log-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-esr-filebeat + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-esr-esrserver-log + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/log/esrserver/logback.xml").AsConfig . | indent 2 }} -#{{ end }} + diff --git a/kubernetes/esr/templates/deployment.yaml b/kubernetes/esr/templates/deployment.yaml new file mode 100644 index 0000000000..c2322d31ee --- /dev/null +++ b/kubernetes/esr/templates/deployment.yaml @@ -0,0 +1,99 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: {{ tpl .Values.msbaddr . }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /home/esr/works/logs + name: esr-server-logs + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /home/esr/works/logs + name: esr-server-logs + - mountPath: /usr/share/filebeat/data + name: esr-server-filebeat + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: filebeat-conf + configMap: + name: {{ include "common.fullname" . }}-esr-filebeat + - name: esr-server-logs + emptyDir: {} + - name: esr-server-filebeat + emptyDir: {} + - name: esrserver-log + configMap: + name: {{ include "common.fullname" . }}-esr-esrserver-log + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/esr/templates/esr-esrgui-deployment.yaml b/kubernetes/esr/templates/esr-esrgui-deployment.yaml deleted file mode 100644 index 92e26dceb0..0000000000 --- a/kubernetes/esr/templates/esr-esrgui-deployment.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableesrgui }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: esr-esrgui - name: esr-esrgui - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: esr-esrgui - template: - metadata: - labels: - app: esr-esrgui - name: esr-esrgui - spec: - containers: - - image: {{ .Values.esrgui.image }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: esr-esrgui - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.esrgui.port }} - readinessProbe: - tcpSocket: - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/esr/templates/esr-esrserver-deployment.yaml b/kubernetes/esr/templates/esr-esrserver-deployment.yaml deleted file mode 100644 index 3f00edcc91..0000000000 --- a/kubernetes/esr/templates/esr-esrserver-deployment.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableUuiUui }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: esr-esrserver - name: esr-esrserver - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: esr-esrserver - template: - metadata: - labels: - app: esr-esrserver - name: esr-esrserver - spec: - containers: - - name: esr-esrserver - image: {{ .Values.esrserver.image }} - imagePullPolicy: {{ .Values.pullPolicy }} - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - volumeMounts: - - name: localtime - mountPath: /etc/localtime - readOnly: true - - mountPath: /home/esr/works/logs - name: esr-server-logs - ports: - - containerPort: {{ .Values.esrserver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.esrserver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - - name: filebeat-onap-esr-server - image: {{ .Values.filebeat.image }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - subPath: filebeat.yml - name: filebeat-conf - - mountPath: /home/esr/works/logs - name: esr-server-logs - - mountPath: /usr/share/filebeat/data - name: esr-server-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: filebeat-conf - configMap: - name: esr-filebeat-configmap - - name: esr-server-logs - emptyDir: {} - - name: esr-server-filebeat - emptyDir: {} -#{{ end }} diff --git a/kubernetes/esr/templates/all-services.yaml b/kubernetes/esr/templates/service.yaml index ff6bd9554b..312a7bdcfb 100644 --- a/kubernetes/esr/templates/all-services.yaml +++ b/kubernetes/esr/templates/service.yaml @@ -12,14 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableEsrServer }} apiVersion: v1 kind: Service metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} labels: - app: esr-esrserver - name: esr-esrserver - namespace: "{{ .Values.nsPrefix }}" + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} annotations: msb.onap.org/service-info: '[ { @@ -27,42 +29,15 @@ metadata: "version": "v1", "url": "/api/aai-esr-server/v1", "protocol": "REST", - "port": "{{.Values.esrserver.port}}", + "port": "{{.Values.service.internalPort}}", "enable_ssl": true, "visualRange":"1" } ]' spec: ports: - - name: esr-esrserver - port: {{.Values.esrserver.port}} + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} selector: - app: esr-esrserver -#{{ end }} -#{{ if not .Values.disableEsrGui }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: esr-esrgui - name: esr-esrgui - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "aai-esr-gui", - "version": "v1", - "url": "/esr-gui", - "protocol": "UI", - "port": "{{.Values.esrgui.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: esr-esrgui - port: {{.Values.esrgui.port}} - selector: - app: esr-esrgui -#{{ end }}
\ No newline at end of file + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/esr/values.yaml b/kubernetes/esr/values.yaml index 82aa3347bb..3af491745e 100644 --- a/kubernetes/esr/values.yaml +++ b/kubernetes/esr/values.yaml @@ -12,22 +12,72 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +subChartsOnly: + enabled: true + +# application image +repository: nexus3.onap.org:10001 +image: onap/aai/esr-server:v1.0.0 pullPolicy: Always -nodePortPrefix: 302 -msbaddr: msb-iag.{{ .Values.nsPrefix }}:80 -esrserver: - image: nexus3.onap.org:10001/onap/aai/esr-server:v1.0.0 - port: 9518 - replicas: 1 -esrgui: - image: nexus3.onap.org:10001/onap/aai/esr-gui:v1.0.0 - port: 8080 - replicas: 1 -filebeat: - image: docker.elastic.co/beats/filebeat:5.5.0 +msbaddr: msb-iag.{{ include "common.namespace" . }}:80 +# application configuration config: logstashServiceName: log-ls logstashPort: 5044 +# default number of instances +replicaCount: 1 + +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: + name: esr + internalPort: 9518 + +ingress: + enabled: false + +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 diff --git a/kubernetes/onap/requirements.yaml b/kubernetes/onap/requirements.yaml index 91943f46bd..b98096b22b 100644 --- a/kubernetes/onap/requirements.yaml +++ b/kubernetes/onap/requirements.yaml @@ -22,7 +22,7 @@ dependencies: repository: '@local' condition: aaf.enabled - name: aai - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: aai.enabled - name: appc @@ -49,7 +49,7 @@ dependencies: repository: '@local' condition: dcaegen2.enabled - name: esr - version: ~1.0.0 + version: ~2.0.0 repository: '@local' condition: esr.enabled - name: log @@ -105,7 +105,7 @@ dependencies: repository: '@local' condition: vfc.enabled - name: vid - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: vid.enabled - name: vnfsdk diff --git a/kubernetes/vid/.helmignore b/kubernetes/vid/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vid/.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/vid/Chart.yaml b/kubernetes/vid/Chart.yaml index 9c924bbc81..4df4dae10c 100644 --- a/kubernetes/vid/Chart.yaml +++ b/kubernetes/vid/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP Virtual Infrastructure Deployment name: vid -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/vid/charts/mariadb/.helmignore b/kubernetes/vid/charts/mariadb/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vid/charts/mariadb/.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/templates/aai-filebeat-configmap.yaml b/kubernetes/vid/charts/mariadb/Chart.yaml index 74039e8592..1f7de32fdf 100644 --- a/kubernetes/aai/templates/aai-filebeat-configmap.yaml +++ b/kubernetes/vid/charts/mariadb/Chart.yaml @@ -12,12 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableAaiAaiResources }} apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-filebeat-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} -#{{ end }} +description: VID MariaDB Service +name: mariadb +version: 2.0.0 diff --git a/kubernetes/vid/resources/config/lf_config/vid-my.cnf b/kubernetes/vid/charts/mariadb/resources/config/lf_config/vid-my.cnf index 472bf4698e..472bf4698e 100755..100644 --- a/kubernetes/vid/resources/config/lf_config/vid-my.cnf +++ b/kubernetes/vid/charts/mariadb/resources/config/lf_config/vid-my.cnf diff --git a/kubernetes/vid/resources/config/lf_config/vid-pre-init.sql b/kubernetes/vid/charts/mariadb/resources/config/lf_config/vid-pre-init.sql index 57b797d03c..57b797d03c 100755..100644 --- a/kubernetes/vid/resources/config/lf_config/vid-pre-init.sql +++ b/kubernetes/vid/charts/mariadb/resources/config/lf_config/vid-pre-init.sql diff --git a/kubernetes/vid/charts/mariadb/templates/NOTES.txt b/kubernetes/vid/charts/mariadb/templates/NOTES.txt new file mode 100644 index 0000000000..75f0a7a6b3 --- /dev/null +++ b/kubernetes/vid/charts/mariadb/templates/NOTES.txt @@ -0,0 +1,11 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/vid/templates/vid-lfconfig-configmap.yaml b/kubernetes/vid/charts/mariadb/templates/configmap.yaml index 2809705de9..8a35df3f30 100644 --- a/kubernetes/vid/templates/vid-lfconfig-configmap.yaml +++ b/kubernetes/vid/charts/mariadb/templates/configmap.yaml @@ -12,12 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableVidVidMariadb }} apiVersion: v1 kind: ConfigMap metadata: - name: vid-lfconfig-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-lfconfig + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/lf_config/*").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/vid/charts/mariadb/templates/deployment.yaml b/kubernetes/vid/charts/mariadb/templates/deployment.yaml new file mode 100644 index 0000000000..cafab0c17e --- /dev/null +++ b/kubernetes/vid/charts/mariadb/templates/deployment.yaml @@ -0,0 +1,109 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MYSQL_DATABASE + value: "{{ .Values.config.mysqldb }}" + - name: MYSQL_USER + value: "{{ .Values.config.mysqluser }}" + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: db-password + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: db-root-password + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /var/lib/mysql + name: mariadb-data + - mountPath: /docker-entrypoint-initdb.d/vid-pre-init.sql + name: lfconfig + subPath: vid-pre-init.sql + - mountPath: /etc/mysql/my.cnf + name: lfconfig + subPath: my.cnf + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: mariadb-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "common.fullname" . }} + {{- else }} + emptyDir: {} + {{- end }} + - name: localtime + hostPath: + path: /etc/localtime + - name: lfconfig + configMap: + name: {{ include "common.fullname" . }}-lfconfig + defaultMode: 0755 + items: + - key: vid-my.cnf + path: my.cnf + - key: vid-pre-init.sql + path: vid-pre-init.sql + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vid/charts/mariadb/templates/pv.yaml b/kubernetes/vid/charts/mariadb/templates/pv.yaml new file mode 100644 index 0000000000..184728f8ad --- /dev/null +++ b/kubernetes/vid/charts/mariadb/templates/pv.yaml @@ -0,0 +1,37 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +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 }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }} +{{- end -}} diff --git a/kubernetes/vid/charts/mariadb/templates/pvc.yaml b/kubernetes/vid/charts/mariadb/templates/pvc.yaml new file mode 100644 index 0000000000..e27c3311e9 --- /dev/null +++ b/kubernetes/vid/charts/mariadb/templates/pvc.yaml @@ -0,0 +1,48 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + name: {{ include "common.fullname" . }} + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/vid/charts/mariadb/templates/secrets.yaml b/kubernetes/vid/charts/mariadb/templates/secrets.yaml new file mode 100644 index 0000000000..36096925f5 --- /dev/null +++ b/kubernetes/vid/charts/mariadb/templates/secrets.yaml @@ -0,0 +1,28 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +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 }} +type: Opaque +data: + db-root-password: {{ .Values.config.mariadbRootPassword | b64enc | quote }} + db-password: {{ .Values.config.mariadbPassword | b64enc | quote }} diff --git a/kubernetes/vid/templates/all-services.yaml b/kubernetes/vid/charts/mariadb/templates/service.yaml index a946a2ab54..88ed09bb45 100644 --- a/kubernetes/vid/templates/all-services.yaml +++ b/kubernetes/vid/charts/mariadb/templates/service.yaml @@ -12,35 +12,20 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableVidVidMariadb }} -apiVersion: v1 -kind: Service -metadata: - name: vid-mariadb - namespace: "{{ .Values.nsPrefix }}" -spec: - ports: - - name: vid-mariadb - port: 3306 - selector: - app: vid-mariadb - clusterIP: None -#{{ end }} -#{{ if not .Values.disableVidVidServer }} ---- apiVersion: v1 kind: Service metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app: vid-server - name: vid-server - namespace: "{{ .Values.nsPrefix }}" + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: ports: - - name: vid-server - nodePort: {{ .Values.nodePortPrefix }}00 - port: 8080 + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} selector: - app: vid-server - type: NodePort -#{{ end }}
\ No newline at end of file + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/vid/charts/mariadb/values.yaml b/kubernetes/vid/charts/mariadb/values.yaml new file mode 100644 index 0000000000..567109c6d4 --- /dev/null +++ b/kubernetes/vid/charts/mariadb/values.yaml @@ -0,0 +1,102 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Default values for mariadb. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + persistence: {} + + +# application image +repository: nexus3.onap.org:10001 +image: library/mariadb:10 +pullPolicy: Always + +# application configuration +config: + mysqldb: vid_openecomp_epsdk + mysqluser: vidadmin + mariadbRootPassword: LF+tp_1WqgSY + mariadbPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + +# default number of instances +replicaCount: 1 + +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 + +## Persist data to a persitent volume +persistence: + enabled: true + + ## 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: <storageClass> + ## 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: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: vid/mariadb/data + +service: + name: mariadb + internalPort: 3306 + +ingress: + enabled: false + +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 diff --git a/kubernetes/vid/requirements.yaml b/kubernetes/vid/requirements.yaml new file mode 100644 index 0000000000..f639633537 --- /dev/null +++ b/kubernetes/vid/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/vid/templates/NOTES.txt b/kubernetes/vid/templates/NOTES.txt new file mode 100644 index 0000000000..6e0b9fc06d --- /dev/null +++ b/kubernetes/vid/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/vid/templates/vid-log-configmap.yaml b/kubernetes/vid/templates/configmap.yaml index 3a72866e0d..f7dbf07645 100644 --- a/kubernetes/vid/templates/vid-log-configmap.yaml +++ b/kubernetes/vid/templates/configmap.yaml @@ -12,20 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableVidVidServer }} apiVersion: v1 kind: ConfigMap metadata: - name: vid-log-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/log/vid/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap metadata: - name: vid-filebeat-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-filebeat-configmap + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/vid/templates/deployment.yaml b/kubernetes/vid/templates/deployment.yaml new file mode 100644 index 0000000000..89ed734dfb --- /dev/null +++ b/kubernetes/vid/templates/deployment.yaml @@ -0,0 +1,162 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +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: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - {{ .Values.mariadb.nameOverride }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + lifecycle: + postStart: + exec: + command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/usr/local/tomcat/webapps/vid/WEB-INF/classes/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"] + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: ASDC_CLIENT_REST_HOST + value: sdc-be.{{ include "common.namespace" . }}-sdc + - name: ASDC_CLIENT_REST_AUTH + value: "{{ .Values.config.asdcclientrestauth }}" + - name: ASDC_CLIENT_REST_PORT + value: "{{ .Values.config.asdcclientrestport }}" + - name: VID_AAI_HOST + value: aai-service.{{ include "common.namespace" . }}-aai + - name: VID_AAI_PORT + value: "{{ .Values.config.vidaaiport }}" + - name: VID_ECOMP_SHARED_CONTEXT_REST_URL + value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/context + - name: VID_MSO_SERVER_URL + value: http://mso.{{ include "common.namespace" . }}-mso:"{{ .Values.config.msoport }}" + - name: VID_MSO_PASS + value: "{{ .Values.config.vidmsopass }}" + - name: MSO_DME2_SERVER_URL + value: "{{ .Values.config.msodme2serverurl }}" + - name: MSO_DME2_ENABLED + value: {{ .Values.global.debugEnabled | default .Values.debugEnabled | quote }} + - name: VID_ECOMP_REDIRECT_URL + value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/login.h\tm + - name: VID_ECOMP_REST_URL + value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/auxapi + - name: VID_CONTACT_US_LINK + value: "{{ .Values.config.vidcontactuslink }}" + - name: VID_UEB_URL_LIST + value: dmaap.{{ include "common.namespace" . }}-message-router + - name: VID_MYSQL_HOST + value: "{{ .Values.config.vidmysqlhost }}" + - name: VID_MYSQL_PORT + value: "{{ .Values.config.vidmysqlport }}" + - name: VID_MYSQL_DBNAME + value: "{{ .Values.config.vidmysqldbname }}" + - name: VID_MYSQL_USER + value: "{{ .Values.config.vidmysqluser }}" + - name: VID_MYSQL_PASS + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: vid-password + - name: VID_MYSQL_MAXCONNECTIONS + value: "{{ .Values.config.vidmysqlmaxconnections }}" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /var/log/onap + name: vid-logs + - mountPath: /tmp/logback.xml + name: vid-logback + subPath: logback.xml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: vid-logs + - mountPath: /usr/share/filebeat/data + name: vid-data-filebeat + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: filebeat-conf + configMap: + name: {{ include "common.fullname" . }}-filebeat-configmap + - name: vid-logs + emptyDir: {} + - name: vid-data-filebeat + emptyDir: {} + - name: vid-logback + configMap: + name: {{ include "common.fullname" . }}-log-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vid/templates/secrets.yaml b/kubernetes/vid/templates/secrets.yaml new file mode 100644 index 0000000000..729e0b17c0 --- /dev/null +++ b/kubernetes/vid/templates/secrets.yaml @@ -0,0 +1,27 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +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 }} +type: Opaque +data: + vid-password: {{ .Values.config.vidmysqlpassword | b64enc | quote }} diff --git a/kubernetes/vid/templates/service.yaml b/kubernetes/vid/templates/service.yaml new file mode 100644 index 0000000000..3969d2184b --- /dev/null +++ b/kubernetes/vid/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License + +apiVersion: v1 +kind: Service +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: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/vid/templates/vid-mariadb-deployment.yaml b/kubernetes/vid/templates/vid-mariadb-deployment.yaml deleted file mode 100644 index 4eb46c2c02..0000000000 --- a/kubernetes/vid/templates/vid-mariadb-deployment.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVidVidMariadb }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: vid-mariadb - name: vid-mariadb - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vidMariaDbReplicas }} - selector: - matchLabels: - app: vid-mariadb - template: - metadata: - labels: - app: vid-mariadb - name: vid-mariadb - spec: - containers: - - image: {{ .Values.image.mariadb }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: vid-mariadb - env: - - name: MYSQL_DATABASE - value: vid_openecomp_epsdk - - name: MYSQL_USER - value: vidadmin - - name: MYSQL_PASSWORD - value: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U - - name: MYSQL_ROOT_PASSWORD - value: LF+tp_1WqgSY - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /var/lib/mysql - name: vid-mariadb-data - - mountPath: /docker-entrypoint-initdb.d/vid-pre-init.sql - name: vid-lfconfig - subPath: vid-pre-init.sql - - mountPath: /etc/mysql/my.cnf - name: vid-lfconfig - subPath: my.cnf - ports: - - containerPort: 3306 - readinessProbe: - tcpSocket: - port: 3306 - initialDelaySeconds: 5 - periodSeconds: 10 - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: vid-mariadb-data - persistentVolumeClaim: - claimName: vid-db - - name: vid-lfconfig - configMap: - name: vid-lfconfig-configmap - defaultMode: 0755 - items: - - key: vid-my.cnf - path: my.cnf - - key: vid-pre-init.sql - path: vid-pre-init.sql - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vid/templates/vid-pv-pvc.yaml b/kubernetes/vid/templates/vid-pv-pvc.yaml deleted file mode 100644 index 4d8db678e9..0000000000 --- a/kubernetes/vid/templates/vid-pv-pvc.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{/* -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/}} - -#{{ if not .Values.disableVidVidMariadb }} -apiVersion: v1 -kind: PersistentVolume -metadata: - name: "{{ .Values.nsPrefix }}-vid" - namespace: "{{ .Values.nsPrefix }}" - labels: - name: "{{ .Values.nsPrefix }}-vid" -spec: - capacity: - storage: 2Gi - accessModes: - - ReadWriteMany - persistentVolumeReclaimPolicy: Retain - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/vid/mariadb/data ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: vid-db - namespace: "{{ .Values.nsPrefix }}" -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - selector: - matchLabels: - name: "{{ .Values.nsPrefix }}-vid" -#{{ end }} diff --git a/kubernetes/vid/templates/vid-server-deployment.yaml b/kubernetes/vid/templates/vid-server-deployment.yaml deleted file mode 100644 index 7903fb02b1..0000000000 --- a/kubernetes/vid/templates/vid-server-deployment.yaml +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVidVidServer }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: vid-server - name: vid-server - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vidServerReplicas }} - selector: - matchLabels: - app: vid-server - template: - metadata: - labels: - app: vid-server - name: vid-server - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - vid-mariadb - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: vid-server-readiness - containers: - - env: - - name: ASDC_CLIENT_REST_HOST - value: sdc-be.{{ .Values.nsPrefix }} - - name: ASDC_CLIENT_REST_AUTH - value: Basic dmlkOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU= - - name: ASDC_CLIENT_REST_PORT - value: "8080" - - name: VID_AAI_HOST - value: aai-service.{{ .Values.nsPrefix }} - - name: VID_AAI_PORT - value: "8443" - - name: VID_ECOMP_SHARED_CONTEXT_REST_URL - value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/context - - name: VID_MSO_SERVER_URL - value: http://mso.{{ .Values.nsPrefix }}:8080 - - name: VID_MSO_PASS - value: OBF:1ih71i271vny1yf41ymf1ylz1yf21vn41hzj1icz - - name: MSO_DME2_SERVER_URL - value: http://localhost:8081 - - name: MSO_DME2_ENABLED - value: "false" - - name: VID_ECOMP_REDIRECT_URL - value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/login.htm - - name: VID_ECOMP_REST_URL - value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/auxapi - - name: VID_CONTACT_US_LINK - value: https://todo_contact_us_link.com - - name: VID_UEB_URL_LIST - value: dmaap.{{ .Values.nsPrefix }} - - name: VID_MYSQL_HOST - value: vid-mariadb - - name: VID_MYSQL_PORT - value: "3306" - - name: VID_MYSQL_DBNAME - value: vid_openecomp_epsdk - - name: VID_MYSQL_USER - value: vidadmin - - name: VID_MYSQL_PASS - value: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U - - name: VID_MYSQL_MAXCONNECTIONS - value: "5" - image: {{ .Values.image.vid }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: vid-server - lifecycle: - postStart: - exec: - command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/usr/local/tomcat/webapps/vid/WEB-INF/classes/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"] - ports: - - containerPort: 8080 - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /var/log/onap - name: vid-logs - - mountPath: /tmp/logback.xml - name: vid-logback - subPath: logback.xml - readinessProbe: - tcpSocket: - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: vid-logs - - mountPath: /usr/share/filebeat/data - name: vid-data-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: filebeat-conf - configMap: - name: vid-filebeat-configmap - - name: vid-logs - emptyDir: {} - - name: vid-data-filebeat - emptyDir: {} - - name: vid-logback - configMap: - name: vid-log-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vid/values.yaml b/kubernetes/vid/values.yaml index f177476e7d..b42bceb093 100644 --- a/kubernetes/vid/values.yaml +++ b/kubernetes/vid/values.yaml @@ -12,17 +12,96 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +# Default values for vid. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +subChartsOnly: + enabled: true + +# application image +repository: nexus3.onap.org:10001 +image: openecomp/vid:v1.1.1 pullPolicy: Always -nodePortPrefix: 302 -dataRootDir: /dockerdata-nfs -vidMariaDbReplicas: 1 -vidServerReplicas: 1 -image: - readiness: oomk8s/readiness-check:1.1.0 - mariadb: nexus3.onap.org:10001/library/mariadb:10 - vid: nexus3.onap.org:10001/openecomp/vid:v1.1.1 - filebeat: docker.elastic.co/beats/filebeat:5.5.0 + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration config: + vidmysqlpassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + asdcclientrestauth: "Basic dmlkOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=" + asdcclientrestport: "8080" + vidaaiport: "8443" + onapport: "8989" + msoport: "8080" + vidmsopass: OBF:1ih71i271vny1yf41ymf1ylz1yf21vn41hzj1icz + msodme2serverurl: http://localhost:8081 + vidcontactuslink: https://todo_contact_us_link.com + vidmysqlhost: vid-mariadb + vidmysqlport: "3306" + vidmysqldbname: vid_openecomp_epsdk + vidmysqluser: vidadmin + vidmysqlmaxconnections: "5" logstashServiceName: log-ls logstashPort: 5044 + + +# subchart configuration +mariadb: + nameOverride: vid-db + +# default number of instances +replicaCount: 1 + +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: NodePort + name: vid + externalPort: "00" + nodePort: "00" + internalPort: 8080 + +ingress: + enabled: false + +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 |