Skip to end of metadata
Go to start of metadata

Brian's cheatsheet for Helm commands: K8S / helm basic commands for ONAP integration

#git pull in OOM repo

git pull with submodule
Yangs-MacBook-Air:src yang$ git clone ""
Yangs-MacBook-Air:src yang$ cd oom
Yangs-MacBook-Air:oom yang$ git submodule update --init --recursive
Yangs-MacBook-Air:oom yang$ git pull

#find all unreleased ONAP images used by OOM charts

Unrelease image list in OOM
Yangs-MacBook-Air:oom yang$ find . -name 'values.yaml' -exec grep -Hn image {} \; | grep onap | grep image | grep -E -i "staging|snapshot" | grep -v helm | sort 
./kubernetes/aai/charts/aai-elasticsearch/values.yaml:22:image: onap/elasticsearch-sg:1.4-STAGING-latest

#ONAP installation from Windriver jumpserver. Git clone integration repo or pull the latest from repo first, then

ONAP Installation
xuyang11@pod-onap-01-vjhost:~$ cd integration/
xuyang11@pod-onap-01-vjhost:~/src/integration$ git pull
xuyang11@pod-onap-01-vjhost:~/src/integration$ source deployment/heat/onap-oom/env/windriver/Integration-SB-XX-openrc 
xuyang11@pod-onap-01-vjhost:~/src/integration$ cd deployment/heat/onap-oom
xuyang11@pod-onap-01-vjhost:~/src/integration/deployment/heat/onap-oom$ nohup ./scripts/ -m docker-manifest-staging.csv -q env/windriver/onap-oom.env &
xuyang11@pod-onap-01-vjhost:~/src/integration/deployment/heat/onap-oom$ nohup ./scripts/ -m docker-manifest.csv -q env/windriver/onap-oom.env &

#Update a project configuration or simply restart a project. For example, change GLOBAL_AAI_USERNAME parameter in

Update a project Chart
root@onap-oom-rancher:~# cd oom/kubernetes
root@onap-oom-rancher:~/oom/kubernetes# helm list -a
root@onap-oom-rancher:~/oom/kubernetes# helm delete dev-robot --purge
root@onap-oom-rancher:~/oom/kubernetes# ~/integration/deployment/heat/onap-oom/scripts/ robot                #clean up any resource used by robot
root@onap-oom-rancher:~/oom/kubernetes# rm -rf /dockerdata-nfs/dev-robot                                               #clean up the persistent data
root@onap-oom-rancher:~/oom/kubernetes# vi robot/resources/config/eteshare/config/      #make change to charts
root@onap-oom-rancher:~/oom/kubernetes# make robot
root@onap-oom-rancher:~/oom/kubernetes# make onap 
root@onap-oom-rancher:~/oom/kubernetes# helm deploy dev local/onap -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml -f /root/integration-override.yaml --namespace onap

#Undeploy the whole ONAP  (not tested yet) - use 'kubectl -n onap get all' and then delete any dangling parts like below

Undeploy ONAP
root@rancher: helm undeploy dev --purge

root@rancher: kubectl -n onap get all

root@rancher: kubectl -n onap delete services --all

root@rancher: kubectl -n onap delete pv --all

root@rancher: kubectl -n onap delete pvc --all

root@rancher: kubectl -n onap delete secrets --all

root@rancher: kubectl -n onap delete clusterrolebinding --all

root@rancher: kubectl -n onap delete statefulsets --all

root@rancher: kubectl -n onap delete deployments --all

root@rancher: kubectl -n onap delete job --all

root@rancher: kubectl -n onap delete pods --all

root@rancher: kubectl -n onap get all

#Deploy and undeploy a chart. See OOM Helm (un)Deploy plugins

root@oom-rancher:~/oom/kubernetes# helm deploy dev-sdc local/onap --namespace onap -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml -f /root/integration-override.yaml --verbose

If it fails, try to delete the release, and deploy again

root@oom-rancher:~/oom/kubernetes# helm deploy dev-sdc local/onap --namespace onap -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml -f /root/integration-override.yaml --verbose
fetching local/onap
Error: UPGRADE FAILED: "dev-sdc" has no deployed releases
root@oom-rancher:~/oom/kubernetes# helm del dev-sdc --purge
release "dev-sdc" deleted
root@oom-rancher:~/oom/kubernetes# helm deploy dev-sdc local/onap --namespace onap -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml -f /root/integration-override.yaml --verbose
fetching local/onap
Release "dev-sdc" does not exist. Installing it now.
NAME: dev-sdc

#Another way to install one chart (deprecated due to memory size limit of configmap)

root@oom-rancher:~/oom/kubenetes# helm delete --purge dev-sdc
root@oom-rancher:~/oom/kubenetes# helm install local/sdc --namespace onap --name dev-sdc -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml  -f /root/integration-override.yaml

#Edit deployment. Very useful to change deployment parameters, like docker image version so you can pick a previous working docker image. K8S will restart the pod after the change is made

Helm edit
root@onap-oom-rancher:~# kubectl edit deploy -n onap dev-sdc-sdc-fe

#Edit statefulset. Sometimes image version is in statefulset, use describe pod command and search for Controlled by keyword. You need to bounce pod after change

root@oom-rancher:~/oom/kubernetes# kubectl -n onap edit statefulset dev-appc-appc

#Find AAI endpoint IP and port. IP can be ANY cluster node IP, and port is 30233

AAI Port
root@onap-oom-rancher:/# kubectl -n onap get service |grep aai
aai NodePort <none> 8080:30232/TCP,8443:30233/TCP 16h
aai-babel NodePort <none> 9516:30279/TCP 16h
aai-cassandra ClusterIP None <none> 9042/TCP,9160/TCP,61621/TCP 16h
aai-champ NodePort <none> 9522:30278/TCP 16h.
... ...

#List all pods

List pods
root@onap-oom-rancher:~# kubectl -n onap get pods -o wide
NAME                                                    READY     STATUS              RESTARTS   AGE       IP              NODE
dep-config-binding-service-6f68756fb8-h572p             2/2       Running             0          7h   onap-oom-k8s-5
dev-aaf-cm-5455cfd7c8-lzkpm                             0/1       Init:1/2            0          9h   onap-oom-k8s-3
dev-aaf-cs-7586975b98-fvgrf                             0/1       ContainerCreating   0          9h        <none>          onap-oom-k8s-1

#Check container log. First find containers in the pod

root@onap-oom-rancher:~# kubectl -n onap get pods dev-aai-cassandra-0 -o jsonpath={.spec.containers[*].name}
root@onap-oom-rancher:~# kubectl -n onap logs dev-aai-cassandra-0 aai-cassandra

#Restart a pod by deleting it and let Helm to restart one automatically

Restart pod by deleting it
root@onap-oom-rancher:~/oom/kubernetes/onap/charts# kubectl -n onap delete pod dev-portal-portal-cassandra-7b4dbd599b-vhl54

#Delete a pod with force

Delete a pod with force
root@oom-rancher:~# kubectl -n onap delete --grace-period=0 --force pod dev-so-so-monitoring-c8cc74547-znnwx

#Enter pod shell

root@onap-oom-rancher:~# kubectl -n onap exec -it dev-aai-cassandra-0 /bin/bash

#Access ONAP portal. Get portal-app service private ip first, then go to Openstack Horizon to find public ip and update /etc/hosts with the public ip - see Mandeep Khinda

Portal Access
# Get portal-app service private ip 
root@oom-rancher:~# kubectl -n onap get services |grep "portal-app"
portal-app  LoadBalancer   8989:30215/TCP,8006:30213/TCP,8010:30214/TCP 16h
# Get public ip associated with the above private ip from Openstack
xuyang11@pod-onap-01-vjhost:~/Integration-SB-05$ source 
xuyang11@pod-onap-01-vjhost:~/Integration-SB-05$ openstack server list  |grep
| b3ecfaac-4654-4b9f-ae33-41b296356384 | oom-k8s_1   | ACTIVE | oam_network_miiM=, | ubuntu-16-04-cloud-amd64 |
# Update your local /etc/hosts
Yangs-MacBook-Air:Downloads yang$ cat /etc/hosts
# Use browser to access ONAP portal url

#Copy files to and from a pod

root@oom-rancher:~/oom/kubernetes/robot# kubectl -n onap cp values.yaml dev-robot-598bcc6695-4fsh7: 
root@oom-rancher:~/oom/kubernetes/robot# kubectl -n onap cp dev-robot-598bcc6695-4fsh7:values.yaml /tmp/values.yaml

#Execute a command remotely

root@oom-rancher:~/oom/kubernetes/robot# kubectl -n onap exec dev-robot-598bcc6695-4fsh7 -- ls -l
total 76
drwxr-xr-x   2 root root 4096 May 31 21:15 bin
drwxr-xr-x   2 root root 4096 Apr 24 08:34 boot

#ONAP Healthcheck from Rancher VM

root@oom-rancher:~# cd oom/kubernetes/robot/
root@oom-rancher:~/oom/kubernetes/robot# ./ onap health

#Get the pod configMap

root@oom-rancher:~# kubectl -n onap get configMap dev-so-so-sdc-controller-app-configmap -o yaml
apiVersion: v1
override.yaml: |
# Copyright © 2018 AT&T USA
# 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
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# See the License for the specific language governing permissions and
# limitations under the License.
auth: 2630606608347B7124C244AB0FE34F6F
port: 8085
username: asdc
password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
role: Asdc-Client
username: mso_admin
password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
msoKey: 07a7159d3bf51a0e53be7a8f89699be7
logPath: ./logs/sdc
endpoint: http://so-catalog-db-adapter.onap:8082
auth: Basic YnBlbDpwYXNzd29yZDEk
site-name: onapheat
endpoint: https://aai.onap:8443
user: mso
consumerGroup: sdc-OpenSource-Env1
consumerId: sdc-COpenSource-Env11
environmentName: AUTO
asdcAddress: sdc-be.onap:8443
password: 613AF3483E695524F9857643B697FA51C7A9A0951094F53791485BF3458F9EADA37DBACCCEBD0CB242B85B4062745247
pollingInterval: 60
pollingTimeout: 60
relevantArtifactTypes: HEAT,HEAT_ENV,HEAT_VOL
activateServerTLSAuth: false
watchDogTimeout: 300
isFitlerInEmptyResources: true
... ...

#Edit ConfigMap - e.g. chaning user name or password. Then you need to delete the pod and let k8s restart the pod to take the new values

root@oom-rancher:~# kubectl -n onap edit configmap dev-so-so-bpmn-infra-app-configmap

## Edit something in the config
## Delete Pod and let kubernetes respawn with new config
root@oom-rancher:~# kubectl -n onap delete pod dev-so-so-bpmn-infra-5887f8c6c8-jkk7c

#Add a NodePort for debug/dev purposes

## Replace service name below
root@oom-rancher:~# kubectl patch svc -n onap so-openstack-adapter --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

## get nodeport assigned by kubernetes
root@oom-rancher:~# kubectl -n onap get service | grep so-openstack-adapter

so-openstack-adapter       NodePort     <none>                                 8087:32715/TCP

#Generate encrypted openstack password

>echo -n <tenant_password>| openssl aes-128-ecb -e -K aa3871669d893c7fb8abbcda31b88b4f -nosalt | xxd -c 256 -p