From f8b8f07b9e7fa70ecc92b9016fabcfc0ba53e189 Mon Sep 17 00:00:00 2001 From: Mandeep Khinda Date: Thu, 26 Apr 2018 14:35:38 +0000 Subject: [PATCH] OOM direct portal access -must include suffix of "onap.org" in URL for single signon -this isn't truly configurable - portal-app needs to be rebuilt See: portal/docs/tutorials/portal-sdk/single-signon.rst -must update local etc hosts with "fake" dns names -must use kubectl to portforward application ports into the pods -fixed zookeeper service name, -this is needed to be able to login (auth) -adding helper script to launch port-forwarding Issue-ID: OOM-633 Change-Id: I019f33f71a673467c420d1e44ee6c42da4a95f4b Signed-off-by: Mandeep Khinda --- .../properties/ONAPPORTAL/music.properties | 4 +- .../properties/ONAPPORTAL/portal.properties | 2 +- .../properties/ONAPPORTAL/system.properties | 4 +- kubernetes/portal/charts/portal-app/values.yaml | 10 ++-- .../resources/config/mariadb/oom_updates.sql | 20 ++++++- .../properties/ONAPPORTALSDK/music.properties | 4 +- .../properties/ONAPPORTALSDK/portal.properties | 2 +- .../properties/ONAPPORTALSDK/system.properties | 4 +- .../charts/portal-sdk/templates/deployment.yaml | 2 +- kubernetes/portal/charts/portal-sdk/values.yaml | 10 ++-- .../properties/ONAPWIDGETMS/application.properties | 2 +- .../charts/portal-widget/templates/deployment.yaml | 2 +- kubernetes/portal/charts/portal-widget/values.yaml | 2 +- .../portal/charts/portal-zookeeper/values.yaml | 2 +- kubernetes/portal/launch-onap-portal.sh | 70 ++++++++++++++++++++++ .../resources/config/log/filebeat/filebeat.yml | 2 +- kubernetes/portal/values.yaml | 10 ++-- 17 files changed, 119 insertions(+), 33 deletions(-) create mode 100755 kubernetes/portal/launch-onap-portal.sh diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties index e375ac7cfe..10bfa47961 100644 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties @@ -13,7 +13,7 @@ music.serialize.compress = true #By default it's eventual music.atomic.get = false music.atomic.put = true -cassandra.host={{.Values.cassandra.chart.name}}.{{.Release.Namespace}} -zookeeper.host={{.Values.zookeeper.chart.name}}.{{.Release.Namespace}} +cassandra.host={{.Values.cassandra.service.name}} +zookeeper.host={{.Values.zookeeper.service.name}} cassandra.user={{.Values.cassandra.config.cassandraUsername}} cassandra.password={{.Values.cassandra.config.cassandraPassword}} diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties index 0e3381c61a..6157f29356 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties @@ -16,7 +16,7 @@ ueb_app_key = 7GkVcrO6sIDb3ngW ueb_app_secret = uCYgKjWKK5IxPGNNZzYSSWo9 ueb_app_mailbox_name = ECOMP-PORTAL-INBOX -ueb_url_list = {{.Values.messageRouter.chart.name}}.{{.Release.Namespace}} +ueb_url_list = message-router ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX # Consumer group name for UEB topic. diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties index 29149bc56a..47c73cd6a1 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties @@ -1,6 +1,6 @@ #mysql db.driver = org.mariadb.jdbc.Driver -db.connectionURL = jdbc:mariadb:failover://{{.Values.mariadb.chart.name}}.{{.Release.Namespace}}:3306/portal +db.connectionURL = jdbc:mariadb:failover://portal-db:3306/portal db.userName =root db.password =Aa123456 db.hib.dialect = org.hibernate.dialect.MySQLDialect @@ -82,7 +82,7 @@ notification_update_duration = 900 #Microservices Related Properties for Portal microservices.widget.protocol = http -microservices.widget.hostname = {{.Values.widget.chart.name}}.{{.Release.Namespace}} +microservices.widget.hostname = portal-widget microservices.widget.username = widget_user microservices.widget.password = M+KcrCMVrR1rAxtiFE49n1uXC3FCkNBqFgeYsubEC/U= #This property won't be needed after consul is functional on VMs - diff --git a/kubernetes/portal/charts/portal-app/values.yaml b/kubernetes/portal/charts/portal-app/values.yaml index 1663674a4e..b0ea028f6f 100644 --- a/kubernetes/portal/charts/portal-app/values.yaml +++ b/kubernetes/portal/charts/portal-app/values.yaml @@ -68,22 +68,22 @@ service: nodePort3: 14 mariadb: - chart: + service: name: portal-db widget: - chart: + service: name: portal-widget cassandra: - chart: + service: name: portal-cassandra config: cassandraUsername: root cassandraPassword: Aa123456 zookeeper: - chart: + service: name: portal-zookeeper messageRouter: - chart: + service: name: message-router ingress: diff --git a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql index 781b04626c..0163d317bb 100644 --- a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql +++ b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql @@ -4,5 +4,21 @@ Any updates required by OOM to the portaldb are made here. 1. split up SDC-FE and SDC-BE. Originally both FE and BE point to the same IP while the OOM K8s version has these service split up. */ -UPDATE fn_app SET app_rest_endpoint = 'http://sdc.api.be.simpledemo.onap.org:8080/api/v2' where app_name = 'SDC'; -UPDATE fn_app SET app_url = 'http://cli.api.simpledemo.onap.org:8080', app_type = 1 where app_name='CLI'; +-- app_url is the FE, app_rest_endpoint is the BE +--portal-sdk => doesnt have a node port so this won't work +update fn_app set app_url = 'http://portal-sdk.simpledemo.onap.org:8990/ONAPPORTALSDK/welcome.htm', app_rest_endpoint = 'http://portal-sdk:8990/ONAPPORTALSDK/api/v2' where app_name = 'xDemo App'; +--dmaap-bc => the dmaap-bc chart actually opens 8080 and 8443, not 8989. the chart isnt merged yet either. confirm the service name after bc chart merge +update fn_app set app_url = 'http://dmaap-bc.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap', app_rest_endpoint = 'http://dmaap-bc:8989/ECOMPDBCAPP/api/v2' where app_name = 'DMaaP Bus Ctrl'; +--sdc-be => 8443:30204, 8080:30205 +--sdc-fe => 8181:30206, 9443:30207 +update fn_app set app_url = 'http://sdc.api.fe.simpledemo.onap.org:8181/sdc1/portal', app_rest_endpoint = 'http://sdc-be:8080/api/v2' where app_name = 'SDC'; +--pap => 8443:30219 +update fn_app set app_url = 'http://policy.api.simpledemo.onap.org:8443/onap/policy', app_rest_endpoint = 'http://pap:8443/onap/api/v2' where app_name = 'Policy'; +--vid => 8080:30200 +update fn_app set app_url = 'http://vid.api.simpledemo.onap.org:8080/vid/welcome.htm', app_rest_endpoint = 'http://vid:8080/vid/api/v2' where app_name = 'Virtual Infrastructure Deployment'; +--sparky => sparky doesn't open a node port.. +update fn_app set app_url = 'http://aai.api.sparky.simpledemo.onap.org:8080/services/aai/webapp/index.html#/viewInspect', app_rest_endpoint = 'http://aai-sparky-be.{{.Release.Namespace}}:9517/api/v2' where app_name = 'A&AI UI'; +--cli => 8080:30260 +update fn_app set app_url = 'http://cli.api.simpledemo.onap.org:8080/', app_type = 1 where app_name = 'CLI'; +--msb-discovery => 10081:30281 this is clearly incorrect +update fn_app set app_url = 'http://msb.api.discovery.simpledemo.onap.org:8080/iui/microservices/default.html' where app_name = 'MSB'; \ No newline at end of file diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties index 72e97006c7..b17797658a 100644 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties @@ -14,7 +14,7 @@ music.serialize.compress = true music.atomic.get = false music.atomic.put = true -cassandra.host={{.Values.cassandra.chart.name}}.{{.Release.Namespace}} -zookeeper.host={{.Values.zookeeper.chart.name}}.{{.Release.Namespace}} +cassandra.host={{.Values.cassandra.service.name}} +zookeeper.host={{.Values.zookeeper.service.name}} cassandra.user={{.Values.cassandra.config.cassandraUsername}} cassandra.password={{.Values.cassandra.config.cassandraPassword}} diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties index 4b6f251e8b..2b199cca5c 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties @@ -30,7 +30,7 @@ ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi ueb_listeners_enable = false # UEB Configuration -ueb_url_list = {{.Values.messageRouter.chart.name}}.{{.Release.Namespace}} +ueb_url_list = message-router # ECOMP Portal listens on this UEB topic ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX # Replace these 3 default values with the ones for your specific App, diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties index cec75f06ba..531c96cccc 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties @@ -24,7 +24,7 @@ decryption_key = AGLDdG4D04BKm2IxIWEr8o== ########################################################################## db.driver = org.mariadb.jdbc.Driver -db.connectionURL = jdbc:mariadb://{{.Values.mariadb.chart.name}}.{{.Release.Namespace}}:3306/ecomp_sdk +db.connectionURL = jdbc:mariadb://portal-db:3306/ecomp_sdk db.userName = root db.password = Aa123456 db.min_pool_size = 5 @@ -62,7 +62,7 @@ guard_notebook_url= #authenticate user server #TODO: what is this URL supposed to be pointing to? Nothing in portal opens 8383 -authenticate_user_server=http://portal.onap.org:8383/openid-connect-server-webapp/allUsers +authenticate_user_server=http://portal.api.simpledemo.onap.org:8383/openid-connect-server-webapp/allUsers #cookie domain cookie_domain = onap.org diff --git a/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml b/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml index 1c94c78bb4..3b1d1fd478 100644 --- a/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml @@ -38,7 +38,7 @@ spec: - /root/ready.py args: - --container-name - - {{ .Values.mariadb.chart.name }} + - "portal-db" env: - name: NAMESPACE valueFrom: diff --git a/kubernetes/portal/charts/portal-sdk/values.yaml b/kubernetes/portal/charts/portal-sdk/values.yaml index 1bb7e5ab65..4974ea2755 100644 --- a/kubernetes/portal/charts/portal-sdk/values.yaml +++ b/kubernetes/portal/charts/portal-sdk/values.yaml @@ -61,22 +61,22 @@ service: internalPort: 8080 mariadb: - chart: + service: name: portal-db widget: - chart: + service: name: portal-widget cassandra: - chart: + service: name: portal-cassandra config: cassandraUsername: root cassandraPassword: Aa123456 zookeeper: - chart: + service: name: portal-zookeeper messageRouter: - chart: + service: name: message-router ingress: diff --git a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties index e228e2b10d..547a882c98 100644 --- a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties +++ b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties @@ -6,7 +6,7 @@ spring.http.multipart.max-request-size=128MB microservice.widget.location=/tmp ## App DB Properties -spring.datasource.url=jdbc:mysql://{{.Values.mariadb.chart.name}}.{{include "common.namespace" .}}:3306/portal +spring.datasource.url=jdbc:mysql://portal-db:3306/portal spring.datasource.username=root spring.datasource.password=Aa123456 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect diff --git a/kubernetes/portal/charts/portal-widget/templates/deployment.yaml b/kubernetes/portal/charts/portal-widget/templates/deployment.yaml index bff7924e29..6ce7d4eaee 100644 --- a/kubernetes/portal/charts/portal-widget/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-widget/templates/deployment.yaml @@ -38,7 +38,7 @@ spec: - /root/ready.py args: - --container-name - - {{ .Values.mariadb.chart.name }} + - "portal-db" env: - name: NAMESPACE valueFrom: diff --git a/kubernetes/portal/charts/portal-widget/values.yaml b/kubernetes/portal/charts/portal-widget/values.yaml index dc73446175..4f1a2a5a71 100644 --- a/kubernetes/portal/charts/portal-widget/values.yaml +++ b/kubernetes/portal/charts/portal-widget/values.yaml @@ -55,7 +55,7 @@ readiness: periodSeconds: 10 mariadb: - chart: + service: name: portal-db service: diff --git a/kubernetes/portal/charts/portal-zookeeper/values.yaml b/kubernetes/portal/charts/portal-zookeeper/values.yaml index 52408a83d7..951acf5b78 100644 --- a/kubernetes/portal/charts/portal-zookeeper/values.yaml +++ b/kubernetes/portal/charts/portal-zookeeper/values.yaml @@ -48,7 +48,7 @@ readiness: service: type: ClusterIP - name: portal-zk + name: portal-zookeeper portName: portal-zk externalPort: 2181 internalPort: 2181 diff --git a/kubernetes/portal/launch-onap-portal.sh b/kubernetes/portal/launch-onap-portal.sh new file mode 100755 index 0000000000..d9f64c121b --- /dev/null +++ b/kubernetes/portal/launch-onap-portal.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +usage () { echo "Usage : $0 "; } + +READY_JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' + +NAMESPACE=$1 +RELEASE_NAME=$2 + +if [ ! "$NAMESPACE" ] || [ ! "$RELEASE_NAME" ] +then + usage + exit 1 +fi + +PORTAL_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=portal-app,release=$RELEASE_NAME \ +-o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True"|awk -F: '{print $1}' ` +SDC_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=sdc-fe,release=$RELEASE_NAME \ +-o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` +VID_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=vid,release=$RELEASE_NAME \ +-o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` +POLICY_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=pap,release=$RELEASE_NAME \ +-o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` +PORTALSDK_POD_NAME=`kubectl get pods --namespace $NAMESPACE --selector=app=portal-sdk,release=$RELEASE_NAME \ +-o jsonpath='{.items[*].metadata.name}' -o jsonpath="$READY_JSONPATH" | grep "Ready=True" |awk -F: '{print $1}'` + +#TODO: Add more as testing progresses +[[ -z "$PORTAL_POD_NAME" ]] && { echo "WARNING: portal-app is not running in your Kubernetes cluster"; } +[[ -z "$SDC_POD_NAME" ]] && { echo "WARNING: sdc-fe is not running in your Kubernetes cluster"; } +[[ -z "$VID_POD_NAME" ]] && { echo "WARNING: vid is not running in your Kubernetes cluster"; } +[[ -z "$POLICY_POD_NAME" ]] && { echo "WARNING: pap is not running in your Kubernetes cluster"; } +[[ -z "$PORTALSDK_POD_NAME" ]] && { echo "WARNING: portal-sdk is not running in your Kubernetes cluster"; } + +if [ ! -z "$PORTAL_POD_NAME" ] +then + kubectl -n $NAMESPACE port-forward "$PORTAL_POD_NAME" 8989:8080 & + PORTAL_PID=$! +fi + +if [ ! -z "$VID_POD_NAME" ] +then + kubectl -n $NAMESPACE port-forward "$VID_POD_NAME" 8080:8080 & + VID_PID=$! +fi + +if [ ! -z "$SDC_POD_NAME" ] +then + kubectl -n $NAMESPACE port-forward "$SDC_POD_NAME" 8181:8181 & + SDC_PID=$! +fi + +if [ ! -z "$POLICY_POD_NAME" ] +then + kubectl -n $NAMESPACE port-forward "$POLICY_POD_NAME" 8443:8443 & + POLICY_PID=$! +fi + +if [ ! -z "$PORTALSDK_POD_NAME" ] +then + kubectl -n $NAMESPACE port-forward "$PORTALSDK_POD_NAME" 8990:8080 & + PORTALSDK_PID=$! +fi + +trap "{ kill -9 $PORTAL_PID $VID_PID $SDC_PID $POLICY_PID $PORTALSDK_PID; exit 0; }" INT +echo -e $'Press Ctrl+C to exit...\n' + +while : +do + sleep 60 +done \ No newline at end of file diff --git a/kubernetes/portal/resources/config/log/filebeat/filebeat.yml b/kubernetes/portal/resources/config/log/filebeat/filebeat.yml index b0d4690754..0bc14ea908 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: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] + hosts: ["{{.Values.config.logstashServiceName}}:{{.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 e22b3f9669..949efad31b 100644 --- a/kubernetes/portal/values.yaml +++ b/kubernetes/portal/values.yaml @@ -23,21 +23,21 @@ portal-mariadb: nameOverride: portal-db mariadb: - chart: + service: name: portal-db widget: - chart: + service: name: portal-widget cassandra: - chart: + service: name: portal-cassandra config: cassandraUsername: root cassandraPassword: Aa123456 zookeeper: - chart: + service: name: portal-zookeeper messageRouter: - chart: + service: name: message-router \ No newline at end of file -- 2.16.6