From: Jerome Doucerain Date: Tue, 27 Mar 2018 15:35:58 +0000 (+0000) Subject: Merge "Reordered instructions, - files, + example" X-Git-Tag: 2.0.0-ONAP~354 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=0a58b6bc3ceb10947b1675667d6943ed1da3d0c2;hp=9e5067c36e6133e782c5c274d7bc218437e50ce8;p=oom.git Merge "Reordered instructions, - files, + example" --- diff --git a/kubernetes/Makefile b/kubernetes/Makefile index 9cbf90fba7..7ba5ba934a 100644 --- a/kubernetes/Makefile +++ b/kubernetes/Makefile @@ -1,26 +1,33 @@ +# 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. + PARENT_CHART := onap COMMON_CHARTS_DIR := common -SETUP_CHARTS_DIR := setup -#Order is important -SHARED_CHARTS := common setup mysql dgbuilder # FIXME OOM-765 ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) OUTPUT_DIR := $(ROOT_DIR)/dist PACKAGE_DIR := $(OUTPUT_DIR)/packages SECRET_DIR := $(OUTPUT_DIR)/secrets -EXCLUDES := $(COMMON_CHARTS_DIR) config oneclick readiness test dist helm $(PARENT_CHART) dcae -EXCLUDES := $(SHARED_CHARTS) config oneclick readiness test dist $(PARENT_CHART) dcae +EXCLUDES := config oneclick readiness test dist helm $(PARENT_CHART) dcae HELM_CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.))) $(PARENT_CHART) .PHONY: $(EXCLUDES) $(HELM_CHARTS) all: $(COMMON_CHARTS_DIR) $(HELM_CHARTS) -common: -all: $(SHARED_CHARTS) $(HELM_CHARTS) - -$(SHARED_CHARTS): +$(COMMON_CHARTS): @echo "\n[$@]" @make package-$@ @@ -45,5 +52,12 @@ clean: @rm -f */requirements.lock @rm -f *tgz */charts/*tgz @rm -rf $(PACKAGE_DIR) + +# start up a local helm repo to serve up +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 %: @: diff --git a/kubernetes/README.md b/kubernetes/README.md index dc49e5445b..9c315cbafe 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -1,78 +1,87 @@ -## **Quick Start Guide - ONAP on Kubernetes** +## **Quick Start Guide** -This is a quick start guide to help you get started on ONAP installation. Creating an ONAP deployment instance requires creating base configuration on the host node and then deploying the runtime containers. +This is a quick start guide describing how to deploy ONAP on Kubernetes using Helm. Pre-requisites: - Your Kubernetes environment must be available. For more information see, [ONAP on Kubernetes](https://wiki.onap.org/display/DW/ONAP+on+Kubernetes). - Deployment artifacts are customized for your location. -Step 1 -Review and optionally change configuration parameters: - -Setup the [/oom/kubernetes/config/onap-parameters.yaml](https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters.yaml;h=7ddaf4d4c3dccf2fad515265f0da9c31ec0e64b1;hb=refs/heads/master) file with key-value pairs specific to your OpenStack environment. - -OR - -There is a [sample](https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters-sample.yaml;h=3a74beddbbf7f9f9ec8e5a6abaecb7cb238bd519;hb=refs/heads/master) that may help you out or even be usable directly if you don't intend to actually use OpenStack resources. - - -Step 2 - -In-order to be able to support multiple ONAP instances within a single kubernetes environment, a configuration set is required. To do this, execute the [createConfig.sh](https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/createConfig.sh;h=f226ccae47ca6de15c1da49be4b8b6de974895ed;hb=refs/heads/master) script: - -> oom/kubernetes/config/createConfig.sh -n onap - -Where: -'onap' refers to the name of the instance. This serves as the Namespace prefix for each deployed ONAP component (for example, onap-mso). - -Step 3 - -The bash script [createAll.bash](https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/oneclick/createAll.bash;h=5e5f2dc76ea7739452e757282e750638b4e3e1de;hb=refs/heads/master) is used to create an ONAP deployment with kubernetes. It has two primary functions: - -- Creating the namespaces used to encapsulate the ONAP components, and -- Creating the services, pods and containers within each of these namespaces that provide the core functionality of ONAP. - -Before you execute the createAll.bash. script, pod config-init ([pod-config-init.yaml](https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/pod-config-init.yaml;h=b1285ce21d61815c082f6d6aa3c43d00561811c7;hb=refs/heads/master)) may need editing to match your environment and deployment into the default namespace. - -To deploy the containers and create your ONAP system, execute the following command: - -> oom/kubernetes/oneclick/createAll.bash -n onap - -#### **Additional information on usage of createAll.bash** - -Namespaces provide isolation between ONAP components as ONAP release 1.0 contains duplicate application (for example, mariadb) and port usage. - -As such createAll.bash requires the user to enter a namespace prefix string that can be used to separate multiple deployments of onap. The result will be set of 10 namespaces (for example, onap-sdc, onap-aai, onap-mso, onap-message-router, onap-robot, onap-vid, onap-sdnc, onap-portal, onap-policy, onap-appc) being created within the kubernetes environment. - - -#### **Deploying multiple ONAP instances within the same Kubernetes cluster** - -To deploy multiple ONAP instances, you must specify the number of Instances you would like to create in a Kubernetes cluster using createAllbash. - -This is currently required due to the use of NodePort ranges. NodePorts allow external IP:Port access to containers that are running inside a Kubernetes cluster. - -To create multiple instances of an ONAP deployment in the cluster, use the following commands: - -> oom/kubernetes/config/createConfig.sh -n onap - -> oom/kubernetes/oneclick/createAll.bash -n onap -i 2 - -Where: - -- 'onap' refers to the name of the instance. - -- ‘i 2’ refers to the number of instances of an ONAP deployment in the cluster. - -#### **To delete a deployed instance** +### **Deploy ONAP Instance** + +Step 1. Clone the OOM repository from ONAP gerrit: + +``` +> git clone http://gerrit.onap.org/r/oom +> cd oom/kubernetes +``` + +Step 2. Customize the oom/kubernetes/onap parent chart, like the values.yaml file, to suit your deployment. You may want to selectively enable or disable ONAP components by changing the subchart **enabled** flags to *true* or *false*. +``` +Example: +... +robot: # Robot Health Check + enabled: true +sdc: + enabled: false +sdnc: + enabled: false +so: # Service Orchestrator + enabled: true +... +``` + +Step 3. To setup a local Helm repository to serve up the local ONAP charts: +``` +> helm serve & +``` +Note the port number that is listed and use it in the Helm repo add as follows: +``` +> helm repo add local http://127.0.0.1:8879 +``` + +Step 4. Build a local Helm repository (from the kubernetes directory): +``` +> make all +``` + +Step 5. Display the charts that are available to be deployed: +``` +> helm search -l +NAME VERSION DESCRIPTION +local/appc 2.0.0 Application Controller +local/clamp 2.0.0 ONAP Clamp +local/onap 2.0.0 Open Network Automation Platform (ONAP) +local/robot 2.0.0 A helm Chart for kubernetes-ONAP Robot +local/so 2.0.0 ONAP Service Orchestrator +... +``` + +**Note:** +Setup of this Helm repository is a one time activity. If you make changes to your deployment charts or values be sure to use **make** to update your local Helm repository. + +Step 6. Once the repo is setup, installation of ONAP can be done with a single command: +``` +> helm install local/onap -name dev --namespace onap +``` +**Note:** the **--namespace onap** is currently required while all onap helm charts are migrated to version 2.0. After this activity is complete, namespaces will be optional. + +Use the following to monitor your deployment and determine when ONAP is ready for use: +``` +> kubectl get pods --all-namespaces -o=wide +``` + + +#### **Cleanup deployed ONAP instance** To delete a deployed instance, use the following command: +``` +> helm del dev --purge +``` -> oom/kubernetes/oneclick/deleteAll.bash -n onap -**Note:** Deleting the runtime containers does not remove the configuration created in step 2. For more information on OOM project documentation, refer to: diff --git a/kubernetes/README_HELM b/kubernetes/README_HELM deleted file mode 100644 index 0f65120397..0000000000 --- a/kubernetes/README_HELM +++ /dev/null @@ -1,20 +0,0 @@ -Prerequisites: -- K8s -- Helm - -In order to use Helm with Rancher, check the tiller version installed -by running "helm version" on the rancher CLI -and install the appropriate Helm. -Notice both tiller and helm are installed, -but you will need to install on your VM. - -charts were tested with the following setup: - Rancher Release v1.6.7 - k8s version 1.7.2 - Helm/Tiller version v2.3.0 -also tested on: - k8s version v1.5.2 - Helm/Tiller v2.6.0 - -Download Helm: -https://github.com/kubernetes/helm diff --git a/kubernetes/aai/resources/config/log/filebeat/filebeat.yml b/kubernetes/aai/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/aai/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/aai/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/aai/values.yaml b/kubernetes/aai/values.yaml index e283cb6f2e..eaeaa2e71d 100644 --- a/kubernetes/aai/values.yaml +++ b/kubernetes/aai/values.yaml @@ -74,3 +74,7 @@ persistence: mountPath: /dockerdata-nfs mountSubPath: aai/data-router/logs +config: + logstashServiceName: log-ls + logstashPort: 5044 + diff --git a/kubernetes/appc/resources/config/log/filebeat/log4j/filebeat.yml b/kubernetes/appc/resources/config/log/filebeat/log4j/filebeat.yml index 52161aafad..49d818a807 100644 --- a/kubernetes/appc/resources/config/log/filebeat/log4j/filebeat.yml +++ b/kubernetes/appc/resources/config/log/filebeat/log4j/filebeat.yml @@ -29,7 +29,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Release.Namespace}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/appc/values.yaml b/kubernetes/appc/values.yaml index e31980a990..b5a13ef87c 100644 --- a/kubernetes/appc/values.yaml +++ b/kubernetes/appc/values.yaml @@ -43,6 +43,8 @@ config: enableClustering: true configDir: /opt/onap/appc/data/properties dmaapTopic: SUCCESS + logstashServiceName: log-ls + logstashPort: 5044 mysql: nameOverride: appc-db diff --git a/kubernetes/common/Makefile b/kubernetes/common/Makefile index b9cc1250d5..a78cc88b89 100644 --- a/kubernetes/common/Makefile +++ b/kubernetes/common/Makefile @@ -19,7 +19,7 @@ PACKAGE_DIR := $(OUTPUT_DIR)/packages SECRET_DIR := $(OUTPUT_DIR)/secrets EXCLUDES := -HELM_CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.))) $(PARENT_CHART) +HELM_CHARTS := $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.))) .PHONY: $(EXCLUDES) $(HELM_CHARTS) diff --git a/kubernetes/dgbuilder/.helmignore b/kubernetes/common/dgbuilder/.helmignore similarity index 100% rename from kubernetes/dgbuilder/.helmignore rename to kubernetes/common/dgbuilder/.helmignore diff --git a/kubernetes/dgbuilder/Chart.yaml b/kubernetes/common/dgbuilder/Chart.yaml similarity index 100% rename from kubernetes/dgbuilder/Chart.yaml rename to kubernetes/common/dgbuilder/Chart.yaml diff --git a/kubernetes/dgbuilder/requirements.yaml b/kubernetes/common/dgbuilder/requirements.yaml similarity index 100% rename from kubernetes/dgbuilder/requirements.yaml rename to kubernetes/common/dgbuilder/requirements.yaml diff --git a/kubernetes/dgbuilder/resources/config/svclogic.properties b/kubernetes/common/dgbuilder/resources/config/svclogic.properties similarity index 100% rename from kubernetes/dgbuilder/resources/config/svclogic.properties rename to kubernetes/common/dgbuilder/resources/config/svclogic.properties diff --git a/kubernetes/dgbuilder/resources/scripts/createReleaseDir.sh b/kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh similarity index 100% rename from kubernetes/dgbuilder/resources/scripts/createReleaseDir.sh rename to kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh diff --git a/kubernetes/dgbuilder/resources/scripts/customSettings.js b/kubernetes/common/dgbuilder/resources/scripts/customSettings.js similarity index 100% rename from kubernetes/dgbuilder/resources/scripts/customSettings.js rename to kubernetes/common/dgbuilder/resources/scripts/customSettings.js diff --git a/kubernetes/dgbuilder/templates/NOTES.txt b/kubernetes/common/dgbuilder/templates/NOTES.txt similarity index 100% rename from kubernetes/dgbuilder/templates/NOTES.txt rename to kubernetes/common/dgbuilder/templates/NOTES.txt diff --git a/kubernetes/dgbuilder/templates/configmap.yaml b/kubernetes/common/dgbuilder/templates/configmap.yaml similarity index 100% rename from kubernetes/dgbuilder/templates/configmap.yaml rename to kubernetes/common/dgbuilder/templates/configmap.yaml diff --git a/kubernetes/dgbuilder/templates/deployment.yaml b/kubernetes/common/dgbuilder/templates/deployment.yaml similarity index 100% rename from kubernetes/dgbuilder/templates/deployment.yaml rename to kubernetes/common/dgbuilder/templates/deployment.yaml diff --git a/kubernetes/dgbuilder/templates/secrets.yaml b/kubernetes/common/dgbuilder/templates/secrets.yaml similarity index 100% rename from kubernetes/dgbuilder/templates/secrets.yaml rename to kubernetes/common/dgbuilder/templates/secrets.yaml diff --git a/kubernetes/dgbuilder/templates/service.yaml b/kubernetes/common/dgbuilder/templates/service.yaml similarity index 100% rename from kubernetes/dgbuilder/templates/service.yaml rename to kubernetes/common/dgbuilder/templates/service.yaml diff --git a/kubernetes/dgbuilder/values.yaml b/kubernetes/common/dgbuilder/values.yaml similarity index 100% rename from kubernetes/dgbuilder/values.yaml rename to kubernetes/common/dgbuilder/values.yaml diff --git a/kubernetes/mysql/.helmignore b/kubernetes/common/mysql/.helmignore similarity index 100% rename from kubernetes/mysql/.helmignore rename to kubernetes/common/mysql/.helmignore diff --git a/kubernetes/mysql/Chart.yaml b/kubernetes/common/mysql/Chart.yaml similarity index 100% rename from kubernetes/mysql/Chart.yaml rename to kubernetes/common/mysql/Chart.yaml diff --git a/kubernetes/mysql/requirements.yaml b/kubernetes/common/mysql/requirements.yaml similarity index 100% rename from kubernetes/mysql/requirements.yaml rename to kubernetes/common/mysql/requirements.yaml diff --git a/kubernetes/mysql/templates/configmap.yaml b/kubernetes/common/mysql/templates/configmap.yaml similarity index 100% rename from kubernetes/mysql/templates/configmap.yaml rename to kubernetes/common/mysql/templates/configmap.yaml diff --git a/kubernetes/mysql/templates/nfs-provisoner.yaml b/kubernetes/common/mysql/templates/nfs-provisoner.yaml similarity index 100% rename from kubernetes/mysql/templates/nfs-provisoner.yaml rename to kubernetes/common/mysql/templates/nfs-provisoner.yaml diff --git a/kubernetes/mysql/templates/pv.yaml b/kubernetes/common/mysql/templates/pv.yaml similarity index 100% rename from kubernetes/mysql/templates/pv.yaml rename to kubernetes/common/mysql/templates/pv.yaml diff --git a/kubernetes/mysql/templates/pvc.yaml b/kubernetes/common/mysql/templates/pvc.yaml similarity index 100% rename from kubernetes/mysql/templates/pvc.yaml rename to kubernetes/common/mysql/templates/pvc.yaml diff --git a/kubernetes/mysql/templates/secrets.yaml b/kubernetes/common/mysql/templates/secrets.yaml similarity index 100% rename from kubernetes/mysql/templates/secrets.yaml rename to kubernetes/common/mysql/templates/secrets.yaml diff --git a/kubernetes/mysql/templates/service.yaml b/kubernetes/common/mysql/templates/service.yaml similarity index 100% rename from kubernetes/mysql/templates/service.yaml rename to kubernetes/common/mysql/templates/service.yaml diff --git a/kubernetes/mysql/templates/statefulset.yaml b/kubernetes/common/mysql/templates/statefulset.yaml similarity index 100% rename from kubernetes/mysql/templates/statefulset.yaml rename to kubernetes/common/mysql/templates/statefulset.yaml diff --git a/kubernetes/mysql/templates/storageclass.yaml b/kubernetes/common/mysql/templates/storageclass.yaml similarity index 100% rename from kubernetes/mysql/templates/storageclass.yaml rename to kubernetes/common/mysql/templates/storageclass.yaml diff --git a/kubernetes/mysql/values.yaml b/kubernetes/common/mysql/values.yaml similarity index 100% rename from kubernetes/mysql/values.yaml rename to kubernetes/common/mysql/values.yaml diff --git a/kubernetes/dcae/README b/kubernetes/dcae/README deleted file mode 100644 index c733355682..0000000000 --- a/kubernetes/dcae/README +++ /dev/null @@ -1,18 +0,0 @@ -DCAE Port mapping ------------------------------------------------------------------------------------------ -Container name | Connector name | Node port | Target port | ------------------------------------------------------------------------------------------ -dcae-collector-common-event | dcae-ce1 | 30236 | 8080 | ------------------------------------------------------------------------------------------ - | dcae-ce2 | 30237 | 8443 | ------------------------------------------------------------------------------------------ - | dcae-ce3 | 30238 | 9999 | ------------------------------------------------------------------------------------------ -dcae-collector-dmaapbc | dcae-bc1 | 30239 | 8080 | ------------------------------------------------------------------------------------------ - | dcae-bc2 | 30240 | 8443 | ------------------------------------------------------------------------------------------ -dcae-ves-collector | dcae-ves1 | 30241 | 8080 | ------------------------------------------------------------------------------------------ - | dcae-ves2 | 30242 | 9999 | ------------------------------------------------------------------------------------------ diff --git a/kubernetes/dcae/cdap/docker/00-provisioning.sh b/kubernetes/dcae/cdap/docker/00-provisioning.sh deleted file mode 100755 index 98b67c4476..0000000000 --- a/kubernetes/dcae/cdap/docker/00-provisioning.sh +++ /dev/null @@ -1,257 +0,0 @@ -#!/bin/bash -set -x - -export DEBIAN_FRONTEND=noninteractive - -############################################################## -################### File provisioning ######################## -############################################################## - -cd /tmp - - -## Adding configuration file: mount_config -cat > /tmp/dcae-mount.conf << EOF_CONFIG -osType: ubuntu -volumes: - ephemeral: - uuid: ephemeral - size: 80 - filesystems: - /opt/tools: - size: 80 - type: ext4 - mount_opts: '' - data: - uuid: cinder - size: 75 - filesystems: - /opt/data: - size: 75 - type: ext4 - mount_opts: '' -EOF_CONFIG - - -## Adding configuration file: ecomp-nexus -cat > /tmp/ecomp-nexus.crt << EOF_CONFIG ------BEGIN CERTIFICATE----- -MIIFRTCCBC2gAwIBAgIQM/5eM8D0jY3yHTSyN5iO9zANBgkqhkiG9w0BAQsFADCB -kDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxNjA0BgNV -BAMTLUNPTU9ETyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD -QTAeFw0xNzAzMjgwMDAwMDBaFw0xODAzMjgyMzU5NTlaMFcxITAfBgNVBAsTGERv -bWFpbiBDb250cm9sIFZhbGlkYXRlZDEdMBsGA1UECxMUUG9zaXRpdmVTU0wgV2ls -ZGNhcmQxEzARBgNVBAMMCioub25hcC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDIVo+kmG2sGaeIJy5pqP6mzlIwqYUXcFOG2fodsCPg9CEdlsBO -IECuoPYmCqrJ/MHLfs+F+SjEoBfpJlqyrpLhVj8O/9xCp4Tda/YJ18n59uDJ7Rpq -omqZlFCj/B4+H6+dkWCFy1FxYBBAIO52iscd4F6YHD1p3xUjJRd9Yf6qnktmSooI -hbIKzPIpSTsYiN3ArWbrGeucoQUdKX+intRHFLkKay88R7yqoqguPFIEtkXwDoJj -aV+rC103eZ1RLwtBcS/4UcDXRDfkyQANAYvKGeHiyGuRQqEUyGEmKz2i11m1oyEP -uD1AK+zPd33wBdOe8iZMr0CxcOGhgcKOWJ7vAgMBAAGjggHRMIIBzTAfBgNVHSME -GDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUMVkz3DD9qwhzY5WT -/P1mCVpsauQwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw -FAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGyMQECAgcw -KzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9DUFMwCAYG -Z4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2RvY2EuY29t -L0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcmwwgYUG -CCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21vZG9jYS5j -b20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAk -BggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMB8GA1UdEQQYMBaC -Cioub25hcC5vcmeCCG9uYXAub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQAd5mu22sts -at/bdRlIOz3dbqGwIFOo8XajlAs6ApMpyx/xetcgIKipzvGp9Wc1X8lDZl4boCH6 -KQ1//4tpksYj8RsZSZeac8vQLKggWO107sBa33yFg6Y1Dk2DdgOKZ+lNbvB1iMwK -hSGtV3HYx1jLyQRoeYby4R7+kTI1lHAiOgT+vn5C9Z3TxqfgWuBf24CFp/95gki6 -vRysJh9Jf7A8JrrMGykC94Tpo6OiUehtQ+f65xtetvwsfNHVp3hsLzR5KwIMDARI -IgXKyROodILsOXfR9qdA9klcXUSi6qvKF8wAopNuot4Ltyz8chiFKISjxqVrKnY2 -M7En/HyX0s1I ------END CERTIFICATE----- -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-cdap.properties -cat > /tmp/vm-cdap-cluster-cdap.properties << EOF_CONFIG -cluster.endpoint= foobar -cluster.user= foobar -cluster.password= foobar -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-console.properties -cat > /tmp/vm-cdap-cluster-console.properties << EOF_CONFIG -localhost.endpoint=http://localhost:1999 -localhost.user=console -localhost.password=NTJhYWU1NzAwMzc3OTk1 -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-gui.properties -cat > /tmp/vm-cdap-cluster-gui.properties << EOF_CONFIG -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-log4j.properties -cat > /tmp/vm-cdap-cluster-log4j.properties << EOF_CONFIG -#log4j.debug=0 -log4j.rootLogger=warn, file -log4j.logger.org.openecomp.ncomp=info, file -log4j.additivity.org.openecomp.ncomp=false - -#log4j.logger.org.apache.http.headers=debug, file -#log4j.logger.org.apache.http.wire=debug, file -## uploaded logger -log4j.logger.org.openecomp.ncomp.sirius.manager.uploaded=info, uploaded -log4j.additivity.org.openecomp.ncomp.sirius.manager.uploaded=false -## request logging -log4j.logger.org.openecomp.ncomp.sirius.manager.ManagementServer.requests=info, requests -log4j.additivity.org.openecomp.ncomp.sirius.manager.ManagementServer.requests=false -## openstack polling -log4j.logger.org.openecomp.ncomp.openstack.OpenStackUtil.polling=info, polling -log4j.additivity.org.openecomp.ncomp.openstack.OpenStackUtil.polling=false -log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=logs/manager.log -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.file.MaxFileSize=50MB -log4j.appender.file.MaxBackupIndex=5 - -log4j.appender.uploaded=org.apache.log4j.RollingFileAppender -log4j.appender.uploaded.File=logs/manager-uploaded.log -log4j.appender.uploaded.layout=org.apache.log4j.PatternLayout -log4j.appender.uploaded.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.uploaded.MaxFileSize=50MB -log4j.appender.uploaded.MaxBackupIndex=5 - -log4j.appender.requests=org.apache.log4j.RollingFileAppender -log4j.appender.requests.File=logs/manager-requests.log -log4j.appender.requests.layout=org.apache.log4j.PatternLayout -log4j.appender.requests.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.requests.MaxFileSize=50MB -log4j.appender.requests.MaxBackupIndex=5 -log4j.appender.polling=org.apache.log4j.RollingFileAppender -log4j.appender.polling.File=logs/manager-polling.log -log4j.appender.polling.layout=org.apache.log4j.PatternLayout -log4j.appender.polling.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.polling.MaxFileSize=50MB -log4j.appender.polling.MaxBackupIndex=5 - -### ECOMP Logging -log4j.logger.org.openecomp.audit=info, audit -log4j.additivity.org.openecomp.audit=false -log4j.logger.org.openecomp.metrics=info, metrics -log4j.additivity.org.openecomp.metrics=false -log4j.logger.org.openecomp.error=info, error -log4j.additivity.org.openecomp.error=false -log4j.logger.com.att.eelf.debug=info, debug -log4j.additivity.org.openecomp.debug=false -log4j.appender.audit=org.apache.log4j.RollingFileAppender -log4j.appender.audit.File=logs/audit.log -log4j.appender.audit.layout=org.apache.log4j.PatternLayout -log4j.appender.audit.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%5p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.audit.MaxFileSize=50MB -log4j.appender.audit.MaxBackupIndex=5 -log4j.appender.metrics=org.apache.log4j.RollingFileAppender -log4j.appender.metrics.File=logs/metrics.log -log4j.appender.metrics.layout=org.apache.log4j.PatternLayout -log4j.appender.metrics.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.metrics.MaxFileSize=50MB -log4j.appender.metrics.MaxBackupIndex=5 -log4j.appender.error=org.apache.log4j.RollingFileAppender -log4j.appender.error.File=logs/error.log -log4j.appender.error.layout=org.apache.log4j.PatternLayout -log4j.appender.error.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.error.MaxFileSize=50MB -log4j.appender.error.MaxBackupIndex=5 -log4j.appender.debug=org.apache.log4j.RollingFileAppender -log4j.appender.debug.File=logs/debug.log -log4j.appender.debug.layout=org.apache.log4j.PatternLayout -log4j.appender.debug.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.debug.MaxFileSize=50MB -log4j.appender.debug.MaxBackupIndex=5 -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-manager.properties -cat > /tmp/vm-cdap-cluster-manager.properties << EOF_CONFIG -server.dir = data/resources -metrics.dir = data/metrics -properties.dir = data/properties -server.port = 1999 -server.user.console = NTJhYWU1NzAwMzc3OTk1 -server.user.gui = MDlhZWVjZWEwMmFiOTJi -server.user.client = YmE2OGE1N2U5NzRmMDg1 -EOF_CONFIG - - -## Adding configuration file: vm-cdap-cluster-runtime.properties -cat > /tmp/vm-cdap-cluster-runtime.properties << EOF_CONFIG -factory.vm=org.openecomp.dcae.controller.service.servers.vm.DcaeVmFactory - -## Adding configuration file: monitoring-agent-gui.properties -cat > /tmp/monitoring-agent-gui.properties << EOF_CONFIG -EOF_CONFIG - - -cat > /tmp/certificate.pkcs12.b64code << EOF_CERT -EOF_CERT - - -############################################################## -################## Config Provisioning ####################### -############################################################## - -mkdir -p ~/.ssh -touch ~/.ssh/authorized_keys -echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBn8Ctt5hJGkTQaffuSeINeABV4viBIM4TcP14kaLiWR1LkyNY+TaUnjxODobtZa4YW1lxFtoMCfZt2A5W9ZZPM+shZr4BOj+wU+xIrzn7ezN/CQjH7c4Wh0mWteuPnJrtdpyGQ/qBI2T+xo5G/Tl++SPUvvN2D4H8vl0miEgVPR47/P7Ba6kl7Bmrf9m0VDPdS69Qr2AhgBq5Qi/fTeGZA4sfKDHHRJxkQIXYmS8R5FISRpBD7ta2NTHapRz9dC6Cw8UttEFiWFUBjN6lwF9LUOkj9MiqiTQaElKKQzMIHr0AhlgIkwBLKAJoDrGQD9GKPwKCdW3OmnODMPxJjXc3 > ~/.ssh/authorized_keys - -cp /tmp/ecomp-nexus.crt /usr/local/share/ca-certificates/ ; update-ca-certificates - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-core-utils/1.1.0/dcae-controller-core-utils-1.1.0-runtime.zip -P /opt/app/dcae-controller-core-utils - -cd /opt/app/dcae-controller-core-utils -unzip -o dcae-controller-core-utils*.zip - -chown -R dcae:dcae /opt/app/dcae-controller-core-utils - -/opt/app/dcae-controller-core-utils/bin/fs-init.py - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-service-cdap-cluster-manager/1.1.0/dcae-controller-service-cdap-cluster-manager-1.1.0-runtime.zip -P /opt/app/dcae-controller-service-cdap-cluster-manager - -cd /opt/app/dcae-controller-service-cdap-cluster-manager -unzip -o dcae-controller-service-cdap-cluster-manager*.zip - -chown -R dcae:dcae /opt/app/dcae-controller-service-cdap-cluster-manager - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-service-dmaap-drsub/1.1.0/dcae-controller-service-dmaap-drsub-1.1.0.pom -P /opt/app/dcae-controller-service-dmaap-drsub - -chown -R dcae:dcae /opt/app/dcae-controller-service-dmaap-drsub - -curl -s -k -f -o /tmp/dcae-apod-cdap-small-hadoop_1.1.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.apod.cdap/deb-releases/dcae-apod-cdap-small-hadoop_1.1.0.deb - -curl -s -k -f -o /tmp/dcae-apod-analytics-tca_1.1.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.apod.analytics/deb-releases/dcae-apod-analytics-tca_1.1.0.deb - -curl -s -k -f -o /tmp/HelloWorld-3.5.1.jar http://repo1.maven.org/maven2/co/cask/cdap/HelloWorld/3.5.1/HelloWorld-3.5.1.jar -mkdir -p /opt/app/cask-hello-world/lib -mv /tmp/HelloWorld-3.5.1.jar /opt/app/cask-hello-world/lib - -find /opt -type f -exec sed -i 's/sudo//g' {} \; - -apt-key adv --keyserver-options --keyserver keyserver.ubuntu.com --recv 07513CAD -wget -qO - http://repository.cask.co/ubuntu/precise/amd64/cdap/3.5/pubkey.gpg | apt-key add - - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-service-dmaap-drsub-manager/1.1.0/dcae-controller-service-dmaap-drsub-manager-1.1.0-runtime.zip -P /opt/app/dcae-controller-service-dmaap-drsub-manager - -cd /opt/app/dcae-controller-service-dmaap-drsub-manager -unzip -o dcae-controller-service-dmaap-drsub-manager-1.1.0-runtime.zip - -chown -R dcae:dcae /opt/app/dcae-controller-service-dmaap-drsub-manager - -mkdir /home/dcae/.ssh -chmod og-rwx /home/dcae/.ssh -chown -R dcae:dcae /home/dcae/.ssh -touch /home/dcae/.ssh/authorized_keys -chmod og-rwx /home/dcae/.ssh/authorized_keys -chown -R dcae:dcae /home/dcae/.ssh/authorized_keys -echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBn8Ctt5hJGkTQaffuSeINeABV4viBIM4TcP14kaLiWR1LkyNY+TaUnjxODobtZa4YW1lxFtoMCfZt2A5W9ZZPM+shZr4BOj+wU+xIrzn7ezN/CQjH7c4Wh0mWteuPnJrtdpyGQ/qBI2T+xo5G/Tl++SPUvvN2D4H8vl0miEgVPR47/P7Ba6kl7Bmrf9m0VDPdS69Qr2AhgBq5Qi/fTeGZA4sfKDHHRJxkQIXYmS8R5FISRpBD7ta2NTHapRz9dC6Cw8UttEFiWFUBjN6lwF9LUOkj9MiqiTQaElKKQzMIHr0AhlgIkwBLKAJoDrGQD9GKPwKCdW3OmnODMPxJjXc3 >> /home/dcae/.ssh/authorized_keys - -#bash /opt/app/dcae-cdap-small-hadoop/install.sh diff --git a/kubernetes/dcae/cdap/docker/01-entrypoint.sh b/kubernetes/dcae/cdap/docker/01-entrypoint.sh deleted file mode 100755 index 952d1d4cc6..0000000000 --- a/kubernetes/dcae/cdap/docker/01-entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -dpkg --install /tmp/dcae-apod-cdap-small-hadoop_1.1.0.deb -dpkg --install /tmp/dcae-apod-analytics-tca_1.1.0.deb - -bash /opt/app/dcae-cdap-small-hadoop/install.sh -su dcae -c "/opt/app/dcae-controller-service-cdap-cluster-manager/bin/manager.sh config" -su dcae -c "/opt/app/dcae-controller-service-cdap-cluster-manager/bin/manager.sh restart" \ No newline at end of file diff --git a/kubernetes/dcae/cdap/docker/Dockerfile b/kubernetes/dcae/cdap/docker/Dockerfile deleted file mode 100644 index 5b8583ee51..0000000000 --- a/kubernetes/dcae/cdap/docker/Dockerfile +++ /dev/null @@ -1,57 +0,0 @@ -FROM ubuntu:16.04 - -# Setup apt.conf proxy settings -#RUN echo 'Acquire::http::proxy "http://some.proxy:8084/";' >> /etc/apt/apt.conf - -# Setup Corporate proxy -#ENV no_proxy "localhost,127.0.0.1,localaddress,.localdomain.com,192.168.141.0/24" -#ENV https_proxy http://some.proxy:8084/ -#ENV http_proxy http://fsome.proxy:8084/ -#ENV HTTP_PROXY http://some.proxy:8084/ -#ENV HTTPS_PROXY http://some.proxy:8084/ -#ENV FTP_PROXY http://some.proxy:8084/ -#ENV NO_PROXY "localhost,127.0.0.1,localaddress,.localdomain.com,192.168.141.0/24" - -# Additional packages -RUN apt-get update -y -RUN apt-get install -y git wget unzip curl dnsutils sudo -RUN apt-get install -y maven unzip - -# Install python and pip -RUN apt-get install -y python -RUN wget https://bootstrap.pypa.io/get-pip.py -RUN python get-pip.py -RUN rm get-pip.py -RUN pip install pyyaml - -# Install Groovy -RUN mkdir -p /opt/app -RUN (cd /opt/app ; curl -Lo apache-groovy-binary-2.4.6.zip https://dl.bintray.com/groovy/maven/apache-groovy-binary-2.4.6.zip ) -RUN (cd /opt/app ; unzip apache-groovy-binary-2.4.6.zip ) -RUN mkdir -p /opt/app/java/jdk -RUN ln -s /usr /opt/app/java/jdk/jdk170 -RUN mkdir -p /opt/app/groovy -RUN ln -s /opt/app/groovy-2.4.6 /opt/app/groovy/246 -ENV JAVA_HOME /opt/app/java/jdk/jdk170 - -# Create user dcae -RUN if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -# Hadoop -EXPOSE 8020 8025 50070 50075 50010 50020 - -# Zookeeper -EXPOSE 3888 2888 2181 - -VOLUME /opt/tools -VOLUME /opt/data - -# Provisioning -COPY 00-provisioning.sh /usr/local/bin/00-provisioning.sh -RUN chmod a+x /usr/local/bin/00-provisioning.sh -RUN /usr/local/bin/00-provisioning.sh - -# define the entrypoint -COPY 01-entrypoint.sh /usr/local/bin/01-entrypoint.sh -RUN chmod a+x /usr/local/bin/01-entrypoint.sh -ENTRYPOINT ["/usr/local/bin/01-entrypoint.sh"] diff --git a/kubernetes/dcae/cdap/docker/docker-compose.yaml b/kubernetes/dcae/cdap/docker/docker-compose.yaml deleted file mode 100644 index 100cef499f..0000000000 --- a/kubernetes/dcae/cdap/docker/docker-compose.yaml +++ /dev/null @@ -1,58 +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. - -version: '2' -services: - cdap00: - build: . - hostname: zldcprivatecloudtruecdap00 - image: cdap - ports: - - 8020 - - 50070 - - 50075 - - 50010 - - 50020 - - 3888 - - 2888 - - 2181 - - 8025 - cdap01: - build: . - hostname: zldcprivatecloudtruecdap01 - image: cdap - ports: - - 8020 - - 50070 - - 50075 - - 50010 - - 50020 - - 3888 - - 2888 - - 2181 - - 8025 - cdap02: - build: . - hostname: zldcprivatecloudtruecdap02 - image: cdap - ports: - - 8020 - - 50070 - - 50075 - - 50010 - - 50020 - - 3888 - - 2888 - - 2181 - - 8025 \ No newline at end of file diff --git a/kubernetes/dcae/cdap/docker/fs/Dockerfile b/kubernetes/dcae/cdap/docker/fs/Dockerfile deleted file mode 100644 index 4e458dcd1e..0000000000 --- a/kubernetes/dcae/cdap/docker/fs/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM ubuntu:16.04 - -RUN mkdir -p /cdap -VOLUME /cdap \ No newline at end of file diff --git a/kubernetes/dcae/pgaas/Dockerfile b/kubernetes/dcae/pgaas/Dockerfile deleted file mode 100755 index e1d147dfa9..0000000000 --- a/kubernetes/dcae/pgaas/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM ubuntu:16.04 - -# Install additional packages -RUN apt-get update && apt-get -y install maven openjdk-8-jdk unzip python-pip curl dnsutils vim gawk wget openssh-client-ssh1 -RUN pip install pyyaml - -RUN apt-get update && apt-get install -y postgresql libpq5 repmgr python-psycopg2 python3-psycopg2 libgetopt-java -RUN rm -f /usr/sbin/policy-rc.d - -# Install Groovy -RUN mkdir -p /opt/app -RUN (cd /opt/app ; curl -Lo apache-groovy-binary-2.4.6.zip https://dl.bintray.com/groovy/maven/apache-groovy-binary-2.4.6.zip ) -RUN (cd /opt/app ; unzip apache-groovy-binary-2.4.6.zip ) -RUN mkdir -p /opt/app/java/jdk -RUN ln -s /usr /opt/app/java/jdk/jdk170 -RUN mkdir -p /opt/app/groovy -RUN ln -s /opt/app/groovy-2.4.6 /opt/app/groovy/246 - -# Create user dcae -RUN if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -# Download required packages -RUN curl -s -k -f -o /tmp/org.openecomp.dcae.storage.pgaas-cdf_1.0.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-cdf_1.0.0.deb -RUN curl -s -k -f -o /tmp/org.openecomp.dcae.storage.pgaas-postgresql-prep_1.0.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-postgresql-prep_1.0.0.deb -RUN curl -s -k -f -o /tmp/org.openecomp.dcae.storage.pgaas-postgresql-config_1.0.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-postgresql-config_1.0.0.deb -RUN curl -s -k -f -o /tmp/org.openecomp.dcae.storage.pgaas-pgaas_1.0.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-pgaas_1.0.0.deb -RUN curl -s -k -f -o /tmp/org.openecomp.dcae.storage.pgaas-pgaas-post_1.0.0.deb https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-pgaas-post_1.0.0.deb - -RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/* - -RUN mkdir -p /opt/tools -RUN mkdir -p /dbroot/pgdata -RUN mkdir -p /dbroot/pglogs - -EXPOSE 5432 - -VOLUME /opt/tools -VOLUME /dbroot/pgdata -VOLUME /dbroot/pglogs - -# Setup the entrypoint -COPY setup.sh /usr/local/bin/entrypoint.sh -RUN chmod a+x /usr/local/bin/entrypoint.sh - -ENTRYPOINT ["usr/local/bin/entrypoint.sh"] diff --git a/kubernetes/dcae/pgaas/setup.sh b/kubernetes/dcae/pgaas/setup.sh deleted file mode 100755 index a843995003..0000000000 --- a/kubernetes/dcae/pgaas/setup.sh +++ /dev/null @@ -1,437 +0,0 @@ -#!/bin/bash -cat > /tmp/dcae_install.sh << EOF_DCAE_INSTALL -#!/bin/bash -set -x -cd /tmp - -export DEBIAN_FRONTEND=noninteractive - -#### Using special configuration resource: instances/vm-postgresql/iad4.yaml -## Adding configuration file: main -cat | cat > /tmp/postgres.conf << EOF_CONFIG -master: zldciad4vipstg00 -secondmaster: notused -DRTR_NODE_KSTOREFILE: /opt/app/dcae-certificate/keystore.jks -DRTR_NODE_KSTOREPASS: "No Certificate" -DRTR_NODE_PVTKEYPASS: "No Certificate" -PG_NODES : zldciad4vipstg00 -PG_JAVA_HOME : /opt/app/java/jdk/jdk170 -PG_CLUSTER : site -EOF_CONFIG - -## Adding configuration file: mount_config -cat | cat > /tmp/dcae-mount.conf << EOF_CONFIG -osType: ubuntu -volumes: - opt: - uuid: ephemeral - size: 80 - filesystems: - /opt/tools: - size: 80 - type: ext4 - mount_opts: '' - dbroot: - uuid: cinder - size: 75 - filesystems: - /dbroot/pgdata: - size: 50 - type: ext4 - mount_opts: '' - /dbroot/pglogs: - size: 25 - type: ext4 - mount_opts: '' - -EOF_CONFIG - -## Adding configuration file: ecomp-nexus -cat > /tmp/ecomp-nexus.crt << EOF_CONFIG ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIEet16RjANBgkqhkiG9w0BAQsFADB2MQswCQYDVQQGEwJVUzEUMBIGA1UE -CBMLVW5zcGVjaWZpZWQxFDASBgNVBAcTC1Vuc3BlY2lmaWVkMREwDwYDVQQKEwhTb25hdHlwZTEQ -MA4GA1UECxMHRXhhbXBsZTEWMBQGA1UEAwwNKi5lY29tcC1uZXh1czAeFw0xNjExMTQxMDE5NDJa -Fw0zMDA3MjQxMDE5NDJaMHYxCzAJBgNVBAYTAlVTMRQwEgYDVQQIEwtVbnNwZWNpZmllZDEUMBIG -A1UEBxMLVW5zcGVjaWZpZWQxETAPBgNVBAoTCFNvbmF0eXBlMRAwDgYDVQQLEwdFeGFtcGxlMRYw -FAYDVQQDDA0qLmVjb21wLW5leHVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqkDu -vC91cZxOaRMYGHSyDeuw4hyXjqyD5Etl5L5TNN7+uFKEtvXsRYOxtD62TqWHKozffLE5o6zoRZL4 -8qNTQyAx0LaEfWfR2w0jat+UqtqEtW0xpOD0/O0qRq5Y/XG3Yr8SQ/y84Pr1FIflM7pM4PZTt3kc -UfqzbaONW5K8t+UG+5jgNXdRk3hln8WMunVZeci0J6TV+tWs9tOeAKBdpI7K7LV+FJBaF8vBAw2x -8AhlNPXKQUhK+M3DD73c1aLWrZ3mIwJXt2oQUDwgtXGCPR1/Z9f2tTAoDxpzvkwtP/BtH3qvgtpY -QfDNmWbJVHh6ll39Hapt7V0v4aCRSN21ZQIDAQABo00wSzAMBgNVHRMEBTADAQH/MBwGA1UdEQQV -MBOCC2Vjb21wLW5leHVzhwQK0MVLMB0GA1UdDgQWBBQxcUlk/lkKkwSz0GuewbXptJxl+zANBgkq -hkiG9w0BAQsFAAOCAQEAPnNbtdreMZaUSjv+1eqpriLKquwnZhnwWENn1u3sw4hTAWQc+ehhogGg -eIqPN81Dt3jhr0bYZW+r3gGq7tgrLxdSXso8bTtqHsFLszirgWcQXDlBQGnw9wqp/KBzeDJInJep -d6aGu3yBXV6459S/mClxZTSvsR+Vz3rRWxx01R3/ft5/myqrRMDnEncqPopTbEamBuUJL3eJDpFO -xlVqYR3y6AXwwguMaTiHMfFBmDOVaz4K8Qy6AaHH9eoch9fxOJ/7ASvqSwkC9GYTJSnF2vE37rmH -kPp//Vm4WSnQ2NrBGkH9rUUdYdDdgWJYnTeZ+YFd8J6z9xNiEn9QKQNNcA== ------END CERTIFICATE----- - -EOF_CONFIG -## Adding configuration file: vm-postgresql-console.properties -cat > /tmp/vm-postgresql-console.properties << EOF_CONFIG -localhost.endpoint=http://localhost:9999 -localhost.user=console -localhost.password=MDBmMzE0NTgyMDU1NmVj -EOF_CONFIG - -## Adding configuration file: vm-postgresql-gui.properties -cat > /tmp/vm-postgresql-gui.properties << EOF_CONFIG -EOF_CONFIG - -## Adding configuration file: vm-postgresql-log4j.properties -cat > /tmp/vm-postgresql-log4j.properties << EOF_CONFIG -#log4j.debug=0 -log4j.rootLogger=warn, file -log4j.logger.org.openecomp.ncomp=info, file -log4j.additivity.org.openecomp.ncomp=false - -#log4j.logger.org.apache.http.headers=debug, file -#log4j.logger.org.apache.http.wire=debug, file -## uploaded logger -log4j.logger.org.openecomp.ncomp.sirius.manager.uploaded=info, uploaded -log4j.additivity.org.openecomp.ncomp.sirius.manager.uploaded=false -## request logging -log4j.logger.org.openecomp.ncomp.sirius.manager.ManagementServer.requests=info, requests -log4j.additivity.org.openecomp.ncomp.sirius.manager.ManagementServer.requests=false -## openstack polling -log4j.logger.org.openecomp.ncomp.openstack.OpenStackUtil.polling=info, polling -log4j.additivity.org.openecomp.ncomp.openstack.OpenStackUtil.polling=false -log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=logs/manager.log -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.file.MaxFileSize=50MB -log4j.appender.file.MaxBackupIndex=5 - -log4j.appender.uploaded=org.apache.log4j.RollingFileAppender -log4j.appender.uploaded.File=logs/manager-uploaded.log -log4j.appender.uploaded.layout=org.apache.log4j.PatternLayout -log4j.appender.uploaded.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.uploaded.MaxFileSize=50MB -log4j.appender.uploaded.MaxBackupIndex=5 - -log4j.appender.requests=org.apache.log4j.RollingFileAppender -log4j.appender.requests.File=logs/manager-requests.log -log4j.appender.requests.layout=org.apache.log4j.PatternLayout -log4j.appender.requests.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.requests.MaxFileSize=50MB -log4j.appender.requests.MaxBackupIndex=5 -log4j.appender.polling=org.apache.log4j.RollingFileAppender -log4j.appender.polling.File=logs/manager-polling.log -log4j.appender.polling.layout=org.apache.log4j.PatternLayout -log4j.appender.polling.layout.ConversionPattern=%d %5p [%t] %m %C:%L%n -log4j.appender.polling.MaxFileSize=50MB -log4j.appender.polling.MaxBackupIndex=5 - -### ECOMP Logging -log4j.logger.org.openecomp.audit=info, audit -log4j.additivity.org.openecomp.audit=false -log4j.logger.org.openecomp.metrics=info, metrics -log4j.additivity.org.openecomp.metrics=false -log4j.logger.org.openecomp.error=info, error -log4j.additivity.org.openecomp.error=false -log4j.logger.com.att.eelf.debug=info, debug -log4j.additivity.org.openecomp.debug=false -log4j.appender.audit=org.apache.log4j.RollingFileAppender -log4j.appender.audit.File=logs/audit.log -log4j.appender.audit.layout=org.apache.log4j.PatternLayout -log4j.appender.audit.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%5p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.audit.MaxFileSize=50MB -log4j.appender.audit.MaxBackupIndex=5 -log4j.appender.metrics=org.apache.log4j.RollingFileAppender -log4j.appender.metrics.File=logs/metrics.log -log4j.appender.metrics.layout=org.apache.log4j.PatternLayout -log4j.appender.metrics.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.metrics.MaxFileSize=50MB -log4j.appender.metrics.MaxBackupIndex=5 -log4j.appender.error=org.apache.log4j.RollingFileAppender -log4j.appender.error.File=logs/error.log -log4j.appender.error.layout=org.apache.log4j.PatternLayout -log4j.appender.error.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.error.MaxFileSize=50MB -log4j.appender.error.MaxBackupIndex=5 -log4j.appender.debug=org.apache.log4j.RollingFileAppender -log4j.appender.debug.File=logs/debug.log -log4j.appender.debug.layout=org.apache.log4j.PatternLayout -log4j.appender.debug.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName}|%X{InstanceUUID}|%p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|%m%n -log4j.appender.debug.MaxFileSize=50MB -log4j.appender.debug.MaxBackupIndex=5 -EOF_CONFIG - -## Adding configuration file: vm-postgresql-manager.properties -cat > /tmp/vm-postgresql-manager.properties << EOF_CONFIG -server.dir = data/resources -metrics.dir = data/metrics -properties.dir = data/properties -server.port = 9999 -server.user.console = MDBmMzE0NTgyMDU1NmVj -server.user.gui = M2NiOTg1YzNiYTI2NTJh -server.user.client = OTNmMmFkYzkxMzYzNTk0 -EOF_CONFIG - -## Adding configuration file: vm-postgresql-runtime.properties -cat > /tmp/vm-postgresql-runtime.properties << EOF_CONFIG -factory.vm=org.openecomp.dcae.controller.service.servers.vm.DcaeVmFactory -factory.postgres=org.openecomp.dcae.controller.service.storage.postgres.service.impl.ServicePackageImpl -EOF_CONFIG - -## Adding configuration file: vm-postgresql-hosts -cat > /tmp/vm-postgresql-hosts << EOF_CONFIG -EOF_CONFIG - -## Adding configuration file: monitoring-agent-gui.properties -cat > /tmp/monitoring-agent-gui.properties << EOF_CONFIG -EOF_CONFIG - -cat >> /etc/hosts << HOSTS_EOF -HOSTS_EOF - -cat > /tmp/certificate.pkcs12.b64code << EOF_CERT -EOF_CERT - -############################################################## -##################### CLOUDINIT ############################## -############################################################## - -## need to fix cloudinit in Centos. - -CLOUDHOSTCFG=/etc/cloud/cloud.cfg.d/99_hostname.cfg -if [ -f /etc/redhat-release ]; then - # CentOS/RHEL - ( echo "hostname: \$(hostname)"; echo "fqdn: \$(hostname -f)" ) > \$CLOUDHOSTCFG -fi - -mkdir -p ~/.ssh -touch ~/.ssh/authorized_keys - -echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYz++VKcW3Sw0Sh7fFyTIjXED6NUUNYbje7awcnvaHHAC0rUxs7boX6hmWDViXoGZA5xw4Xhk5kIEs+zxMCDlF1q/9rbyq5ndonlBz3aPx7+SBqVR5sPalbSr8dJhGPwpj/0Df+FzqjGVL2p2d4VV7SeT/kKrNcSY6SmYHln6osoGFAHsOZC0d+fiba4zfCI9EI6zHdyCujwayjQ5W5UgA50XQ0KXpI5WtF6MOwO6jPL3SNNDlWobG/nsCAMxTQ04dALpYSoamM12Ps72MfxEwaKkoAcsH6WsFbuvoUSXwNcosmyxYrxNynsUz4C2Tz+PZqelGvm8Y8MtNuhN7oqAD root@ecomp-jumpbox >> /home/ubuntu/.ssh/authorized_keys - -######### step-1 - -cp /tmp/ecomp-nexus.crt /usr/local/share/ca-certificates/ ; update-ca-certificates - -######### step-2 - -echo 162.242.254.138 ecomp-nexus >> /etc/hosts - -######### step-3 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -case runtime in - %*) - A1=org.openecomp.dcae.controller:dcae-controller-core-utils:1.0.0:zip - ;; - *) - A1=org.openecomp.dcae.controller:dcae-controller-core-utils:1.0.0:zip:runtime - ;; -esac - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-core-utils/1.0.0/dcae-controller-core-utils-1.0.0-runtime.zip -P /opt/app/dcae-controller-core-utils - -case zip in - jar) - mkdir /opt/app/dcae-controller-core-utils/lib - mv /opt/app/dcae-controller-core-utils/*.jar /opt/app/dcae-controller-core-utils/lib - ;; - zip) - ( cd /opt/app/dcae-controller-core-utils ; unzip -o dcae-controller-core-utils*.zip ) - ;; -esac - -chown -R dcae:dcae /opt/app/dcae-controller-core-utils - -######### step-4 - -/opt/app/dcae-controller-core-utils/bin/fs-init.py - -######### step-5 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -case runtime in - %*) - A1=org.openecomp.dcae.controller:dcae-controller-service-common-vm-manager:1.0.0:zip - ;; - *) - A1=org.openecomp.dcae.controller:dcae-controller-service-common-vm-manager:1.0.0:zip:runtime - ;; -esac - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-service-common-vm-manager/1.0.0/dcae-controller-service-common-vm-manager-1.0.0-runtime.zip -P /opt/app/dcae-controller-service-common-vm-manager - -case zip in - jar) - mkdir /opt/app/dcae-controller-service-common-vm-manager/lib - mv /opt/app/dcae-controller-service-common-vm-manager/*.jar /opt/app/dcae-controller-service-common-vm-manager/lib - ;; - zip) - ( cd /opt/app/dcae-controller-service-common-vm-manager ; unzip -o dcae-controller-service-common-vm-manager*.zip ) - ;; -esac - -chown -R dcae:dcae /opt/app/dcae-controller-service-common-vm-manager - -######### step-6 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -case %{assemblyId} in - %*) - A1=org.openecomp.dcae.controller:dcae-controller-service-storage-postgres-model:1.0.0:jar - ;; - *) - A1=org.openecomp.dcae.controller:dcae-controller-service-storage-postgres-model:1.0.0:jar:%{assemblyId} - ;; -esac - -wget https://nexus.onap.org/content/repositories/staging/org/openecomp/dcae/controller/dcae-controller-service-storage-postgres-model/1.0.0/dcae-controller-service-storage-postgres-model-1.0.0.jar -P /opt/app/dcae-controller-service-storage-postgres-model - -case jar in - jar) - mkdir /opt/app/dcae-controller-service-storage-postgres-model/lib - mv /opt/app/dcae-controller-service-storage-postgres-model/*.jar /opt/app/dcae-controller-service-storage-postgres-model/lib - ;; - zip) - ( cd /opt/app/dcae-controller-service-storage-postgres-model ; unzip -o dcae-controller-service-storage-postgres-model*.zip ) - ;; -esac - -chown -R dcae:dcae /opt/app/dcae-controller-service-storage-postgres-model - -######### step-7 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -OUT=/tmp/`basename https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-cdf_1.0.0.deb` - -case deb in - deb) - dpkg --install \$OUT - ;; - jar) - mkdir -p /opt/app/%{artifactId}/lib - mv \$OUT /opt/app/%{artifactId}/lib - chown -R dcae:dcae /opt/app/%{artifactId} - ;; - zip) - mkdir -p /opt/app/%{artifactId}/lib - ( cd /opt/app/%{artifactId} ; cp -p \$OUT . ; unzip -o \$OUT ) - chown -R dcae:dcae /opt/app/%{artifactId} - ;; -esac - -######### step-8 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -OUT=/tmp/`basename https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-postgresql-prep_1.0.0.deb` - -case deb in - deb) - dpkg --install \$OUT - ;; - jar) - mkdir -p /opt/app/%{artifactId}/lib - mv \$OUT /opt/app/%{artifactId}/lib - chown -R dcae:dcae /opt/app/%{artifactId} - ;; - zip) - mkdir -p /opt/app/%{artifactId}/lib - ( cd /opt/app/%{artifactId} ; cp -p \$OUT . ; unzip -o \$OUT ) - chown -R dcae:dcae /opt/app/%{artifactId} - ;; -esac - -######### step-9 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -OUT=/tmp/`basename https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-postgresql-config_1.0.0.deb` - -case deb in - deb) - dpkg --install \$OUT - ;; - jar) - mkdir -p /opt/app/%{artifactId}/lib - mv \$OUT /opt/app/%{artifactId}/lib - chown -R dcae:dcae /opt/app/%{artifactId} - ;; - zip) - mkdir -p /opt/app/%{artifactId}/lib - ( cd /opt/app/%{artifactId} ; cp -p \$OUT . ; unzip -o \$OUT ) - chown -R dcae:dcae /opt/app/%{artifactId} - ;; -esac - -######### step-10 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -OUT=/tmp/`basename https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-pgaas_1.0.0.deb` - -case deb in - deb) - dpkg --install \$OUT - ;; - jar) - mkdir -p /opt/app/%{artifactId}/lib - mv \$OUT /opt/app/%{artifactId}/lib - chown -R dcae:dcae /opt/app/%{artifactId} - ;; - zip) - mkdir -p /opt/app/%{artifactId}/lib - ( cd /opt/app/%{artifactId} ; cp -p \$OUT . ; unzip -o \$OUT ) - chown -R dcae:dcae /opt/app/%{artifactId} - ;; -esac - -touch /etc/sudoers.d/dcae-postgres -echo "dcae ALL=(postgres) NOPASSWD: ALL" > /etc/sudoers.d/dcae-postgres - -/opt/app/postgresql-prep/bin/iDNS-responder.py & - -/etc/init.d/cron restart - -######### step-11 - -if [ ! -e /home/dcae ]; then useradd -m -s /bin/bash dcae; fi - -OUT=/tmp/`basename https://nexus.onap.org/content/sites/raw/org.openecomp.dcae.pgaas/deb-releases/org.openecomp.dcae.storage.pgaas-pgaas-post_1.0.0.deb` -case deb in - deb) - dpkg --install \$OUT - ;; - jar) - mkdir -p /opt/app/%{artifactId}/lib - mv \$OUT /opt/app/%{artifactId}/lib - chown -R dcae:dcae /opt/app/%{artifactId} - ;; - zip) - mkdir -p /opt/app/%{artifactId}/lib - ( cd /opt/app/%{artifactId} ; cp -p \$OUT . ; unzip -o \$OUT ) - chown -R dcae:dcae /opt/app/%{artifactId} - ;; -esac - -######### step-12 - -find /opt -type f -exec sed -i 's/sudo//g' {} \; -su dcae -c "/opt/app/dcae-controller-service-common-vm-manager/bin/manager.sh config" -su dcae -c "/opt/app/dcae-controller-service-common-vm-manager/bin/manager.sh restart" - -mkdir /home/dcae/.ssh -chmod og-rwx /home/dcae/.ssh -chown -R dcae:dcae /home/dcae/.ssh -touch /home/dcae/.ssh/authorized_keys -chmod og-rwx /home/dcae/.ssh/authorized_keys -chown -R dcae:dcae /home/dcae/.ssh/authorized_keys -echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYz++VKcW3Sw0Sh7fFyTIjXED6NUUNYbje7awcnvaHHAC0rUxs7boX6hmWDViXoGZA5xw4Xhk5kIEs+zxMCDlF1q/9rbyq5ndonlBz3aPx7+SBqVR5sPalbSr8dJhGPwpj/0Df+FzqjGVL2p2d4VV7SeT/kKrNcSY6SmYHln6osoGFAHsOZC0d+fiba4zfCI9EI6zHdyCujwayjQ5W5UgA50XQ0KXpI5WtF6MOwO6jPL3SNNDlWobG/nsCAMxTQ04dALpYSoamM12Ps72MfxEwaKkoAcsH6WsFbuvoUSXwNcosmyxYrxNynsUz4C2Tz+PZqelGvm8Y8MtNuhN7oqAD root@ecomp-jumpbox >> /home/dcae/.ssh/authorized_keys -#no final script: vm-postgresql.userdata -EOF_DCAE_INSTALL -echo null > /tmp/.password -chmod u+x /tmp/dcae_install.sh -/tmp/dcae_install.sh 2>&1 | tee /tmp/dcae_install.log diff --git a/kubernetes/dcae/templates/all-services.yaml b/kubernetes/dcae/templates/all-services.yaml deleted file mode 100644 index 998f97d3bd..0000000000 --- a/kubernetes/dcae/templates/all-services.yaml +++ /dev/null @@ -1,143 +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.disableDcaeZookeeper }} -apiVersion: v1 -kind: Service -metadata: - name: zookeeper - namespace: "{{ .Values.nsPrefix }}" - labels: - app: zookeeper -spec: - ports: - - name: zookeeper1 - port: 2181 - selector: - app: zookeeper - clusterIP: None -#{{ end }} -#{{ if not .Values.disableDcaeKafka }} ---- -apiVersion: v1 -kind: Service -metadata: - name: kafka - namespace: "{{ .Values.nsPrefix }}" - labels: - app: kafka -spec: - ports: - - name: kafka1 - port: 9092 - selector: - app: kafka - clusterIP: None -#{{ end }} -#{{ if not .Values.disableDcaeDmaap }} ---- -apiVersion: v1 -kind: Service -metadata: - name: dmaap - namespace: "{{ .Values.nsPrefix }}" - labels: - app: dmaap - version: 1.1.0 -spec: - ports: - - name: mr1 - port: 3904 - #nodePort: {{ .Values.nodePortPrefix }}27 - - name: mr2 - port: 3905 - #nodePort: {{ .Values.nodePortPrefix }}26 - selector: - app: dmaap - #type: NodePort - clusterIP: None -#{{ end }} -#{{ if not .Values.disableDcaeDcaePgaas }} ---- -apiVersion: v1 -kind: Service -metadata: - name: zldciad4vipstg00 - namespace: "{{ .Values.nsPrefix }}" - labels: - app: dcae-pgaas -spec: - selector: - app: dcae-pgaas - ports: - - port: 5432 - protocol: TCP - targetPort: 5432 - nodePort: {{ .Values.nodePortPrefix }}45 - type: NodePort -#{{ end }} -#{{ if not .Values.disableDcaeDcaeCollectorCommonEvent }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: dcae-collector-common-event - version: latest - name: dcae-collector-common-event - namespace: "{{ .Values.nsPrefix }}" -spec: - ports: - - name: dcae-ce1 - port: 8080 - protocol: TCP - nodePort: {{ .Values.nodePortPrefix }}36 - - name: dcae-ce2 - port: 8443 - protocol: TCP - nodePort: {{ .Values.nodePortPrefix }}37 - - name: dcae-ce3 - port: 9999 - protocol: TCP - nodePort: {{ .Values.nodePortPrefix }}38 - selector: - app: dcae-collector-common-event - type: NodePort -#{{ end }} -#{{ if not .Values.disableDcaeDcaeCollectorDmaapbc }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: dcae-collector-dmaapbc - version: latest - name: dcae-collector-dmaapbc - namespace: "{{ .Values.nsPrefix }}" -spec: - ports: - - name: dcae-bc1 - port: 8080 - protocol: TCP - targetPort: 8080 - nodePort: {{ .Values.nodePortPrefix }}39 - - name: dcae-bc2 - port: 8443 - protocol: TCP - targetPort: 8443 - nodePort: {{ .Values.nodePortPrefix }}40 - selector: - app: dcae-collector-dmaapbc - type: NodePort -#{{ end }} \ No newline at end of file diff --git a/kubernetes/dcae/templates/cdap0-dep.yaml b/kubernetes/dcae/templates/cdap0-dep.yaml deleted file mode 100644 index 5b0e465ed8..0000000000 --- a/kubernetes/dcae/templates/cdap0-dep.yaml +++ /dev/null @@ -1,93 +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.disableDcaeCdap }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - deployment.kubernetes.io/revision: "1" - labels: - app: cdap0 - name: cdap0 - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: cdap0 - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - labels: - app: cdap0 - name: cdap0 - spec: - initContainers: - - command: ["/bin/bash", "-c", "mkdir -p /cdap/{cdap0-opt-tools,cdap0-opt-data,pod-ip}; grep `hostname` /etc/hosts > /cdap/pod-ip/`hostname`_ip.txt; while [`ls /cdap/pod-ip | wc -l` < 3]; do sleep 1; done"] - name: create-fs - image: {{ .Values.image.cdapfs }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /cdap - name: cdap-root - hostname: zldcprivatecloudtruecdap00 - containers: - - image: {{ .Values.image.cdap }} - imagePullPolicy: {{ .Values.pullPolicy }} - command: ["/bin/bash"] - args: ["-c", "cat /cdap/pod-ip/* >> /etc/hosts; /usr/local/bin/01-entrypoint.sh; sleep infinity;"] - name: cdap0 - ports: - - containerPort: 8020 - protocol: TCP - - containerPort: 8025 - protocol: TCP - - containerPort: 50070 - protocol: TCP - - containerPort: 50075 - protocol: TCP - - containerPort: 50010 - protocol: TCP - - containerPort: 50020 - protocol: TCP - - containerPort: 3888 - protocol: TCP - - containerPort: 2888 - protocol: TCP - - containerPort: 2181 - protocol: TCP - volumeMounts: - - mountPath: /cdap - name: cdap-root - - mountPath: /opt/tools - name: dcae-cdap0-opt-tools - - mountPath: /opt/data - name: dcae-cdap0-opt-data - volumes: - - name: cdap-root - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap - - name: dcae-cdap0-opt-tools - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap0-opt-tools - - name: dcae-cdap0-opt-data - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap0-opt-data - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/cdap1-dep.yaml b/kubernetes/dcae/templates/cdap1-dep.yaml deleted file mode 100644 index 1a954c8632..0000000000 --- a/kubernetes/dcae/templates/cdap1-dep.yaml +++ /dev/null @@ -1,93 +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.disableDcaeCdap }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - deployment.kubernetes.io/revision: "1" - labels: - app: cdap1 - name: cdap1 - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: cdap1 - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - labels: - app: cdap1 - name: cdap1 - spec: - initContainers: - - command: ["/bin/bash", "-c", "mkdir -p /cdap/{cdap1-opt-tools,cdap1-opt-data}; grep `hostname` /etc/hosts > /cdap/pod-ip/`hostname`_ip.txt; while [`ls /cdap/pod-ip | wc -l` < 3]; do sleep 1; done"] - name: create-fs - image: {{ .Values.image.cdapfs }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /cdap - name: cdap-root - hostname: zldcprivatecloudtruecdap01 - containers: - - image: {{ .Values.image.cdap }} - imagePullPolicy: {{ .Values.pullPolicy }} - command: ["/bin/bash"] - args: ["-c", "cat /cdap/pod-ip/* >> /etc/hosts; /usr/local/bin/01-entrypoint.sh; sleep infinity;"] - name: cdap1 - ports: - - containerPort: 8020 - protocol: TCP - - containerPort: 8025 - protocol: TCP - - containerPort: 50070 - protocol: TCP - - containerPort: 50075 - protocol: TCP - - containerPort: 50010 - protocol: TCP - - containerPort: 50020 - protocol: TCP - - containerPort: 3888 - protocol: TCP - - containerPort: 2888 - protocol: TCP - - containerPort: 2181 - protocol: TCP - volumeMounts: - - mountPath: /cdap - name: cdap-root - - mountPath: /opt/tools - name: dcae-cdap1-opt-tools - - mountPath: /opt/data - name: dcae-cdap1-opt-data - volumes: - - name: cdap-root - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap - - name: dcae-cdap1-opt-tools - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap1-opt-tools - - name: dcae-cdap1-opt-data - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap1-opt-data - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/cdap2-dep.yaml b/kubernetes/dcae/templates/cdap2-dep.yaml deleted file mode 100644 index fac825e227..0000000000 --- a/kubernetes/dcae/templates/cdap2-dep.yaml +++ /dev/null @@ -1,93 +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.disableDcaeCdap }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - deployment.kubernetes.io/revision: "1" - labels: - app: cdap2 - name: cdap2 - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: cdap2 - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - labels: - app: cdap2 - name: cdap2 - spec: - initContainers: - - command: ["/bin/bash", "-c", "mkdir -p /cdap/{cdap2-opt-tools,cdap2-opt-data}; grep `hostname` /etc/hosts > /cdap/pod-ip/`hostname`_ip.txt; while [`ls /cdap/pod-ip | wc -l` < 3]; do sleep 1; done"] - name: create-fs - image: {{ .Values.image.cdapfs }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /cdap - name: cdap-root - hostname: zldcprivatecloudtruecdap02 - containers: - - image: {{ .Values.image.cdap }} - imagePullPolicy: {{ .Values.pullPolicy }} - command: ["/bin/bash"] - args: ["-c", "cat /cdap/pod-ip/* >> /etc/hosts; /usr/local/bin/01-entrypoint.sh; sleep infinity;"] - name: cdap2 - ports: - - containerPort: 8020 - protocol: TCP - - containerPort: 8025 - protocol: TCP - - containerPort: 50070 - protocol: TCP - - containerPort: 50075 - protocol: TCP - - containerPort: 50010 - protocol: TCP - - containerPort: 50020 - protocol: TCP - - containerPort: 3888 - protocol: TCP - - containerPort: 2888 - protocol: TCP - - containerPort: 2181 - protocol: TCP - volumeMounts: - - mountPath: /cdap - name: cdap-root - - mountPath: /opt/tools - name: dcae-cdap2-opt-tools - - mountPath: /opt/data - name: dcae-cdap2-opt-data - volumes: - - name: cdap-root - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap - - name: dcae-cdap2-opt-tools - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap2-opt-tools - - name: dcae-cdap2-opt-data - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/cdap/cdap2-opt-data - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-collector-common-event.yaml b/kubernetes/dcae/templates/dcae-collector-common-event.yaml deleted file mode 100644 index b15d34bad0..0000000000 --- a/kubernetes/dcae/templates/dcae-collector-common-event.yaml +++ /dev/null @@ -1,54 +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.disableDcaeDcaeCollectorCommonEvent }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: dcae-collector-common-event - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: dcae-collector-common-event - template: - metadata: - labels: - app: dcae-collector-common-event - name: dcae-collector-common-event - spec: - containers: - - image: {{ .Values.image.commonevent }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dcae-collector-common-event - ports: - - containerPort: 8080 - - containerPort: 8443 - - containerPort: 9999 - env: -# - name: KAFKA_ZOOKEEPER_CONNECT -# value: "zookeeper:2181" -# command: -# - start-kafka.sh - volumeMounts: - - mountPath: /opt/app/manager/config - name: dcae-collector-common-event-config - restartPolicy: Always - volumes: - - name: dcae-collector-common-event-config - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/common-event/config - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-collector-dmaapbc.yaml b/kubernetes/dcae/templates/dcae-collector-dmaapbc.yaml deleted file mode 100644 index 35e913e1bb..0000000000 --- a/kubernetes/dcae/templates/dcae-collector-dmaapbc.yaml +++ /dev/null @@ -1,53 +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.disableDcaeDcaeCollectorDmaapbc }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: dcae-collector-dmaapbc - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: dcae-collector-dmaapbc - template: - metadata: - labels: - app: dcae-collector-dmaapbc - name: dcae-collector-dmaapbc - spec: - containers: - - image: {{ .Values.image.dmaapbc }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dcae-collector-dmaapbc - ports: - - containerPort: 18080 - - containerPort: 18443 - env: -# - name: KAFKA_ZOOKEEPER_CONNECT -# value: "zookeeper:2181" -# command: -# - start-kafka.sh - volumeMounts: - - mountPath: /opt/app/config - name: dcae-collector-dmaapbc-config - restartPolicy: Always - volumes: - - name: dcae-collector-dmaapbc-config - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/dmaapbc/config - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-controller.yaml b/kubernetes/dcae/templates/dcae-controller.yaml deleted file mode 100644 index b7a0e13b88..0000000000 --- a/kubernetes/dcae/templates/dcae-controller.yaml +++ /dev/null @@ -1,77 +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.disableDcaeDcaeController }} -apiVersion: v1 -kind: Service -metadata: - labels: - app: dcae-controller - version: latest - name: dcae-controller - namespace: "{{ .Values.nsPrefix }}" -spec: - ports: - - name: dcae-con1 - port: 8000 - protocol: TCP - targetPort: 8000 - nodePort: {{ .Values.nodePortPrefix }}34 - - name: dcae-con2 - port: 9998 - protocol: TCP - targetPort: 9998 - nodePort: {{ .Values.nodePortPrefix }}35 - selector: - app: dcae-controller - type: NodePort ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: dcae-controller - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: dcae-controller - template: - metadata: - labels: - app: dcae-controller - name: dcae-controller - spec: - containers: - - image: {{ .Values.image.controller }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dcae-controller - ports: - - containerPort: 8000 - - containerPort: 9998 - env: -# - name: KAFKA_ZOOKEEPER_CONNECT -# value: "zookeeper:2181" -# command: -# - start-kafka.sh - volumeMounts: - - mountPath: /opt/app/config - name: dcae-controller-config - restartPolicy: Always - volumes: - - name: dcae-controller-config - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/dcae-controller/config - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-dmaap.yaml b/kubernetes/dcae/templates/dcae-dmaap.yaml deleted file mode 100644 index 560da5f604..0000000000 --- a/kubernetes/dcae/templates/dcae-dmaap.yaml +++ /dev/null @@ -1,80 +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.disableDcaeDmaap }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: dmaap - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: dmaap - template: - metadata: - labels: - app: dmaap - name: dmaap - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - kafka - - --container-name - - zookeeper - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dmaap-readiness - containers: - - image: {{ .Values.image.dmaap }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dmaap - ports: - - containerPort: 3904 - - containerPort: 3905 - readinessProbe: - tcpSocket: - port: 3904 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties - name: appprops - - mountPath: /appl/dmaapMR1/etc/cadi.properties - name: cadi - - mountPath: /appl/dmaapMR1/etc/keyfile - name: mykey - restartPolicy: Always - volumes: - - name: appprops - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dmaap/MsgRtrApi.properties - - name: cadi - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dmaap/cadi.properties - - name: mykey - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dmaap/mykey - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-kafka.yaml b/kubernetes/dcae/templates/dcae-kafka.yaml deleted file mode 100644 index 52d0503983..0000000000 --- a/kubernetes/dcae/templates/dcae-kafka.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.disableDcaeKafka }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: kafka - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: kafka - template: - metadata: - labels: - app: kafka - name: kafka - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - zookeeper - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: kafka-readiness - containers: - - image: {{ .Values.image.kafka }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: kafka - ports: - - containerPort: 9092 - readinessProbe: - tcpSocket: - port: 9092 - initialDelaySeconds: 5 - periodSeconds: 10 - env: - - name: KAFKA_ZOOKEEPER_CONNECT - value: "zookeeper.{{ .Values.nsPrefix }}" - - name: KAFKA_ADVERTISED_HOST_NAME - value: "kafka" - - name: KAFKA_BROKER_ID - value: "1" - - name: KAFKA_ADVERTISED_PORT - value: "9092" - - name: KAFKA_PORT - value: "9092" - volumeMounts: - - mountPath: /var/run/docker.sock - name: docker-socket - - mountPath: /kafka - name: kafka-data - - mountPath: /start-kafka.sh - name: start-kafka - restartPolicy: Always - volumes: - - name: docker-socket - hostPath: - path: /var/run/docker.sock - - name: kafka-data - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dcae-startup-vm-message-router/docker_files/data-kafka/ - - name: start-kafka - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dcae-startup-vm-message-router/docker_files/start-kafka.sh - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/dcae-zookeeper.yaml b/kubernetes/dcae/templates/dcae-zookeeper.yaml deleted file mode 100644 index 7203cb92db..0000000000 --- a/kubernetes/dcae/templates/dcae-zookeeper.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.disableDcaeZookeeper }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: zookeeper - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: zookeeper - template: - metadata: - labels: - app: zookeeper - name: zookeeper - spec: - containers: - - image: {{ .Values.image.zookeeper }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: zookeeper - ports: - - containerPort: 2181 - volumeMounts: - - mountPath: /opt/zookeeper-3.4.9/data - name: zookeeper-data - restartPolicy: Always - volumes: - - name: zookeeper-data - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/message-router/dcae-startup-vm-message-router/docker_files/data-zookeeper - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/dcae/templates/pgaas.yaml b/kubernetes/dcae/templates/pgaas.yaml deleted file mode 100644 index 61aa93dcb2..0000000000 --- a/kubernetes/dcae/templates/pgaas.yaml +++ /dev/null @@ -1,63 +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.disableDcaeDcaePgaas }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - deployment.kubernetes.io/revision: "1" - labels: - app: dcae-pgaas - name: dcae-pgaas - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: 1 - selector: - matchLabels: - app: dcae-pgaas - template: - metadata: - labels: - app: dcae-pgaas - spec: - hostname: zldciad4vipstg00 - containers: - - image: {{ .Values.image.pgaas }} - imagePullPolicy: {{ .Values.pullPolicy }} - command: ["/bin/bash"] - args: ["-c", "/usr/local/bin/entrypoint.sh; sleep infinity;"] - name: dcae-pgaas - ports: - - containerPort: 5432 - volumeMounts: - - mountPath: /dbroot/pgdata - name: dcae-pgaas-pgdata - - mountPath: /dbroot/pglogs - name: dcae-pgaas-pglogs - - mountPath: /opt/tools - name: dcae-pgaas-tools - volumes: - - name: dcae-pgaas-pgdata - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/pgaas/pgdata - - name: dcae-pgaas-pglogs - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/pgaas/pglogs - - name: dcae-pgaas-tools - hostPath: - path: /dockerdata-nfs/{{ .Values.nsPrefix }}/dcae/pgaas/tools - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/esr/resources/config/log/filebeat/filebeat.yml b/kubernetes/esr/resources/config/log/filebeat/filebeat.yml index 16c7943beb..49197d3b82 100644 --- a/kubernetes/esr/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/esr/resources/config/log/filebeat/filebeat.yml @@ -22,7 +22,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/esr/values.yaml b/kubernetes/esr/values.yaml index 5253d9a6f8..82aa3347bb 100644 --- a/kubernetes/esr/values.yaml +++ b/kubernetes/esr/values.yaml @@ -26,3 +26,8 @@ esrgui: replicas: 1 filebeat: image: docker.elastic.co/beats/filebeat:5.5.0 + +config: + logstashServiceName: log-ls + logstashPort: 5044 + diff --git a/kubernetes/log/.helmignore b/kubernetes/log/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/log/.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/log/Chart.yaml b/kubernetes/log/Chart.yaml index 96124138b1..9b902e8879 100644 --- a/kubernetes/log/Chart.yaml +++ b/kubernetes/log/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP Logging ElasticStack name: log -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/dcae/values.yaml b/kubernetes/log/charts/log-elasticsearch/Chart.yaml similarity index 52% rename from kubernetes/dcae/values.yaml rename to kubernetes/log/charts/log-elasticsearch/Chart.yaml index a65835bb14..5d233b4645 100644 --- a/kubernetes/dcae/values.yaml +++ b/kubernetes/log/charts/log-elasticsearch/Chart.yaml @@ -12,17 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: Always -nodePortPrefix: 302 -image: - readiness: oomk8s/readiness-check:1.1.0 - pgaas: oomk8s/pgaas:1 - cdapfs: oomk8s/cdap-fs:1.0.0 - cdap: oomk8s/cdap:1.0.7 - dmaap: attos/dmaap:latest - kafka: wurstmeister/kafka:latest - zookeeper: wurstmeister/zookeeper:latest - dmaapbc: nexus3.onap.org:10001/openecomp/dcae-dmaapbc:1.1-STAGING-latest - commonevent: nexus3.onap.org:10001/openecomp/dcae-collector-common-event:1.1-STAGING-latest - controller: nexus3.onap.org:10001/openecomp/dcae-controller:1.1-STAGING-latest +apiVersion: v1 +description: ONAP Logging Elasticsearch +name: log-elasticsearch +version: 2.0.0 diff --git a/kubernetes/log/charts/log-elasticsearch/requirements.yaml b/kubernetes/log/charts/log-elasticsearch/requirements.yaml new file mode 100644 index 0000000000..1e8f788318 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/requirements.yaml @@ -0,0 +1,18 @@ +# 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 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/log/resources/elasticsearch/conf/elasticsearch.yml b/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml similarity index 98% rename from kubernetes/log/resources/elasticsearch/conf/elasticsearch.yml rename to kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml index f038a10775..e7933b8570 100644 --- a/kubernetes/log/resources/elasticsearch/conf/elasticsearch.yml +++ b/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml @@ -111,12 +111,12 @@ discovery.zen.minimum_master_nodes: 1 #action.destructive_requires_name: true # Set a custom port for HTTP: If required, default is 9200-9300 # This is used for REST APIs -http.port: 9200 +http.port: {{.Values.service.externalPort}} # Port to bind for communication between nodes. Accepts a single value or a range. # If a range is specified, the node will bind to the first available port in the range. # Defaults to 9300-9400. # More info: -transport.tcp.port: 9300 +transport.tcp.port: {{.Values.service.externalPortTcp}} xpack.graph.enabled: false #Set to false to disable X-Pack graph features. diff --git a/kubernetes/log/charts/log-elasticsearch/templates/NOTES.txt b/kubernetes/log/charts/log-elasticsearch/templates/NOTES.txt new file mode 100644 index 0000000000..0878f5c080 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ include "common.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/log/charts/log-elasticsearch/templates/configmap.yaml b/kubernetes/log/charts/log-elasticsearch/templates/configmap.yaml new file mode 100644 index 0000000000..4ccc7cc526 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/templates/configmap.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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} \ No newline at end of file diff --git a/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml b/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml new file mode 100644 index 0000000000..13caa7e866 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml @@ -0,0 +1,117 @@ +# 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: + - /bin/sh + - -c + - | + sysctl -w vm.max_map_count=262144 + mkdir -p /logroot/elasticsearch/logs + mkdir -p /logroot/elasticsearch/data + chmod -R 777 /logroot/elasticsearch + chown -R root:root /logroot + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + securityContext: + privileged: true + image: {{ .Values.global.busyboxRepository | default .Values.busyboxRepository }}/{{ .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.loggingRepository | default .Values.loggingRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - containerPort: {{ .Values.service.internalPortTcp }} + name: {{ .Values.service.name }}-tcp +# 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.internalPortTcp }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml + name: {{ include "common.fullname" . }}-config + subPath: elasticsearch.yml + - mountPath: /usr/share/elasticsearch/data/ + name: {{ include "common.fullname" . }}-data + 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: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }}-configmap + items: + - key: elasticsearch.yml + path: elasticsearch.yml + - name: {{ include "common.fullname" . }}-data + persistentVolumeClaim: + claimName: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-logs + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPathLogs }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/log/charts/log-elasticsearch/templates/pv.yaml b/kubernetes/log/charts/log-elasticsearch/templates/pv.yaml new file mode 100644 index 0000000000..dba12d4125 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/templates/pv.yaml @@ -0,0 +1,21 @@ +{{- 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.Namespace }}/{{ .Values.persistence.mountSubPath }} +{{- end -}} diff --git a/kubernetes/log/charts/log-elasticsearch/templates/pvc.yaml b/kubernetes/log/charts/log-elasticsearch/templates/pvc.yaml new file mode 100644 index 0000000000..c046f4604a --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/templates/pvc.yaml @@ -0,0 +1,25 @@ +{{- 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 }} +{{- end -}} diff --git a/kubernetes/log/charts/log-elasticsearch/templates/service.yaml b/kubernetes/log/charts/log-elasticsearch/templates/service.yaml new file mode 100644 index 0000000000..72dfc7e817 --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/templates/service.yaml @@ -0,0 +1,46 @@ +# 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: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPortTcp }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPortTcp }} + name: {{ .Values.service.name }}-tcp + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortTcp }} + targetPort: {{ .Values.service.internalPortTcp }} + name: {{ .Values.service.name }}-tcp + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/log/charts/log-elasticsearch/values.yaml b/kubernetes/log/charts/log-elasticsearch/values.yaml new file mode 100644 index 0000000000..2e6e08509e --- /dev/null +++ b/kubernetes/log/charts/log-elasticsearch/values.yaml @@ -0,0 +1,114 @@ +# 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. +################################################################# + +# BusyBox image +busyboxRepository: registry.hub.docker.com +busyboxImage: library/busybox:latest + +# application image +loggingRepository: docker.elastic.co +image: elasticsearch/elasticsearch:5.5.0 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +# Example: +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 + +## 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: + ## 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) + accessMode: ReadWriteMany + size: 1Gi + mountPath: /dockerdata-nfs + mountSubPath: log/elasticsearch/data + mountSubPathLogs: log + +service: + #Example service definition with external, internal and node ports. + #Services may use any combination of ports depending on the 'type' of + #service being defined. + type: ClusterIP + name: log-es + externalPort: 9200 + internalPort: 9200 + externalPortTcp: 9300 + internalPortTcp: 9300 +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/dcae/Chart.yaml b/kubernetes/log/charts/log-kibana/Chart.yaml similarity index 90% rename from kubernetes/dcae/Chart.yaml rename to kubernetes/log/charts/log-kibana/Chart.yaml index d4e06cadd1..74f2c2b441 100644 --- a/kubernetes/dcae/Chart.yaml +++ b/kubernetes/log/charts/log-kibana/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: DCAE Gen 1 -name: DCAE -version: 1.1.0 +description: ONAP Logging Kibana +name: log-kibana +version: 2.0.0 diff --git a/kubernetes/log/charts/log-kibana/requirements.yaml b/kubernetes/log/charts/log-kibana/requirements.yaml new file mode 100644 index 0000000000..1e8f788318 --- /dev/null +++ b/kubernetes/log/charts/log-kibana/requirements.yaml @@ -0,0 +1,18 @@ +# 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 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/log/resources/kibana/conf/kibana.yml b/kubernetes/log/charts/log-kibana/resources/config/kibana.yml similarity index 95% rename from kubernetes/log/resources/kibana/conf/kibana.yml rename to kubernetes/log/charts/log-kibana/resources/config/kibana.yml index df0d71abab..5171ad4cdb 100644 --- a/kubernetes/log/resources/kibana/conf/kibana.yml +++ b/kubernetes/log/charts/log-kibana/resources/config/kibana.yml @@ -11,7 +11,7 @@ xpack.security.enabled: false xpack.watcher.enabled: false #Set to false to disable Watcher. # Kibana is served by a back end server. This setting specifies the port to use. -server.port: 5601 +server.port: {{.Values.service.externalPort}} # Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values. # The default is 'localhost', which usually means remote machines will not be able to connect. @@ -30,10 +30,7 @@ server.host: "0" server.name: "Kibana" # The URL of the Elasticsearch instance to use for all your queries. -# OOM-427, OOM-441 hardcoded onap workspace to avoid helm upgrade past 2.3 -elasticsearch.url: "http://elasticsearch.{{.Values.nsPrefix}}:9200" -#elasticsearch-service.{{.Values.nsPrefix}}:9200" -#elasticsearch.url: "http://10.247.47.3:9200" +elasticsearch.url: "http://{{.Values.config.elasticsearchServiceName}}.{{.Release.Namespace}}:{{.Values.config.elasticsearchPort}}" # When this setting's value is true Kibana uses the hostname specified in the server.host # setting. When the value of this setting is false, Kibana uses the hostname of the host # that connects to this Kibana instance. diff --git a/kubernetes/log/charts/log-kibana/templates/NOTES.txt b/kubernetes/log/charts/log-kibana/templates/NOTES.txt new file mode 100644 index 0000000000..0878f5c080 --- /dev/null +++ b/kubernetes/log/charts/log-kibana/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ include "common.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/log/charts/log-kibana/templates/configmap.yaml b/kubernetes/log/charts/log-kibana/templates/configmap.yaml new file mode 100644 index 0000000000..fd8934b22c --- /dev/null +++ b/kubernetes/log/charts/log-kibana/templates/configmap.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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/log/charts/log-kibana/templates/deployment.yaml b/kubernetes/log/charts/log-kibana/templates/deployment.yaml new file mode 100644 index 0000000000..bdd5a447be --- /dev/null +++ b/kubernetes/log/charts/log-kibana/templates/deployment.yaml @@ -0,0 +1,98 @@ +# 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 + - log-elasticsearch + 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.loggingRepository | default .Values.loggingRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} +# 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 -}} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /usr/share/kibana/config/kibana.yml + name: {{ include "common.fullname" . }} + subPath: kibana.yml + 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: {{ include "common.fullname" . }} + configMap: + name: {{ include "common.fullname" . }} + items: + - key: kibana.yml + path: kibana.yml + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/log/charts/log-kibana/templates/service.yaml b/kubernetes/log/charts/log-kibana/templates/service.yaml new file mode 100644 index 0000000000..d758c99d89 --- /dev/null +++ b/kubernetes/log/charts/log-kibana/templates/service.yaml @@ -0,0 +1,40 @@ +# 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: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + 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/log/charts/log-kibana/values.yaml b/kubernetes/log/charts/log-kibana/values.yaml new file mode 100644 index 0000000000..50c6e52ee0 --- /dev/null +++ b/kubernetes/log/charts/log-kibana/values.yaml @@ -0,0 +1,94 @@ +# 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== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# + +# BusyBox image +busyboxRepository: registry.hub.docker.com +busyboxImage: library/busybox:latest + +# application image +loggingRepository: docker.elastic.co +image: kibana/kibana:5.5.0 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + elasticsearchServiceName: log-es + elasticsearchPort: 9200 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 120 + 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: + #Example service definition with external, internal and node ports. + #Services may use any combination of ports depending on the 'type' of + #service being defined. + type: NodePort + name: log-kibana + externalPort: 5601 + internalPort: 5601 + nodePort: 53 +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/log/charts/log-logstash/Chart.yaml b/kubernetes/log/charts/log-logstash/Chart.yaml new file mode 100644 index 0000000000..3aab337308 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/Chart.yaml @@ -0,0 +1,18 @@ +# 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 +description: ONAP Logging Logstash +name: log-logstash +version: 2.0.0 diff --git a/kubernetes/log/charts/log-logstash/requirements.yaml b/kubernetes/log/charts/log-logstash/requirements.yaml new file mode 100644 index 0000000000..1e8f788318 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/requirements.yaml @@ -0,0 +1,18 @@ +# 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 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/log/resources/logstash/conf/logstash.yml b/kubernetes/log/charts/log-logstash/resources/config/logstash.yml similarity index 99% rename from kubernetes/log/resources/logstash/conf/logstash.yml rename to kubernetes/log/charts/log-logstash/resources/config/logstash.yml index f658006503..3ddf63f9cc 100644 --- a/kubernetes/log/resources/logstash/conf/logstash.yml +++ b/kubernetes/log/charts/log-logstash/resources/config/logstash.yml @@ -1,14 +1,14 @@ http.host: "0.0.0.0" ## Path where pipeline configurations reside path.config: /usr/share/logstash/pipeline - + ## Type of queue : memeory based or file based #queue.type: persisted ## Size of queue #queue.max_bytes: 1024mb ## Setting true makes logstash check periodically for change in pipeline configurations config.reload.automatic: true - + ## xpack configurations #xpack.monitoring.elasticsearch.url: ["http://10.247.186.12:9200", "http://10.247.186.13:9200"] #xpack.monitoring.elasticsearch.username: elastic diff --git a/kubernetes/log/resources/logstash/pipeline/onap-pipeline.conf b/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf similarity index 95% rename from kubernetes/log/resources/logstash/pipeline/onap-pipeline.conf rename to kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf index 8289b49f6e..3b4fd768c3 100644 --- a/kubernetes/log/resources/logstash/pipeline/onap-pipeline.conf +++ b/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf @@ -7,7 +7,7 @@ input { ######## Connection configurations ######## ## The port to listen on. - port => 5044 + port => {{.Values.service.externalPort}} ## Close Idle clients after the specified time in seconds. Default is 60 seconds #client_inactivity_timeout => 60 @@ -222,10 +222,8 @@ output { ######### Elasticsearchcluster and host configurations ######### -#can specify one or a list of hosts. If sniffing is set, one is enough and others will be auto-discovered -##Also protocol can be specified like ["http://10.247.186.12:9200"] -## OOM-427, OOM-441 hardcoded onap workspace to avoid helm upgrade past 2.3 - hosts => ["http://elasticsearch.{{.Values.nsPrefix}}:9200"] + ##can specify one or a list of hosts. If sniffing is set, one is enough and others will be auto-discovered + hosts => ["http://{{.Values.config.elasticsearchServiceName}}.{{.Release.Namespace}}:{{.Values.config.elasticsearchPort}}"] ## This setting asks Elasticsearch for the list of all cluster nodes and adds them to the hosts list. Default is false. diff --git a/kubernetes/log/charts/log-logstash/templates/NOTES.txt b/kubernetes/log/charts/log-logstash/templates/NOTES.txt new file mode 100644 index 0000000000..0878f5c080 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ include "common.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/log/charts/log-logstash/templates/configmap.yaml b/kubernetes/log/charts/log-logstash/templates/configmap.yaml new file mode 100644 index 0000000000..fd8934b22c --- /dev/null +++ b/kubernetes/log/charts/log-logstash/templates/configmap.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. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/log/charts/log-logstash/templates/deployment.yaml b/kubernetes/log/charts/log-logstash/templates/deployment.yaml new file mode 100644 index 0000000000..682c448da8 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/templates/deployment.yaml @@ -0,0 +1,105 @@ +# 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 + - log-elasticsearch + 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.loggingRepository| default .Values.loggingRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - containerPort: {{ .Values.service.internalPortHttp }} + name: {{ .Values.service.name }}-http + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} +# 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 -}} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /usr/share/logstash/config/logstash.yml + name: {{ include "common.fullname" . }} + subPath: logstash.yml + - mountPath: /usr/share/logstash/pipeline/onap-pipeline.conf + name: {{ include "common.fullname" . }} + subPath: onap-pipeline.conf + 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: {{ include "common.fullname" . }} + configMap: + name: {{ include "common.fullname" . }} + items: + - key: logstash.yml + path: logstash.yml + - key: onap-pipeline.conf + path: onap-pipeline.conf + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/log/charts/log-logstash/templates/service.yaml b/kubernetes/log/charts/log-logstash/templates/service.yaml new file mode 100644 index 0000000000..ca71aa2224 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/templates/service.yaml @@ -0,0 +1,46 @@ +# 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: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPortHttp }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPortHttp }} + name: {{ .Values.service.name }}-http + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortHttp }} + targetPort: {{ .Values.service.internalPortHttp }} + name: {{ .Values.service.name }}-http + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/log/charts/log-logstash/values.yaml b/kubernetes/log/charts/log-logstash/values.yaml new file mode 100644 index 0000000000..bfe50b54a8 --- /dev/null +++ b/kubernetes/log/charts/log-logstash/values.yaml @@ -0,0 +1,91 @@ +# 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== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# + +# application image +loggingRepository: docker.elastic.co +image: logstash/logstash:5.4.3 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + elasticsearchServiceName: log-es + elasticsearchPort: 9200 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 120 + 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: + #Example service definition with external, internal and node ports. + #Services may use any combination of ports depending on the 'type' of + #service being defined. + type: ClusterIP + name: log-ls + externalPort: 5044 + internalPort: 5044 + externalPortHttp: 9600 + internalPortHttp: 9600 +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/log/requirements.yaml b/kubernetes/log/requirements.yaml new file mode 100644 index 0000000000..acca8ef7e2 --- /dev/null +++ b/kubernetes/log/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/log/templates/all-services.yaml b/kubernetes/log/templates/all-services.yaml deleted file mode 100644 index 389e7e4caf..0000000000 --- a/kubernetes/log/templates/all-services.yaml +++ /dev/null @@ -1,100 +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.disableLogElasticsearch }} -apiVersion: v1 -kind: Service -metadata: - labels: - app: elasticsearch - name: elasticsearch - namespace: {{ .Values.nsPrefix }} -spec: - ports: - - name: http - port: 9200 - targetPort: 9200 - nodePort: {{ .Values.nodePortPrefix }}54 - selector: - app: elasticsearch - type: NodePort ---- -apiVersion: v1 -kind: Service -metadata: - name: elasticsearchtcp - namespace: {{ .Values.nsPrefix }} - labels: - app: elasticsearch -spec: - ports: - - name: tcp - port: 9300 - targetPort: 9300 - selector: - app: elasticsearch -#{{ end }} -#{{ if not .Values.disableLogLogstash }} ---- -apiVersion: v1 -kind: Service -metadata: - name: logstashinternal - namespace: {{ .Values.nsPrefix }} - labels: - app: logstash -spec: - ports: - - name: http - port: 9600 - targetPort: 9600 - selector: - app: logstash ---- -apiVersion: v1 -kind: Service -metadata: - name: logstash - namespace: {{ .Values.nsPrefix }} - labels: - app: logstash -spec: - ports: - - name: transport - port: 5044 - targetPort: 5044 - nodePort: {{ .Values.nodePortPrefix }}55 - selector: - app: logstash - type: NodePort -#{{ end }} -#{{ if not .Values.disableLogKibana }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: kibana - name: kibana - namespace: {{ .Values.nsPrefix }} -spec: - ports: - - name: tcp-ks - port: 5601 - targetPort: 5601 - nodePort: {{ .Values.nodePortPrefix }}53 - selector: - app: kibana - type: NodePort -#{{ end }} diff --git a/kubernetes/log/templates/elasticsearch-deployment.yaml b/kubernetes/log/templates/elasticsearch-deployment.yaml deleted file mode 100644 index 8c09479b43..0000000000 --- a/kubernetes/log/templates/elasticsearch-deployment.yaml +++ /dev/null @@ -1,101 +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.disableLogElasticsearch }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: elasticsearch - name: log-elasticsearch - namespace: {{ .Values.nsPrefix }} -spec: - replicas: {{ .Values.elasticsearchReplicas }} - selector: - matchLabels: - app: elasticsearch - template: - metadata: - labels: - app: elasticsearch - name: log-elasticsearch - spec: - initContainers: - - command: - - /bin/sh - - -c - - | - sysctl -w vm.max_map_count=262144 - mkdir -p /logroot/elasticsearch/logs - mkdir -p /logroot/elasticsearch/data - chmod -R 777 /logroot/elasticsearch - 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-logs - mountPath: /logroot/ - containers: - - name: elasticsearch - image: {{ .Values.image.elasticsearch}} - ports: - - containerPort: 9200 - name: http - protocol: TCP - - containerPort: 9300 - name: transport - protocol: TCP - readinessProbe: - tcpSocket: - port: 9300 - volumeMounts: - - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml - name: elasticsearch-conf - subPath: elasticsearch.yml - - mountPath: /usr/share/elasticsearch/data/ - name: elasticsearch-data - - mountPath: /usr/share/elasticsearch/logs/ - name: elasticsearch-logs - volumes: - - name: elasticsearch-data - persistentVolumeClaim: - claimName: elasticsearch-db - - name: elasticsearch-logs - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/log/ - - name: elasticsearch-conf - configMap: - name: log-elasticsearch-configmap - items: - - key: elasticsearch.yml - path: elasticsearch.yml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: log-elasticsearch-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ (.Files.Glob "resources/elasticsearch/conf/elasticsearch.yml").AsConfig | indent 2 }} -#{{ end }} - diff --git a/kubernetes/log/templates/kibana-deployment.yaml b/kubernetes/log/templates/kibana-deployment.yaml deleted file mode 100644 index b60011a1b3..0000000000 --- a/kubernetes/log/templates/kibana-deployment.yaml +++ /dev/null @@ -1,77 +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.disableLogKibana }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: kibana - name: log-kibana - namespace: {{ .Values.nsPrefix }} -spec: - replicas: {{ .Values.kibanaReplicas }} - selector: - matchLabels: - app: kibana - template: - metadata: - labels: - app: kibana - name: log-kibana - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - elasticsearch - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: kibana-readiness - containers: - - name: kibana - image: {{ .Values.image.kibana }} - ports: - - containerPort: 5601 - name: http - protocol: TCP - readinessProbe: - tcpSocket: - port: 5601 - volumeMounts: - - name: kibana-conf - mountPath: /usr/share/kibana/config/ - volumes: - - name: kibana-conf - configMap: - name: log-kibana-configmap - items: - - key: kibana.yml - path: kibana.yml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: log-kibana-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/kibana/conf/kibana.yml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/log/templates/log-pv-pvc.yaml b/kubernetes/log/templates/log-pv-pvc.yaml deleted file mode 100644 index 20bcbb15c1..0000000000 --- a/kubernetes/log/templates/log-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.disableLogElasticsearch }} -apiVersion: v1 -kind: PersistentVolume -metadata: - name: {{ .Values.nsPrefix }}-elasticsearch-db - namespace: "{{ .Values.nsPrefix }}" - labels: - name: {{ .Values.nsPrefix }}-elasticsearch-db -spec: - capacity: - storage: 2Gi - accessModes: - - ReadWriteMany - persistentVolumeReclaimPolicy: Retain - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/log/elasticsearch/data ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: elasticsearch-db - namespace: "{{ .Values.nsPrefix }}" -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - selector: - matchLabels: - name: {{ .Values.nsPrefix }}-elasticsearch-db -#{{ end }} diff --git a/kubernetes/log/templates/logstash-deployment.yaml b/kubernetes/log/templates/logstash-deployment.yaml deleted file mode 100644 index 33bcc2001a..0000000000 --- a/kubernetes/log/templates/logstash-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.disableLogLogstash }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: logstash - name: log-logstash - namespace: {{ .Values.nsPrefix }} -spec: - replicas: {{ .Values.logstashReplicas }} - selector: - matchLabels: - app: logstash - template: - metadata: - labels: - app: logstash - name: log-logstash - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - elasticsearch - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: logstash-readiness - containers: - - name: logstash - image: {{ .Values.image.logstash }} - ports: - - containerPort: 5044 - name: transport - protocol: TCP - - containerPort: 9600 - name: http - protocol: TCP - readinessProbe: - tcpSocket: - port: 5044 - volumeMounts: - - mountPath: /usr/share/logstash/config/ - name: logstash-conf - - mountPath: /usr/share/logstash/pipeline/ - name: logstash-pipeline - volumes: - - name: logstash-conf - configMap: - name: log-logstash-configmap - items: - - key: logstash.yml - path: logstash.yml - - name: logstash-pipeline - configMap: - name: log-logstash-configmap - items: - - key: onap-pipeline.conf - path: onap-pipeline.conf - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: log-logstash-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/logstash/conf/logstash.yml").AsConfig . | indent 2 }} -{{ tpl (.Files.Glob "resources/logstash/pipeline/onap-pipeline.conf").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/log/values.yaml b/kubernetes/log/values.yaml index 0b8d1fe100..088ad5d0b3 100644 --- a/kubernetes/log/values.yaml +++ b/kubernetes/log/values.yaml @@ -12,16 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: Always -nodePortPrefix: 302 -dataRootDir: /dockerdata-nfs -elasticsearchReplicas: 1 -kibanaReplicas: 1 -logstashReplicas: 1 -image: - readiness: oomk8s/readiness-check:1.1.0 - logstash: docker.elastic.co/logstash/logstash:5.4.3 - kibana: docker.elastic.co/kibana/kibana:5.5.0 - elasticsearch: docker.elastic.co/elasticsearch/elasticsearch:5.5.0 - es_bb: busybox +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s diff --git a/kubernetes/msb/.helmignore b/kubernetes/msb/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/.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/msb/Chart.yaml b/kubernetes/msb/Chart.yaml index e9e202b65b..e517d604b1 100644 --- a/kubernetes/msb/Chart.yaml +++ b/kubernetes/msb/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP MicroServices Bus name: msb -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/msb/charts/kube2msb/.helmignore b/kubernetes/msb/charts/kube2msb/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/charts/kube2msb/.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/msb/charts/kube2msb/Chart.yaml b/kubernetes/msb/charts/kube2msb/Chart.yaml new file mode 100644 index 0000000000..4ab40e65cf --- /dev/null +++ b/kubernetes/msb/charts/kube2msb/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP MicroServices Bus Kube2MSB Registrator +name: kube2msb +version: 2.0.0 diff --git a/kubernetes/msb/charts/kube2msb/requirements.yaml b/kubernetes/msb/charts/kube2msb/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/msb/charts/kube2msb/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/msb/charts/kube2msb/templates/deployment.yaml b/kubernetes/msb/charts/kube2msb/templates/deployment.yaml new file mode 100644 index 0000000000..94b25a19bf --- /dev/null +++ b/kubernetes/msb/charts/kube2msb/templates/deployment.yaml @@ -0,0 +1,67 @@ +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 + - msb-discovery + 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" . }} + # TODO: Temporary command: + command: + - /bin/sh + - -c + - export AUTH_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token); /bin/kube2msb --kube_master_url=${KUBE_MASTER_URL} --msb_url=${MSB_URL} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: KUBE_MASTER_URL + value: {{ .Values.config.kubeMasterUrl }} + - name: MSB_URL + value: {{tpl $.Values.config.discoveryUrl .}} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + 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 + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/kube2msb/values.yaml b/kubernetes/msb/charts/kube2msb/values.yaml new file mode 100644 index 0000000000..43810a9781 --- /dev/null +++ b/kubernetes/msb/charts/kube2msb/values.yaml @@ -0,0 +1,58 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/oom/kube2msb:latest +pullPolicy: Always + +# application configuration +config: + routeLabels: "visualRange:1" + kubeMasterUrl: https://kubernetes.default:443 + discoveryUrl: http://{{.Release.Name}}-msb-discovery.{{include "common.namespace" .}}:10081 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: {} + +readiness: {} + +service: {} + +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/msb/charts/msb-consul/.helmignore b/kubernetes/msb/charts/msb-consul/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/.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/msb/charts/msb-consul/Chart.yaml b/kubernetes/msb/charts/msb-consul/Chart.yaml new file mode 100644 index 0000000000..3a1d299a6b --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP MicroServices Bus Consul +name: msb-consul +version: 2.0.0 diff --git a/kubernetes/msb/charts/msb-consul/requirements.yaml b/kubernetes/msb/charts/msb-consul/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/msb/charts/msb-consul/templates/NOTES.txt b/kubernetes/msb/charts/msb-consul/templates/NOTES.txt new file mode 100644 index 0000000000..2465e03634 --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ template "so.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/msb/charts/msb-consul/templates/deployment.yaml b/kubernetes/msb/charts/msb-consul/templates/deployment.yaml new file mode 100644 index 0000000000..74342e7e0c --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/templates/deployment.yaml @@ -0,0 +1,59 @@ +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.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 }} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + 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 + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-consul/templates/service.yaml b/kubernetes/msb/charts/msb-consul/templates/service.yaml new file mode 100644 index 0000000000..841d3497c4 --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/templates/service.yaml @@ -0,0 +1,26 @@ +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 }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + 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/msb/charts/msb-consul/values.yaml b/kubernetes/msb/charts/msb-consul/values.yaml new file mode 100644 index 0000000000..28df51a370 --- /dev/null +++ b/kubernetes/msb/charts/msb-consul/values.yaml @@ -0,0 +1,65 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +################################################################# +# Application configuration defaults. +################################################################# +# application image +dockerHubRepository: registry.hub.docker.com +image: library/consul:0.9.3 +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: NodePort + name: msb-consul + externalPort: 8500 + internalPort: 8500 + nodePort: 85 + +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/msb/charts/msb-discovery/.helmignore b/kubernetes/msb/charts/msb-discovery/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/.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/msb/charts/msb-discovery/Chart.yaml b/kubernetes/msb/charts/msb-discovery/Chart.yaml new file mode 100644 index 0000000000..4a403ba5b5 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP MicroServices Bus Discovery +name: msb-discovery +version: 2.0.0 diff --git a/kubernetes/msb/charts/msb-discovery/requirements.yaml b/kubernetes/msb/charts/msb-discovery/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/msb/charts/msb-discovery/templates/NOTES.txt b/kubernetes/msb/charts/msb-discovery/templates/NOTES.txt new file mode 100644 index 0000000000..2465e03634 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ template "so.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/msb/charts/msb-discovery/templates/deployment.yaml b/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml new file mode 100644 index 0000000000..f32a5d1544 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml @@ -0,0 +1,76 @@ +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 + - msb-consul + 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 }} + 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: CONSUL_IP + value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + 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 + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-discovery/templates/service.yaml b/kubernetes/msb/charts/msb-discovery/templates/service.yaml new file mode 100644 index 0000000000..841d3497c4 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/templates/service.yaml @@ -0,0 +1,26 @@ +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 }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + 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/msb/charts/msb-discovery/values.yaml b/kubernetes/msb/charts/msb-discovery/values.yaml new file mode 100644 index 0000000000..d10ba6032e --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/values.yaml @@ -0,0 +1,67 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/msb/msb_discovery:1.1.0-SNAPSHOT-latest +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: NodePort + name: msb-discovery + externalPort: 10081 + internalPort: 10081 + nodePort: 81 + +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/msb/charts/msb-eag/.helmignore b/kubernetes/msb/charts/msb-eag/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/.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/msb/charts/msb-eag/Chart.yaml b/kubernetes/msb/charts/msb-eag/Chart.yaml new file mode 100644 index 0000000000..c86decb97a --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP MicroServices Bus Internal API Gateway +name: msb-eag +version: 2.0.0 diff --git a/kubernetes/msb/charts/msb-eag/requirements.yaml b/kubernetes/msb/charts/msb-eag/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/msb/charts/msb-eag/templates/NOTES.txt b/kubernetes/msb/charts/msb-eag/templates/NOTES.txt new file mode 100644 index 0000000000..2465e03634 --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ template "so.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/msb/charts/msb-eag/templates/deployment.yaml b/kubernetes/msb/charts/msb-eag/templates/deployment.yaml new file mode 100644 index 0000000000..d41518d662 --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/templates/deployment.yaml @@ -0,0 +1,83 @@ +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 + - msb-discovery + 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 }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - containerPort: {{ .Values.service.internalPortHttps }} + name: {{ .Values.service.name }}-https + # 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: CONSUL_IP + value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + - name: SDCLIENT_IP + value: {{.Release.Name}}-msb-discovery.{{ include "common.namespace" . }} + - name: ROUTE_LABELS + value: {{ .Values.config.routeLabels }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + 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 + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-eag/templates/service.yaml b/kubernetes/msb/charts/msb-eag/templates/service.yaml new file mode 100644 index 0000000000..e438f10d01 --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/templates/service.yaml @@ -0,0 +1,32 @@ +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 }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortHttps }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePortHttps }} + name: {{ .Values.service.name }}-https + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortHttps }} + targetPort: {{ .Values.service.internalPortHttps }} + name: {{ .Values.service.name }}-https + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/msb/charts/msb-eag/values.yaml b/kubernetes/msb/charts/msb-eag/values.yaml new file mode 100644 index 0000000000..757b46768b --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/values.yaml @@ -0,0 +1,71 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/msb/msb_apigateway:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# application configuration +config: + routeLabels: "visualRange: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: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: msb-eag + externalPort: 80 + internalPort: 80 + nodePort: 82 + externalPortHttps: 443 + internalPortHttps: 443 + nodePortHttps: 84 + +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/msb/charts/msb-iag/.helmignore b/kubernetes/msb/charts/msb-iag/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/.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/msb/charts/msb-iag/Chart.yaml b/kubernetes/msb/charts/msb-iag/Chart.yaml new file mode 100644 index 0000000000..d546bfacf0 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP MicroServices Bus Internal API Gateway +name: msb-iag +version: 2.0.0 diff --git a/kubernetes/msb/charts/msb-iag/requirements.yaml b/kubernetes/msb/charts/msb-iag/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/msb/charts/msb-iag/templates/NOTES.txt b/kubernetes/msb/charts/msb-iag/templates/NOTES.txt new file mode 100644 index 0000000000..2465e03634 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/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.fullname" . }}) + 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.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -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={{ template "so.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/msb/charts/msb-iag/templates/deployment.yaml b/kubernetes/msb/charts/msb-iag/templates/deployment.yaml new file mode 100644 index 0000000000..d41518d662 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/templates/deployment.yaml @@ -0,0 +1,83 @@ +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 + - msb-discovery + 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 }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - containerPort: {{ .Values.service.internalPortHttps }} + name: {{ .Values.service.name }}-https + # 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: CONSUL_IP + value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + - name: SDCLIENT_IP + value: {{.Release.Name}}-msb-discovery.{{ include "common.namespace" . }} + - name: ROUTE_LABELS + value: {{ .Values.config.routeLabels }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + 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 + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-iag/templates/service.yaml b/kubernetes/msb/charts/msb-iag/templates/service.yaml new file mode 100644 index 0000000000..e438f10d01 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/templates/service.yaml @@ -0,0 +1,32 @@ +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 }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortHttps }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePortHttps }} + name: {{ .Values.service.name }}-https + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPortHttps }} + targetPort: {{ .Values.service.internalPortHttps }} + name: {{ .Values.service.name }}-https + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/msb/charts/msb-iag/values.yaml b/kubernetes/msb/charts/msb-iag/values.yaml new file mode 100644 index 0000000000..6e4877b084 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/values.yaml @@ -0,0 +1,71 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:1.1.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/msb/msb_apigateway:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# application configuration +config: + routeLabels: "visualRange:1" + +# 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: msb-iag + externalPort: 80 + internalPort: 80 + nodePort: 80 + externalPortHttps: 443 + internalPortHttps: 443 + nodePortHttps: 83 + +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/msb/requirements.yaml b/kubernetes/msb/requirements.yaml new file mode 100644 index 0000000000..acca8ef7e2 --- /dev/null +++ b/kubernetes/msb/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' \ No newline at end of file diff --git a/kubernetes/msb/templates/all-services.yaml b/kubernetes/msb/templates/all-services.yaml deleted file mode 100644 index 572a78dd2d..0000000000 --- a/kubernetes/msb/templates/all-services.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.disableMsbMsbConsul }} -apiVersion: v1 -kind: Service -metadata: - name: msb-consul - namespace: "{{ .Values.nsPrefix }}" - labels: - app: msb-consul -spec: - ports: - - port: {{ .Values.consulPort }} - nodePort: {{ .Values.consulNodePort }} - selector: - app: msb-consul - type: NodePort -#{{ end }} -#{{ if not .Values.disableMsbMsbDiscovery }} ---- -apiVersion: v1 -kind: Service -metadata: - name: msb-discovery - namespace: "{{ .Values.nsPrefix }}" - labels: - app: msb-discovery -spec: - clusterIP: "{{ .Values.discoveryClusterIP }}" - ports: - - port: {{ .Values.discoveryPort }} - nodePort: {{ .Values.discoveryNodePort }} - selector: - app: msb-discovery - type: NodePort -#{{ end }} -#{{ if not .Values.disableMsbMsbIag }} ---- -apiVersion: v1 -kind: Service -metadata: - name: msb-iag - namespace: "{{ .Values.nsPrefix }}" - labels: - app: msb-iag -spec: - ports: - - name: http - port: {{ .Values.iagPort }} - nodePort: {{ .Values.iagNodePort }} - - name: https - port: {{ .Values.iagPort_https }} - nodePort: {{ .Values.iagNodePort_https }} - selector: - app: msb-iag - type: NodePort -#{{ end }} -#{{ if not .Values.disableMsbMsbEag }} ---- -apiVersion: v1 -kind: Service -metadata: - name: msb-eag - namespace: "{{ .Values.nsPrefix }}" - labels: - app: msb-eag -spec: - ports: - - name: http - port: {{ .Values.eagPort }} - nodePort: {{ .Values.eagNodePort }} - - name: https - port: {{ .Values.eagPort_https }} - nodePort: {{ .Values.eagNodePort_https }} - selector: - app: msb-eag - type: NodePort -#{{ end }} diff --git a/kubernetes/msb/templates/kube2msb-registrator-deployment.yaml b/kubernetes/msb/templates/kube2msb-registrator-deployment.yaml deleted file mode 100644 index 97e7d5f319..0000000000 --- a/kubernetes/msb/templates/kube2msb-registrator-deployment.yaml +++ /dev/null @@ -1,60 +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.disableKube2MsbKube2MsbRegistrator }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: kube2msb-registrator - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: 1 - selector: - matchLabels: - app: kube2msb-registrator - template: - metadata: - labels: - app: kube2msb-registrator - name: kube2msb-registrator - spec: - hostname: kube2msb-registrator - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - msb-discovery - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: kube2msb-registrator-readiness - containers: - - args: - image: {{ .Values.image.kube2msb }} - name: kube2msb-registrator - env: - - name: KUBE_MASTER_URL - value: {{ .Values.kubeMasterUrl }} - - name: MSB_URL - value: {{tpl $.Values.discoveryUrl .}} - imagePullPolicy: {{ .Values.pullPolicy }} - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/msb/templates/msb-consul-deployment.yaml b/kubernetes/msb/templates/msb-consul-deployment.yaml deleted file mode 100644 index ee5120d42f..0000000000 --- a/kubernetes/msb/templates/msb-consul-deployment.yaml +++ /dev/null @@ -1,46 +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.disableMsbMsbConsul }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: msb-consul - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.msbConsulReplicas }} - selector: - matchLabels: - app: msb-consul - template: - metadata: - labels: - app: msb-consul - name: msb-consul - spec: - hostname: msb-consul - containers: - - args: - image: {{ .Values.image.consul }} - name: msb-consul - ports: - - containerPort: {{ .Values.consulPort }} - name: msb-consul - readinessProbe: - tcpSocket: - port: {{ .Values.consulPort }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: {{ .Values.pullPolicy }} -#{{ end }} diff --git a/kubernetes/msb/templates/msb-discovery-deployment.yaml b/kubernetes/msb/templates/msb-discovery-deployment.yaml deleted file mode 100644 index 583a00f22a..0000000000 --- a/kubernetes/msb/templates/msb-discovery-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.disableMsbMsbDiscovery }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: msb-discovery - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.discoveryReplicas }} - selector: - matchLabels: - app: msb-discovery - template: - metadata: - labels: - app: msb-discovery - name: msb-discovery - spec: - hostname: msb-discovery - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - msb-consul - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: msb-discovery-readiness - containers: - - args: - image: {{ .Values.image.discovery }} - name: "msb-discovery" - env: - - name: CONSUL_IP - value: msb-consul.{{ .Values.nsPrefix }} - ports: - - containerPort: {{ .Values.discoveryPort }} - name: msb-discovery - readinessProbe: - tcpSocket: - port: {{ .Values.discoveryPort }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: {{ .Values.pullPolicy }} - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/msb/templates/msb-eag-deployment.yaml b/kubernetes/msb/templates/msb-eag-deployment.yaml deleted file mode 100644 index dd253fce4d..0000000000 --- a/kubernetes/msb/templates/msb-eag-deployment.yaml +++ /dev/null @@ -1,70 +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.disableMsbMsbEag }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: msb-eag - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.eagReplicas }} - selector: - matchLabels: - app: msb-eag - template: - metadata: - labels: - app: msb-eag - name: msb-eag - spec: - hostname: msb-eag - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - msb-discovery - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: msb-eag-readiness - containers: - - args: - image: {{ .Values.image.apigateway }} - name: "msb-eag" - env: - - name: CONSUL_IP - value: msb-consul.{{ .Values.nsPrefix }} - - name: SDCLIENT_IP - value: msb-discovery.{{ .Values.nsPrefix }} - - name: ROUTE_LABELS - value: "visualRange:0" - ports: - - containerPort: {{ .Values.eagPort }} - name: msb-eag - readinessProbe: - tcpSocket: - port: {{ .Values.eagPort }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: {{ .Values.pullPolicy}} - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/msb/templates/msb-iag-deployment.yaml b/kubernetes/msb/templates/msb-iag-deployment.yaml deleted file mode 100644 index 9fc5c7b4dd..0000000000 --- a/kubernetes/msb/templates/msb-iag-deployment.yaml +++ /dev/null @@ -1,70 +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.disableMsbMsbIag }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: msb-iag - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.iagReplicas }} - selector: - matchLabels: - app: msb-iag - template: - metadata: - labels: - app: msb-iag - name: msb-iag - spec: - hostname: msb-iag - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - msb-discovery - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: msb-iag-readiness - containers: - - args: - image: {{ .Values.image.apigateway }} - name: "msb-iag" - env: - - name: CONSUL_IP - value: msb-consul.{{ .Values.nsPrefix }} - - name: SDCLIENT_IP - value: msb-discovery.{{ .Values.nsPrefix }} - - name: ROUTE_LABELS - value: "visualRange:1" - ports: - - containerPort: {{ .Values.iagPort }} - name: msb-iag - readinessProbe: - tcpSocket: - port: {{ .Values.iagPort }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy}}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/msb/values.yaml b/kubernetes/msb/values.yaml index bf42455586..49e5196e41 100644 --- a/kubernetes/msb/values.yaml +++ b/kubernetes/msb/values.yaml @@ -12,34 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: IfNotPresent -image: - readiness: oomk8s/readiness-check:1.1.0 - consul: consul:0.9.3 - discovery: nexus3.onap.org:10001/onap/msb/msb_discovery:1.1.0-SNAPSHOT-latest - apigateway: nexus3.onap.org:10001/onap/msb/msb_apigateway:1.1.0-SNAPSHOT-latest - kube2msb: nexus3.onap.org:10001/onap/oom/kube2msb - -consulPort: 8500 -consulNodePort: 30500 -msbConsulReplicas: 1 - -discoveryPort: 10081 -discoveryNodePort: 30081 -discoveryReplicas: 1 - -iagPort: 80 -iagPort_https: 443 -iagNodePort: 30080 -iagNodePort_https: 30443 -iagReplicas: 2 - -eagPort: 80 -eagPort_https: 443 -eagNodePort: 30082 -eagNodePort_https: 30446 -eagReplicas: 2 - -kubeMasterUrl: https://kubernetes.default.svc.cluster.local:443 -discoveryUrl: http://msb-discovery.{{ .Values.nsPrefix }}:10081 +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== diff --git a/kubernetes/mso/resources/config/log/filebeat/filebeat.yml b/kubernetes/mso/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/mso/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/mso/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/mso/values.yaml b/kubernetes/mso/values.yaml index 8b2e18567a..410246fcbc 100644 --- a/kubernetes/mso/values.yaml +++ b/kubernetes/mso/values.yaml @@ -29,3 +29,7 @@ image: mso: nexus3.onap.org:10001/openecomp/mso:v1.1.2 mariadb: nexus3.onap.org:10001/mariadb:10.1.11 filebeat: docker.elastic.co/beats/filebeat:5.5.0 + +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/multicloud/resources/config/log/filebeat/filebeat.yml b/kubernetes/multicloud/resources/config/log/filebeat/filebeat.yml index 706f24d693..a6dd579b4b 100644 --- a/kubernetes/multicloud/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/multicloud/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml b/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml index 8d9ec35571..c1b385865b 100644 --- a/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml +++ b/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml @@ -66,7 +66,7 @@ spec: timeoutSeconds: 10 successThreshold: 1 failureThreshold: 5 - - image: {{ .Values.image.filebeat }} + - image: {{ .Values.image.filebeat }} imagePullPolicy: {{ .Values.pullPolicy }} name: filebeat-onap volumeMounts: diff --git a/kubernetes/multicloud/values.yaml b/kubernetes/multicloud/values.yaml index 2f76d6a688..d43ee61343 100644 --- a/kubernetes/multicloud/values.yaml +++ b/kubernetes/multicloud/values.yaml @@ -30,3 +30,7 @@ image: # domain name of msb gateway msbgateway: msb-iag.{{ .Values.nsPrefix }} msbPort: 80 + +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/onap/requirements.yaml b/kubernetes/onap/requirements.yaml index 0b511503b9..91943f46bd 100644 --- a/kubernetes/onap/requirements.yaml +++ b/kubernetes/onap/requirements.yaml @@ -53,7 +53,7 @@ dependencies: repository: '@local' condition: esr.enabled - name: log - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: log.enabled - name: message-router @@ -65,7 +65,7 @@ dependencies: repository: '@local' condition: mock.enabled - name: msb - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: msb.enabled - name: multicloud diff --git a/kubernetes/onap/values.yaml b/kubernetes/onap/values.yaml index 0c3ff8526d..ee7d00b441 100644 --- a/kubernetes/onap/values.yaml +++ b/kubernetes/onap/values.yaml @@ -63,7 +63,7 @@ dcaegen2: enabled: true esr: enabled: true -log: +log: # ONAP Logging ElasticStack enabled: true message-router: enabled: true diff --git a/kubernetes/oneclick/createAll.bash b/kubernetes/oneclick/createAll.bash deleted file mode 100755 index ded7c392ed..0000000000 --- a/kubernetes/oneclick/createAll.bash +++ /dev/null @@ -1,189 +0,0 @@ -#!/bin/bash - -. $(dirname "$0")/setenv.bash - - -usage() { - cat <&2 - exit $ret - fi -} - -create_service_account() { - cmd=`echo kubectl create clusterrolebinding $1-admin-binding --clusterrole=cluster-admin --serviceaccount=$1:default` - eval ${cmd} - check_return_code $cmd -} - -create_namespace() { - cmd=`echo kubectl create namespace $1` - eval ${cmd} -} - -create_registry_key() { -cmd=`echo kubectl --namespace $1 create secret docker-registry $2 --docker-server=$3 --docker-username=$4 --docker-password=$5 --docker-email=$6` - eval ${cmd} - check_return_code $cmd -} - -configure_dcaegen2() { - if [ ! -s "$OPENSTACK_PRIVATE_KEY_PATH" ] - then - echo "ERROR: $OPENSTACK_PRIVATE_KEY_PATH does not exist or is empty. Cannot launch dcae gen2." - return 1 - fi - - cmd=`echo kubectl --namespace $1-$2 create secret generic $2-openstack-ssh-private-key --from-file=key=${OPENSTACK_PRIVATE_KEY_PATH}` - eval ${cmd} - check_return_code $cmd - - if [ ! -s "$DCAEGEN2_CONFIG_INPUT_FILE_PATH" ] - then - echo "ERROR: $DCAEGEN2_CONFIG_INPUT_FILE_PATH does not exist or is empty. Cannot launch dcae gen2." - return 1 - fi - - cmd=`echo kubectl --namespace $1-$2 create configmap $2-config-inputs --from-file=inputs.yaml=${DCAEGEN2_CONFIG_INPUT_FILE_PATH}` - eval ${cmd} - check_return_code $cmd -} - -create_onap_helm() { - HELM_VALUES_ADDITION="" - if [[ ! -z $HELM_VALUES_FILEPATH ]]; then - HELM_VALUES_ADDITION="--values=$HELM_VALUES_FILEPATH" - fi - # Have to put a check for dcaegen2 because it requires external files to helm - # which should not be part of the Chart. - if [ "$2" = "dcaegen2" ]; - then - configure_dcaegen2 $1 $2 - local result=$? - if [ $result -ne 0 ] - then - echo "ERROR: dcaegen2 failed to configure: Pre-requisites not met. Skipping deploying it and continue" - return - fi - fi - - cmd=`echo helm install $LOCATION/$2/ --name $1-$2 --namespace $1 --set nsPrefix=$1,nodePortPrefix=$3 ${HELM_VALUES_ADDITION}` - eval ${cmd} - check_return_code $cmd -} - -#MAINs -NS= -HELM_VALUES_FILEPATH="" -LOCATION="../" -INCL_SVC=true -APP= -INSTANCE=1 -MAX_INSTANCE=5 -DU=$ONAP_DOCKER_USER -DP=$ONAP_DOCKER_PASS - -SINGLE_COMPONENT=false - -while getopts ":n:u:s:i:a:du:dp:l:v:" PARAM; do - case $PARAM in - u) - usage - exit 1 - ;; - n) - NS=${OPTARG} - ;; - v) - HELM_VALUES_FILEPATH=${OPTARG} - ;; - i) - INSTANCE=${OPTARG} - ;; - l) - LOCATION=${OPTARG} - ;; - a) - SINGLE_COMPONENT=true - APP=${OPTARG} - if [[ -z $APP ]]; then - usage - exit 1 - fi - ;; - du) - DU=${OPTARG} - ;; - dp) - DP=${OPTARG} - ;; - ?) - usage - exit - ;; - esac -done - -if [[ -z $NS ]]; then - usage - exit 1 -fi - -if [[ ! -z "$APP" ]]; then - HELM_APPS=($APP) -fi - - -if [ "$INSTANCE" -gt "$MAX_INSTANCE" ];then - printf "\n********** You choose to create ${INSTANCE}th instance of ONAP \n" - printf "\n********** Due to port allocation only ${MAX_INSTANCE} instances of ONAP is allowed per kubernetes deployment\n" - exit 1 -fi - -start=$((300+2*INSTANCE)) -end=$((start+1)) - -printf "\n********** Creating instance ${INSTANCE} of ONAP with port range ${start}00 and ${end}99\n" - - -printf "\n********** Creating ONAP: ${ONAP_APPS[*]}\n" - -if [ "$SINGLE_COMPONENT" == "false" ] -then - printf "\nCreating namespace **********\n" - create_namespace $NS - - printf "\nCreating registry secret **********\n" - create_registry_key $NS ${NS}-docker-registry-key $ONAP_DOCKER_REGISTRY $DU $DP $ONAP_DOCKER_MAIL - - printf "\nCreating service account **********\n" - create_service_account $NS -fi - -printf "\n\n********** Creating deployments for ${HELM_APPS[*]} ********** \n" - -for i in ${HELM_APPS[@]}; do - - printf "\nCreating deployments and services **********\n" - create_onap_helm $NS $i $start - - printf "\n" -done - -printf "\n**** Done ****\n" diff --git a/kubernetes/oneclick/deleteAll.bash b/kubernetes/oneclick/deleteAll.bash deleted file mode 100755 index 9833af7909..0000000000 --- a/kubernetes/oneclick/deleteAll.bash +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/bash - -. $(dirname "$0")/setenv.bash - -delete_namespace() { - kubectl delete namespace $1 -} - -delete_service_account() { - kubectl delete clusterrolebinding $1-admin-binding -} - -delete_registry_key() { - kubectl --namespace $1 delete secret ${1}-docker-registry-key -} - -delete_app_helm() { - helm delete $1-$2 --purge -} - -wait_terminate() { - printf "Waiting for namespaces termination...\n" - while true; do - declare -i _STATUS=0 - for i in ${HELM_APPS[@]}; do - kubectl get pods --namespace $1 | grep -w " $i" > /dev/null 2>&1 - if [ "$?" -ne "0" ]; then - _STATUS=1 - break - fi - done - - if [ "$SINGLE_COMPONENT" == "false" ]; then - kubectl get namespaces $1 > /dev/null 2>&1 - _STATUS=$? - fi - if [ "$_STATUS" -ne "0" ]; then - break - fi - sleep 2 - done -} - -usage() { - cat < # -######################################################################################## -#!/bin/bash - - -NS=$1 -if [[ -z $NS ]] -then - echo "Namespace is not specified, use onap namespace." - NS="onap" -fi - -echo "Clean up $NS configuration" -cd .. -./deleteAll.bash -n $NS -y -cd - - -echo "---------------------------------------------- -Force remove namespace..." -kubectl delete namespace $NS -echo "...done : kubectl get namespace ------------------------------------------------ ->>>>>>>>>>>>>> k8s namespace" -kubectl get namespace -while [[ ! -z `kubectl get namespace|grep $NS` ]] -do - echo "Wait for namespace $NS to be deleted ------------------------------------------------ ->>>>>>>>>>>>>> k8s namespace" - kubectl get namespace - sleep 2 -done - -echo "Force delete helm process ..." -helm delete $NS-config --purge --debug -echo "...done : helm ls --all - ----------------------------------------------- ->>>>>>>>>>>>>> helm" -helm ls --all - -echo "Remove $NS dockerdata..." -sudo rm -rf /dockerdata-nfs/onap -echo "...done : ls -altr /dockerdata-nfs - ----------------------------------------------- ->>>>>>>>>>>>>> /dockerdata-nfs directory" -ls -altr /dockerdata-nfs diff --git a/kubernetes/oneclick/tools/autoCreateConfig.bash b/kubernetes/oneclick/tools/autoCreateConfig.bash deleted file mode 100644 index 99ea03e1bb..0000000000 --- a/kubernetes/oneclick/tools/autoCreateConfig.bash +++ /dev/null @@ -1,65 +0,0 @@ -######################################################################################## -# This script wraps {$OOM}/kubernetes/config/createConfig.sh script # -# and will only terminated when the configuration is Completed or failed # -# # -# To run it, just enter the following command: # -# ./autoCreateConfig.bash # -######################################################################################## -#!/bin/bash - - -NS=$1 -if [[ -z $NS ]] -then - echo "Namespace is not specified, use onap namespace." - NS="onap" -fi - -echo "Create $NS config under config directory..." -cd ../../config -./createConfig.sh -n $NS -cd - - - -echo "...done : kubectl get namespace ------------------------------------------------ ->>>>>>>>>>>>>> k8s namespace" -kubectl get namespace - - -echo " ------------------------------------------------ ->>>>>>>>>>>>>> helm : helm ls --all" -helm ls --all - - -echo " ------------------------------------------------ ->>>>>>>>>>>>>> pod : kubectl get pods -n $NS -a" -kubectl get pods -n $NS -a - - -while true -do - echo "wait for $NS config pod reach to Completed STATUS" - sleep 5 - echo "-----------------------------------------------" - kubectl get pods -n $NS -a - - status=`kubectl get pods -n $NS -a |grep config |xargs echo | cut -d' ' -f3` - - if [ "$status" = "Completed" ] - then - echo "$NS config is Completed!!!" - break - fi - - if [ "$status" = "Error" ] - then - echo " -$NS config is failed with Error!!! -Logs are:" - kubectl logs config -n $NS -f - break - fi -done diff --git a/kubernetes/oneclick/tools/collectInfo.bash b/kubernetes/oneclick/tools/collectInfo.bash deleted file mode 100644 index 734c5a6c62..0000000000 --- a/kubernetes/oneclick/tools/collectInfo.bash +++ /dev/null @@ -1,171 +0,0 @@ -#!/bin/bash - -NS= -OUT_NAME=onap_info_$(date +%y.%m.%d_%H.%M.%S.%N) -OUT_FILE= -OUT_DIR=$(dirname "$0") -TMP_DIR=$(dirname $(mktemp -u)) -CONTAINER_LOGS_PATH=/var/log/onap -CP_CONTAINER_LOGS=false - -if [ ! -z "$DEBUG" ]; then - set -x -fi - -usage() { - cat <> ${_log} - printf "================================================================================\n" >> ${_log} - eval "${_cmd}" >> ${_log} 2>&1 - printf "================================================================================\n" >> ${_log} -} - -collect_pod_info() { - local _ns=$1 - local _id=$2 - local _log_dir=$3 - local _cp_logs=$4 - declare -i _i=0 - kubectl -n $_ns get pods $_id -o=jsonpath='{range .spec.containers[*]}{.name}{"\n"}{end}' | while read c; do - call_with_log "kubectl -n $_ns logs $_id -c $c" "$_log_dir/$_id-$c.log" - if [ "$_i" -eq "0" ] && [ "$_cp_logs" == "true" ]; then - # copy logs from 1st container only as logs dir is shared between the containers - local _cmd="kubectl cp $_ns/$_id:${CONTAINER_LOGS_PATH} $_log_dir/$_id-$c -c $c" - if [ -z "$DEBUG" ]; then - _cmd+=" > /dev/null 2>&1" - fi - eval "${_cmd}" - fi - ((_i++)) - done -} - -collect_ns_info() { - local _ns=$1 - local _log_dir=$2/$_ns - call_with_log "kubectl -n $NS-$i get services -o=wide" "$_log_dir/list_services.log" - kubectl -n "$_ns" get services | while read i; do - local _id=`echo -n $i | tr -s ' ' | cut -d' ' -n -f1` - if [ "$_id" == "NAME" ]; then - continue - fi - call_with_log "kubectl -n $_ns describe services $_id" "$_log_dir/describe_services/$_id.log" - done - call_with_log "kubectl -n $NS-$i get pods -o=wide" "$_log_dir/list_pods.log" - kubectl -n "$_ns" get pods | while read i; do - local _id=`echo -n $i | tr -s ' ' | cut -d' ' -n -f1` - if [ "$_id" == "NAME" ]; then - continue - fi - call_with_log "kubectl -n $_ns describe pods $_id" "$_log_dir/describe_pods/$_id.log" - collect_pod_info "$_ns" "$_id" "$_log_dir/logs" "${CP_CONTAINER_LOGS}" - done -} - -while getopts ":un:a:d:f:c" PARAM; do - case $PARAM in - u) - usage - exit 1 - ;; - n) - NS=${OPTARG} - ;; - a) - APP=${OPTARG} - if [[ -z $APP ]]; then - usage - exit 1 - fi - ;; - d) - OUT_DIR=${OPTARG} - if [[ -z $OUT_DIR ]]; then - usage - exit 1 - fi - ;; - f) - OUT_FILE=${OPTARG} - if [[ -z $OUT_FILE ]]; then - usage - exit 1 - fi - ;; - c) - CP_CONTAINER_LOGS=true - ;; - ?) - usage - exit - ;; - esac -done - -if [ -z "$NS" ]; then - usage - exit 1 -fi - -if [[ -z $OUT_FILE ]]; then - OUT_FILE=$OUT_NAME.tgz -fi - -if [ ! -z "$APP" ]; then - _APPS=($APP) -else - _APPS=(`kubectl get namespaces | grep "^$NS-" | tr -s ' ' | cut -d' ' -n -f1 | sed -e "s/^$NS-//"`) -fi - -printf "Collecting information about ONAP deployment...\n" -printf "Components: %s\n" "${_APPS[*]}" - -# Collect common info -mkdir -p ${TMP_DIR}/${OUT_NAME}/ -echo "${_APPS[*]}" > ${TMP_DIR}/${OUT_NAME}/component-list.log -printf "Collecting Helm info\n" -call_with_log "helm version" "${TMP_DIR}/${OUT_NAME}/helm-version.log" -call_with_log "helm list" "${TMP_DIR}/${OUT_NAME}/helm-list.log" - -printf "Collecting Kubernetes info\n" -call_with_log "kubectl version" "${TMP_DIR}/${OUT_NAME}/k8s-version.log" -call_with_log "kubectl get nodes -o=wide" "${TMP_DIR}/${OUT_NAME}/k8s-nodes.log" -call_with_log "kubectl cluster-info" "${TMP_DIR}/${OUT_NAME}/k8s-cluster-info.log" -call_with_log "kubectl cluster-info dump" "${TMP_DIR}/${OUT_NAME}/k8s-cluster-info-dump.log" -call_with_log "kubectl top node" "${TMP_DIR}/${OUT_NAME}/k8s-top-node.log" - -# Collect per-component info -for i in ${_APPS[@]}; do - printf "Writing Kubernetes info of component $i\n" - collect_ns_info "$NS-$i" "${TMP_DIR}/${OUT_NAME}" -done - -# Pack and cleanup -mkdir -p ${OUT_DIR} -_OUT_DIR=`readlink -e ${OUT_DIR}` -printf "Packing output to ${_OUT_DIR}/${OUT_FILE}...\n" -cd ${TMP_DIR} -tar cfz ${_OUT_DIR}/${OUT_FILE} ${OUT_NAME} -cd - -printf "Cleaning up...\n" -rm -rf ${TMP_DIR}/${OUT_NAME} -printf "Done\n" diff --git a/kubernetes/policy/resources/config/log/filebeat/filebeat.yml b/kubernetes/policy/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/policy/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/policy/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/policy/values.yaml b/kubernetes/policy/values.yaml index 5a04070da3..49ad89225d 100644 --- a/kubernetes/policy/values.yaml +++ b/kubernetes/policy/values.yaml @@ -38,3 +38,7 @@ image: policyNexusVersion: v1.1.1 ubuntu: ubuntu:16.04 filebeat: docker.elastic.co/beats/filebeat:5.5.0 + +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/portal/resources/config/log/filebeat/filebeat.yml b/kubernetes/portal/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/portal/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/portal/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/portal/values.yaml b/kubernetes/portal/values.yaml index ed520d6cf6..89c2dbcd96 100644 --- a/kubernetes/portal/values.yaml +++ b/kubernetes/portal/values.yaml @@ -31,3 +31,6 @@ image: ubuntuInit: oomk8s/ubuntu-init:1.0.0 onapPortal: webappsDir: "/opt/apache-tomcat-8.0.37/webapps" +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/readiness/docker/init/Dockerfile b/kubernetes/readiness/docker/init/Dockerfile index 20f2268975..7214e04174 100644 --- a/kubernetes/readiness/docker/init/Dockerfile +++ b/kubernetes/readiness/docker/init/Dockerfile @@ -17,4 +17,8 @@ ENV TOKEN="/var/run/secrets/kubernetes.io/serviceaccount/token" COPY ready.py /root/ready.py RUN chmod a+x /root/ready.py + +COPY job_complete.py /root/job_complete.py +RUN chmod a+x /root/job_complete.py + ENTRYPOINT /root/ready.py diff --git a/kubernetes/readiness/docker/init/job_complete.py b/kubernetes/readiness/docker/init/job_complete.py new file mode 100644 index 0000000000..97d22da6c1 --- /dev/null +++ b/kubernetes/readiness/docker/init/job_complete.py @@ -0,0 +1,97 @@ +#!/usr/bin/python +import getopt +import logging +import os +import sys +import time + +from kubernetes import client + +# extract env variables. +namespace = os.environ['NAMESPACE'] +cert = os.environ['CERT'] +host = os.environ['KUBERNETES_SERVICE_HOST'] +token_path = os.environ['TOKEN'] + +with open(token_path, 'r') as token_file: + token = token_file.read().replace('\n', '') + +# setup logging +log = logging.getLogger(__name__) +handler = logging.StreamHandler(sys.stdout) +handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) +handler.setLevel(logging.INFO) +log.addHandler(handler) +log.setLevel(logging.INFO) + +configuration = client.Configuration() +configuration.host = "https://" + host +configuration.ssl_ca_cert = cert +configuration.api_key['authorization'] = token +configuration.api_key_prefix['authorization'] = 'Bearer' +batchV1Api = client.BatchV1Api(client.ApiClient(configuration)) + + +def is_job_complete(job_name): + complete = False + log.info("Checking if " + job_name + " is complete") + response = "" + try: + response = batchV1Api.read_namespaced_job_status(job_name, namespace) + if response.status.succeeded == 1: + job_status_type = response.status.conditions[0].type + if job_status_type == "Complete": + complete = True + else: + log.info(job_name + " is not complete") + else: + log.info(job_name + " has not succeeded yet") + return complete + except Exception as e: + log.error("Exception when calling read_namespaced_job_status: %s\n" % e) + + +DEF_TIMEOUT = 10 +DESCRIPTION = "Kubernetes container job complete check utility" +USAGE = "Usage: job_complete.py [-t ] -j [-j ...]\n" \ + "where\n" \ + " - wait for container job complete timeout in min, default is " + str(DEF_TIMEOUT) + "\n" \ + " - name of the job to wait for\n" + +def main(argv): + # args are a list of job names + job_names = [] + timeout = DEF_TIMEOUT + try: + opts, args = getopt.getopt(argv, "hj:t:", ["job-name=", "timeout=", "help"]) + for opt, arg in opts: + if opt in ("-h", "--help"): + print("%s\n\n%s" % (DESCRIPTION, USAGE)) + sys.exit() + elif opt in ("-j", "--job-name"): + job_names.append(arg) + elif opt in ("-t", "--timeout"): + timeout = float(arg) + except (getopt.GetoptError, ValueError) as e: + print("Error parsing input parameters: %s\n" % e) + print(USAGE) + sys.exit(2) + if job_names.__len__() == 0: + print("Missing required input parameter(s)\n") + print(USAGE) + sys.exit(2) + + for job_name in job_names: + timeout = time.time() + timeout * 60 + while True: + complete = is_job_complete(job_name) + if complete is True: + break + elif time.time() > timeout: + log.warning("timed out waiting for '" + job_name + "' to be completed") + exit(1) + else: + time.sleep(5) + +if __name__ == "__main__": + main(sys.argv[1:]) \ No newline at end of file diff --git a/kubernetes/robot/resources/config/eteshare/config/vm_properties.py b/kubernetes/robot/resources/config/eteshare/config/vm_properties.py index 41db84d2b9..cd1ce14dc8 100755 --- a/kubernetes/robot/resources/config/eteshare/config/vm_properties.py +++ b/kubernetes/robot/resources/config/eteshare/config/vm_properties.py @@ -1,4 +1,4 @@ -# File generated from /opt/config +#file generated from /opt/config # GLOBAL_INJECTED_AAI1_IP_ADDR = "{{.Release.Name}}-aai.{{include "common.namespace" .}}" GLOBAL_INJECTED_AAI2_IP_ADDR = "N/A" @@ -38,6 +38,7 @@ GLOBAL_INJECTED_VID_IP_ADDR = "{{.Release.Name}}-vid-server.{{include "common.na GLOBAL_INJECTED_VM_FLAVOR = "{{ .Values.openStackFlavourMedium }}" GLOBAL_INJECTED_VM_IMAGE_NAME = "{{ .Values.ubuntuImage }}" GLOBAL_INJECTED_PUBLIC_NET_ID = "{{ .Values.openStackPublicNetId }}" +GLOBAL_INJECTED_SCRIPT_VERSION = "{{ .Values.scriptVersion }}" GLOBAL_INJECTED_PROPERTIES = { "GLOBAL_INJECTED_AAI1_IP_ADDR" : "{{.Release.Name}}-aai.{{include "common.namespace" .}}", "GLOBAL_INJECTED_APPC_IP_ADDR" : "{{.Release.Name}}-appc-sdnhost.{{include "common.namespace" .}}", @@ -73,5 +74,6 @@ GLOBAL_INJECTED_PROPERTIES = { "GLOBAL_INJECTED_VID_IP_ADDR" : "{{.Release.Name}}-vid-server.{{include "common.namespace" .}}", "GLOBAL_INJECTED_VM_FLAVOR" : "{{ .Values.openStackFlavourMedium }}", "GLOBAL_INJECTED_VM_IMAGE_NAME" : "{{ .Values.ubuntuImage }}", - "GLOBAL_INJECTED_PUBLIC_NET_ID" : "{{ .Values.openStackPublicNetId }}" + "GLOBAL_INJECTED_PUBLIC_NET_ID" : "{{ .Values.openStackPublicNetId }}", + "GLOBAL_INJECTED_SCRIPT_VERSION" : "{{ .Values.scriptVersion }}" } diff --git a/kubernetes/robot/values.yaml b/kubernetes/robot/values.yaml index 9057a86aff..6ef3a21d89 100644 --- a/kubernetes/robot/values.yaml +++ b/kubernetes/robot/values.yaml @@ -46,6 +46,7 @@ openStackPrivateSubnetId: "e8f51956-00dd-4425-af36-045716781ffc" openStackTenantId: "47899782ed714295b1151681fdfd51f5" openStackUserName: "vnf_user" ubuntuImage: "Ubuntu_14.04.5_LTS" +scriptVersion: "1.1.1" # default number of instances robotReplicas: 1 diff --git a/kubernetes/sdc/resources/config/log/filebeat/filebeat.yml b/kubernetes/sdc/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/sdc/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/sdc/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/sdc/values.yaml b/kubernetes/sdc/values.yaml index 13f41aa0ea..40b3ec3f23 100644 --- a/kubernetes/sdc/values.yaml +++ b/kubernetes/sdc/values.yaml @@ -25,3 +25,6 @@ image: sdcBackend: nexus3.onap.org:10001/openecomp/sdc-backend:v1.1.0 filebeat: docker.elastic.co/beats/filebeat:5.5.0 ubuntuInit: oomk8s/ubuntu-init:1.0.0 +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/sdnc/resources/config/log/filebeat/log4j/filebeat.yml b/kubernetes/sdnc/resources/config/log/filebeat/log4j/filebeat.yml index 2cd63e1d98..49d818a807 100644 --- a/kubernetes/sdnc/resources/config/log/filebeat/log4j/filebeat.yml +++ b/kubernetes/sdnc/resources/config/log/filebeat/log4j/filebeat.yml @@ -29,7 +29,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/sdnc/values.yaml b/kubernetes/sdnc/values.yaml index 9c706b8310..94029179db 100644 --- a/kubernetes/sdnc/values.yaml +++ b/kubernetes/sdnc/values.yaml @@ -37,4 +37,6 @@ portalReplicas: 1 disableSdncSdncDgbuilder: false disableSdncSdncPortal: false disableNfsProvisioner: false - +config: + logstashServiceName: log-ls + logstashPort: 5044 diff --git a/kubernetes/so/resources/config/log/filebeat/filebeat.yml b/kubernetes/so/resources/config/log/filebeat/filebeat.yml index 9ad559c027..b0d4690754 100644 --- a/kubernetes/so/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/so/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{ .Release.Name }}-log:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/so/values.yaml b/kubernetes/so/values.yaml index d62465d665..3ca60b0395 100644 --- a/kubernetes/so/values.yaml +++ b/kubernetes/so/values.yaml @@ -44,7 +44,8 @@ config: openStackKeyStoneUrl: "http://1.2.3.4:5000" openStackServiceTenantName: "service" openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e" - + logstashServiceName: log-ls + logstashPort: 5044 # default number of instances replicaCount: 1 diff --git a/kubernetes/vid/resources/config/log/filebeat/filebeat.yml b/kubernetes/vid/resources/config/log/filebeat/filebeat.yml index 89c6932577..b0d4690754 100644 --- a/kubernetes/vid/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/vid/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/vid/values.yaml b/kubernetes/vid/values.yaml index 258177b079..f177476e7d 100644 --- a/kubernetes/vid/values.yaml +++ b/kubernetes/vid/values.yaml @@ -23,3 +23,6 @@ image: 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 +config: + logstashServiceName: log-ls + logstashPort: 5044