dcaegen2 bootstrap container in K8s
launching the dcaegen2 bootstrap container in OOM K8s.
-based on dcaegen2/deployments/bootstrap/README-docker.md
-requires an openstack private key pair file locally
-requires mining and updating a yaml configuration file
as per the comments in the sample file given.
-unfortunately, my attempts to bundle the secret and configmap
in the helm package didn't work out as they are external files
so I create them using the createAll.bash script.
Issue-ID: OOM-107
Change-Id: I221f60af66ea0f7e97ddd8b92819dce9aa6b5a81
Signed-off-by: Mandeep Khinda <mandeep.khinda@amdocs.com>
diff --git a/kubernetes/dcaegen2/.helmignore b/kubernetes/dcaegen2/.helmignore
new file mode 100644
index 0000000..a7adb75
--- /dev/null
+++ b/kubernetes/dcaegen2/.helmignore
@@ -0,0 +1,22 @@
+# 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
+dcae-parameters-sample.yaml
\ No newline at end of file
diff --git a/kubernetes/dcaegen2/Chart.yaml b/kubernetes/dcaegen2/Chart.yaml
new file mode 100644
index 0000000..4ab4f85
--- /dev/null
+++ b/kubernetes/dcaegen2/Chart.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: DCAE Generation 2 bootstrap container
+name: dcaegen2
+version: 1.1.0
diff --git a/kubernetes/dcaegen2/dcae-parameters-sample.yaml b/kubernetes/dcaegen2/dcae-parameters-sample.yaml
new file mode 100644
index 0000000..b2cffae
--- /dev/null
+++ b/kubernetes/dcaegen2/dcae-parameters-sample.yaml
@@ -0,0 +1,41 @@
+# UUID of the OpenStack"s CentOS 7 cloud VM image
+# If your Openstack does not have a CentOS 7 cloud image, you will have to add one.
+centos7image_id: "52d4ea09-cc69-4a9a-9961-938a3282d209"
+# UUID of the OpenStack"s Ubuntu 16.04 VM image
+# If your Openstack does not have a buntu 16.04 cloud image, you will have to add one.
+ubuntu1604image_id: "97bbe637-5d42-419a-a2c7-beff33ffa23c"
+# ID of the OpenStack"s VM flavor to be used by DCAEGEN2 VMs (m1.medium/m1.large)
+flavor_id: "4"
+# UUID of the OpenStack"s security group to be used for DCAEGEN2 VMs
+security_group: "abc0687d-34ab-4d37-8fe8-4b544d94ba71"
+# The name of the OpenStack network where public IP addresses and floating IPs are allocated from
+# This must use the name and not the UUID. The name must be unique otherwise the installer fails
+public_net: "public"
+# The name of the OpenStack network where private IP addresses are allocated from
+private_net: "onap_oam"
+# Group header for OpenStack Keystone parameters
+openstack:
+ # User name
+ username: "dev"
+ # Password
+ password: "dev"
+ # Name of the OpenStack tenant/project where DCAEGEN2 VMs are deployed
+ tenant_name: "dev"
+ # Openstack authentication API URL, for example "https://horizon.playground.onap.org:5000/v2.0"
+ auth_url: "http://1.2.3.4:5000/v2.0"
+ # Name of the OpenStack region where DCAEGEN2 VMs are deployed, for example "RegionOne"
+ region: "RegionOne"
+# Name of the public key uploaded to OpenStack in the Prepration step
+keypair: "dcae-g2"
+# Path to the private key within the conatiner (!! Do not change!!)
+key_filename: "/opt/dcae/key"
+# Prefix (location code) of all DCAEGEN2 VMs
+location_prefix: "onapr1"
+# Domain name of the OpenStack tenant "onapr1.playground.onap.org"
+location_domain: "onap-dcaegen2"
+# Location of the raw artifact repo hosting additional boot scripts called by DCAEGEN2 VMs" cloud-init, for example: "https://nexus.onap.org/service/local/repositories/raw/content"
+codesource_url: "https://nexus.onap.org/content/sites/raw"
+# Path to the boot scripts within the raw artifact repo, for example: "org.onap.dcaegen2.deployments.scripts/releases/"
+codesource_version: "org.onap.dcaegen2.deployments/releases/scripts/"
+
+
diff --git a/kubernetes/dcaegen2/templates/pod.yaml b/kubernetes/dcaegen2/templates/pod.yaml
new file mode 100644
index 0000000..e275ff6
--- /dev/null
+++ b/kubernetes/dcaegen2/templates/pod.yaml
@@ -0,0 +1,28 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: {{ .Chart.Name }}
+ namespace: "{{ .Values.nsPrefix }}-dcaegen2"
+spec:
+ containers:
+ - name: {{ .Chart.Name }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ volumeMounts:
+ - name: installer-config-mount
+ mountPath: /opt/app/installer/config
+ readOnly: true
+ env:
+ - name: LOCATION
+ value: "{{ .Values.location }}"
+ volumes:
+ - name: installer-config-mount
+ projected:
+ sources:
+ - secret:
+ name: "{{ .Chart.Name }}-openstack-ssh-private-key"
+ - configMap:
+ name: "{{ .Chart.Name }}-config-inputs"
+ imagePullSecrets:
+ - name: "{{ .Values.nsPrefix }}-docker-registry-key"
+ restartPolicy: Never
\ No newline at end of file
diff --git a/kubernetes/dcaegen2/values.yaml b/kubernetes/dcaegen2/values.yaml
new file mode 100644
index 0000000..5d446c8
--- /dev/null
+++ b/kubernetes/dcaegen2/values.yaml
@@ -0,0 +1,6 @@
+nsPrefix: onap
+location: dg2
+image:
+ repository: nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.bootstrap
+ tag: 1.1-latest
+ pullPolicy: Always
\ No newline at end of file
diff --git a/kubernetes/oneclick/createAll.bash b/kubernetes/oneclick/createAll.bash
index afe71af..c8810aa 100755
--- a/kubernetes/oneclick/createAll.bash
+++ b/kubernetes/oneclick/createAll.bash
@@ -39,11 +39,46 @@
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
diff --git a/kubernetes/oneclick/setenv.bash b/kubernetes/oneclick/setenv.bash
index a1aba3d..6dfd948 100644
--- a/kubernetes/oneclick/setenv.bash
+++ b/kubernetes/oneclick/setenv.bash
@@ -1,8 +1,15 @@
#!/bin/bash
# Deploying MSB first and kube2msb last will ensure all the ONAP services can be registered to MSB
-HELM_APPS=('consul' 'msb' 'mso' 'message-router' 'sdnc' 'vid' 'robot' 'portal' 'policy' 'appc' 'aai' 'sdc' 'dcae' 'log' 'cli' 'multicloud' 'clamp' 'kube2msb')
+HELM_APPS=('consul' 'msb' 'mso' 'message-router' 'sdnc' 'vid' 'robot' 'portal' 'policy' 'appc' 'aai' 'sdc' 'dcaegen2' 'log' 'cli' 'multicloud' 'clamp' 'kube2msb')
ONAP_DOCKER_REGISTRY=${ONAP_DOCKER_REGISTRY:-nexus3.onap.org:10001}
ONAP_DOCKER_USER=${ONAP_DOCKER_USER:-docker}
ONAP_DOCKER_PASS=${ONAP_DOCKER_PASS:-docker}
ONAP_DOCKER_MAIL=${ONAP_DOCKER_MAIL:-$USERNAME@$USERDOMAIN}
+# Openstack key pair private key file location required to enable dcaegen2 installer CRUD operations in your Openstack
+# Ensure you set the name of your keypair in the dcae-parameters.yaml entry "keypair: "dcae-g2"
+# example: export OPENSTACK_PRIVATE_KEY_PATH=/home/user/Downloads/dcae-g2.pem
+OPENSTACK_PRIVATE_KEY_PATH=${OPENSTACK_PRIVATE_KEY_PATH:-~/.ssh/onap_rsa}
+# dcaegen2 bootstrap configuration input yaml file. Start from the sample, and set your environments real values:
+# example: export DCAEGEN2_CONFIG_INPUT_FILE_PATH=/tmp/dcae-parameters.yaml
+DCAEGEN2_CONFIG_INPUT_FILE_PATH=${DCAEGEN2_CONFIG_INPUT_FILE_PATH:-../dcaegen2/dcae-parameters-sample.yaml}
\ No newline at end of file