diff options
20 files changed, 347 insertions, 664 deletions
@@ -28,9 +28,7 @@ meetings: repeats: 'weekly' time: '14:00 UTC' repositories: - - 'oom' - - 'oom-offline-installer' - - 'oom-registrator' + - 'oom/offline-installer' committers: - <<: *onap_releng_ptl - name: 'Michal Ptacek' @@ -51,7 +49,7 @@ committers: - name: 'Tomas Levora' email: 't.levora@partner.samsung.com' company: 'Samsung' - id: 't.levora' + id: 'tomas.levora' timezone: 'Europe/Prague' - name: 'Milan Verespej' email: 'm.verespej@partner.samsung.com' @@ -70,3 +68,7 @@ committers: timezone: 'Europe/Warsaw' tsc: approval: 'https://lists.onap.org/pipermail/onap-tsc' + changes: + - type: 'Addition' + name: 'Bartlomiej Grzybowski' + link: 'https://lists.onap.org/g/onap-tsc/topic/32429690' diff --git a/ansible/group_vars/infrastructure.yml b/ansible/group_vars/infrastructure.yml index fc0699c5..dd073735 100755 --- a/ansible/group_vars/infrastructure.yml +++ b/ansible/group_vars/infrastructure.yml @@ -1,16 +1,8 @@ --- vnc_passwd: samsung simulated_hosts: - git: - - gerrit.onap.org http: - - git.onap.org - - nexus.onap.org - repo.infra-server - - www.getcloudify.org - - www.springframework.org - - repo.maven.apache.org - - repo1.maven.org nexus: - docker.elastic.co - docker.io @@ -23,12 +15,11 @@ simulated_hosts: - quay.io - registry-1.docker.io - registry.hub.docker.com - - registry.npmjs.org all_simulated_hosts: - "{{ simulated_hosts.git + simulated_hosts.http + simulated_hosts.nexus }}" + "{{ simulated_hosts.http + simulated_hosts.nexus }}" populate_nexus: false helm_bin_dir: /usr/local/bin -helm_version: v2.12.3 +helm_version: v2.14.2 rancher_server_image: rancher/server:v1.6.22 vnc_server_image: consol/ubuntu-icewm-vnc:1.4.0 nexus3_image: sonatype/nexus3:3.15.2 diff --git a/ansible/roles/nginx/templates/nginx.conf.j2 b/ansible/roles/nginx/templates/nginx.conf.j2 index 9860a168..be1170f0 100644 --- a/ansible/roles/nginx/templates/nginx.conf.j2 +++ b/ansible/roles/nginx/templates/nginx.conf.j2 @@ -59,43 +59,4 @@ http { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } - -# git simulations - server { - listen 80; - listen 443 ssl; - server_name {% for host in simulated_hosts.git -%} - {{ host + " " }} - {%- endfor %}; - ssl_certificate /etc/nginx/certs/nexus_server.crt; - ssl_certificate_key /etc/nginx/certs/nexus_server.key; - - keepalive_timeout 5 5; - proxy_buffering off; - - location / { - try_files $uri $uri/ @git; - } - - location @git { - - # Set chunks to unlimited, as the body's can be huge - client_max_body_size 0; - - fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend; - fastcgi_param QUERY_STRING $args; - fastcgi_param HTTP_HOST $server_name; - fastcgi_param PATH_INFO $uri; - - include fastcgi_params; - - fastcgi_param GIT_HTTP_EXPORT_ALL ""; - fastcgi_param GIT_PROJECT_ROOT /srv/git/$host/; - - # Forward REMOTE_USER as we want to know when we are authenticated - fastcgi_param REMOTE_USER $remote_user; - - fastcgi_pass unix:/var/run/fcgiwrap.socket; - } - } } diff --git a/ansible/roles/rke/defaults/main.yml b/ansible/roles/rke/defaults/main.yml index d9c044b6..71c0c622 100644 --- a/ansible/roles/rke/defaults/main.yml +++ b/ansible/roles/rke/defaults/main.yml @@ -6,6 +6,7 @@ kube_config_dir: "{{ ansible_env.HOME }}/.kube" cluster_config_dir: "{{ app_data_path }}/cluster" # Whether dashboard is exposed. rke_dashboard_exposed: true +rke_dns: {} rke_etcd: # By default rke creates bind mount: # /var/lib/etcd -> /var/lib/rancher/etcd @@ -48,30 +49,30 @@ rke_etcd: rke: # rke (rancher) images - etcd: rancher/coreos-etcd:v3.2.24-rancher1 - alpine: rancher/rke-tools:v0.1.27 - nginx_proxy: rancher/rke-tools:v0.1.27 - cert_downloader: rancher/rke-tools:v0.1.27 - kubernetes_services_sidecar: rancher/rke-tools:v0.1.27 - kubedns: rancher/k8s-dns-kube-dns:1.15.0 - dnsmasq: rancher/k8s-dns-dnsmasq-nanny:1.15.0 - kubedns_sidecar: rancher/k8s-dns-sidecar:1.15.0 - kubedns_autoscaler: rancher/cluster-proportional-autoscaler:1.0.0 - coredns: coredns/coredns:1.2.6 - coredns_autoscaler: rancher/cluster-proportional-autoscaler:1.0.0 - kubernetes: rancher/hyperkube:v1.13.5-rancher1 - flannel: rancher/coreos-flannel:v0.10.0-rancher1 - flannel_cni: rancher/flannel-cni:v0.3.0-rancher1 - calico_node: rancher/calico-node:v3.4.0 - calico_cni: rancher/calico-cni:v3.4.0 - calico_controllers: "" - calico_ctl: rancher/calico-ctl:v2.0.0 - canal_node: rancher/calico-node:v3.4.0 - canal_cni: rancher/calico-cni:v3.4.0 - canal_flannel: rancher/coreos-flannel:v0.10.0 - weave_node: weaveworks/weave-kube:2.5.0 - weave_cni: weaveworks/weave-npc:2.5.0 - pod_infra_container: rancher/pause:3.1 - ingress: rancher/nginx-ingress-controller:0.21.0-rancher3 - ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.4-rancher1 - metrics_server: rancher/metrics-server:v0.3.1 + etcd: "rancher/coreos-etcd:v3.3.10-rancher1" + alpine: "rancher/rke-tools:v0.1.50" + nginx_proxy: "rancher/rke-tools:v0.1.50" + cert_downloader: "rancher/rke-tools:v0.1.50" + kubernetes_services_sidecar: "rancher/rke-tools:v0.1.50" + kubedns: "rancher/k8s-dns-kube-dns:1.15.0" + dnsmasq: "rancher/k8s-dns-dnsmasq-nanny:1.15.0" + kubedns_sidecar: "rancher/k8s-dns-sidecar:1.15.0" + kubedns_autoscaler: "rancher/cluster-proportional-autoscaler:1.3.0" + coredns: "rancher/coredns-coredns:1.3.1" + coredns_autoscaler: "rancher/cluster-proportional-autoscaler:1.3.0" + kubernetes: "rancher/hyperkube:v1.15.4-rancher1" + flannel: "rancher/coreos-flannel:v0.11.0-rancher1" + flannel_cni: "rancher/flannel-cni:v0.3.0-rancher5" + calico_node: "rancher/calico-node:v3.7.4" + calico_cni: "rancher/calico-cni:v3.7.4" + calico_controllers: "rancher/calico-kube-controllers:v3.7.4" + calico_ctl: "rancher/calico-ctl:v2.0.0" + canal_node: "rancher/calico-node:v3.7.4" + canal_cni: "rancher/calico-cni:v3.7.4" + canal_flannel: "rancher/coreos-flannel:v0.11.0" + weave_node: "weaveworks/weave-kube:2.5.2" + weave_cni: "weaveworks/weave-npc:2.5.2" + pod_infra_container: "rancher/pause:3.1" + ingress: "rancher/nginx-ingress-controller:nginx-0.25.1-rancher1" + ingress_backend: "rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1" + metrics_server: "rancher/metrics-server:v0.3.3" diff --git a/ansible/roles/rke/molecule/default/playbook.yml b/ansible/roles/rke/molecule/default/playbook.yml index fab7a0d0..33345ed9 100644 --- a/ansible/roles/rke/molecule/default/playbook.yml +++ b/ansible/roles/rke/molecule/default/playbook.yml @@ -11,6 +11,10 @@ roles: - role: rke vars: + rke_dns: + provider: coredns + upstreamnameservers: + - 8.8.8.8 mode: config - name: Prepare kubernetes hosts (RKE) diff --git a/ansible/roles/rke/templates/cluster.yml.j2 b/ansible/roles/rke/templates/cluster.yml.j2 index 51f4e28b..656c1136 100644 --- a/ansible/roles/rke/templates/cluster.yml.j2 +++ b/ansible/roles/rke/templates/cluster.yml.j2 @@ -151,4 +151,4 @@ monitoring: restore: restore: false snapshot_name: "" -dns: null +dns: {{ rke_dns }} diff --git a/ansible/roles/rke/templates/k8s-dashboard-user.yml.j2 b/ansible/roles/rke/templates/k8s-dashboard-user.yml.j2 index 9031553c..5d7a55a7 100644 --- a/ansible/roles/rke/templates/k8s-dashboard-user.yml.j2 +++ b/ansible/roles/rke/templates/k8s-dashboard-user.yml.j2 @@ -3,9 +3,9 @@ apiVersion: v1 kind: ServiceAccount metadata: name: admin-user - namespace: kube-system + namespace: kubernetes-dashboard --- -apiVersion: rbac.authorization.k8s.io/v1beta1 +apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user @@ -16,4 +16,4 @@ roleRef: subjects: - kind: ServiceAccount name: admin-user - namespace: kube-system
\ No newline at end of file + namespace: kubernetes-dashboard diff --git a/ansible/roles/rke/templates/kubernetes-dashboard.yaml.j2 b/ansible/roles/rke/templates/kubernetes-dashboard.yaml.j2 index 4458628a..7dd9692c 100644 --- a/ansible/roles/rke/templates/kubernetes-dashboard.yaml.j2 +++ b/ansible/roles/rke/templates/kubernetes-dashboard.yaml.j2 @@ -12,7 +12,41 @@ # See the License for the specific language governing permissions and # limitations under the License. -# ------------------- Dashboard Secrets ------------------- # +apiVersion: v1 +kind: Namespace +metadata: + name: kubernetes-dashboard + +--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard + +--- + +kind: Service +apiVersion: v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard +spec: + ports: + - port: 443 + targetPort: 8443 + selector: + k8s-app: kubernetes-dashboard +{% if rke_dashboard_exposed %} + type: NodePort +{% endif %} + +--- apiVersion: v1 kind: Secret @@ -20,7 +54,7 @@ metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard-certs - namespace: kube-system + namespace: kubernetes-dashboard type: Opaque --- @@ -31,76 +65,114 @@ metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard-csrf - namespace: kube-system + namespace: kubernetes-dashboard type: Opaque data: csrf: "" --- -# ------------------- Dashboard Service Account ------------------- # apiVersion: v1 -kind: ServiceAccount +kind: Secret metadata: labels: k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kube-system + name: kubernetes-dashboard-key-holder + namespace: kubernetes-dashboard +type: Opaque + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard-settings + namespace: kubernetes-dashboard --- -# ------------------- Dashboard Role & Role Binding ------------------- # kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: - name: kubernetes-dashboard-minimal - namespace: kube-system + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard rules: - # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret. -- apiGroups: [""] - resources: ["secrets"] - verbs: ["create"] - # Allow Dashboard to create 'kubernetes-dashboard-settings' config map. -- apiGroups: [""] - resources: ["configmaps"] - verbs: ["create"] # Allow Dashboard to get, update and delete Dashboard exclusive secrets. -- apiGroups: [""] - resources: ["secrets"] - resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"] - verbs: ["get", "update", "delete"] - # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map. -- apiGroups: [""] - resources: ["configmaps"] - resourceNames: ["kubernetes-dashboard-settings"] - verbs: ["get", "update"] - # Allow Dashboard to get metrics from heapster. -- apiGroups: [""] - resources: ["services"] - resourceNames: ["heapster"] - verbs: ["proxy"] -- apiGroups: [""] - resources: ["services/proxy"] - resourceNames: ["heapster", "http:heapster:", "https:heapster:"] - verbs: ["get"] + - apiGroups: [""] + resources: ["secrets"] + resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"] + verbs: ["get", "update", "delete"] + # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map. + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: ["kubernetes-dashboard-settings"] + verbs: ["get", "update"] + # Allow Dashboard to get metrics. + - apiGroups: [""] + resources: ["services"] + resourceNames: ["heapster", "dashboard-metrics-scraper"] + verbs: ["proxy"] + - apiGroups: [""] + resources: ["services/proxy"] + resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"] + verbs: ["get"] + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard +rules: + # Allow Metrics Scraper to get metrics from the Metrics server + - apiGroups: ["metrics.k8s.io"] + resources: ["pods", "nodes","namespaces","secrets","persistentvolumeclaims"] + verbs: ["get", "list", "watch"] + - apiGroups: ["","apps"] + resources: ["pods", "nodes","namespaces","secrets","persistentvolumeclaims","replicasets","deployments","events"] + verbs: ["get", "list", "watch"] --- + apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: kubernetes-dashboard-minimal - namespace: kube-system + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: Role - name: kubernetes-dashboard-minimal + name: kubernetes-dashboard subjects: -- kind: ServiceAccount + - kind: ServiceAccount + name: kubernetes-dashboard + namespace: kubernetes-dashboard + +--- + +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kubernetes-dashboard + namespace: kubernetes-dashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole name: kubernetes-dashboard - namespace: kube-system +subjects: + - kind: ServiceAccount + name: kubernetes-dashboard + namespace: kubernetes-dashboard --- -# ------------------- Dashboard Deployment ------------------- # kind: Deployment apiVersion: apps/v1 @@ -108,7 +180,7 @@ metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard - namespace: kube-system + namespace: kubernetes-dashboard spec: replicas: 1 revisionHistoryLimit: 10 @@ -121,58 +193,101 @@ spec: k8s-app: kubernetes-dashboard spec: containers: - - name: kubernetes-dashboard - image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 - ports: - - containerPort: 8443 - protocol: TCP - args: - - --auto-generate-certificates - # Uncomment the following line to manually specify Kubernetes API server Host - # If not specified, Dashboard will attempt to auto discover the API server and connect - # to it. Uncomment only if the default does not work. - # - --apiserver-host=http://my-address:port - volumeMounts: - - name: kubernetes-dashboard-certs - mountPath: /certs - # Create on-disk volume to store exec logs - - mountPath: /tmp - name: tmp-volume - livenessProbe: - httpGet: - scheme: HTTPS - path: / - port: 8443 - initialDelaySeconds: 30 - timeoutSeconds: 30 + - name: kubernetes-dashboard + image: kubernetesui/dashboard:v2.0.0-beta4 + imagePullPolicy: Always + ports: + - containerPort: 8443 + protocol: TCP + args: + - --auto-generate-certificates + - --namespace=kubernetes-dashboard + # Uncomment the following line to manually specify Kubernetes API server Host + # If not specified, Dashboard will attempt to auto discover the API server and connect + # to it. Uncomment only if the default does not work. + # - --apiserver-host=http://my-address:port + volumeMounts: + - name: kubernetes-dashboard-certs + mountPath: /certs + # Create on-disk volume to store exec logs + - mountPath: /tmp + name: tmp-volume + livenessProbe: + httpGet: + scheme: HTTPS + path: / + port: 8443 + initialDelaySeconds: 30 + timeoutSeconds: 30 volumes: - - name: kubernetes-dashboard-certs - secret: - secretName: kubernetes-dashboard-certs - - name: tmp-volume - emptyDir: {} + - name: kubernetes-dashboard-certs + secret: + secretName: kubernetes-dashboard-certs + - name: tmp-volume + emptyDir: {} serviceAccountName: kubernetes-dashboard # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - - key: node-role.kubernetes.io/master - effect: NoSchedule + - key: node-role.kubernetes.io/master + effect: NoSchedule --- -# ------------------- Dashboard Service ------------------- # kind: Service apiVersion: v1 metadata: labels: - k8s-app: kubernetes-dashboard - name: kubernetes-dashboard - namespace: kube-system + k8s-app: dashboard-metrics-scraper + name: dashboard-metrics-scraper + namespace: kubernetes-dashboard spec: ports: - - port: 443 - targetPort: 8443 + - port: 8000 + targetPort: 8000 selector: - k8s-app: kubernetes-dashboard -{% if rke_dashboard_exposed %} - type: NodePort -{% endif %} + k8s-app: dashboard-metrics-scraper + +--- + +kind: Deployment +apiVersion: apps/v1 +metadata: + labels: + k8s-app: dashboard-metrics-scraper + name: dashboard-metrics-scraper + namespace: kubernetes-dashboard +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + k8s-app: dashboard-metrics-scraper + template: + metadata: + labels: + k8s-app: dashboard-metrics-scraper + spec: + containers: + - name: dashboard-metrics-scraper + image: kubernetesui/metrics-scraper:v1.0.1 + ports: + - containerPort: 8000 + protocol: TCP + livenessProbe: + httpGet: + scheme: HTTP + path: / + port: 8000 + initialDelaySeconds: 30 + timeoutSeconds: 30 + volumeMounts: + - mountPath: /tmp + name: tmp-volume + serviceAccountName: kubernetes-dashboard + # Comment the following tolerations if Dashboard must not be deployed on master + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + volumes: + - name: tmp-volume + emptyDir: {} diff --git a/ansible/test/roles/prepare-kubectl/defaults/main.yml b/ansible/test/roles/prepare-kubectl/defaults/main.yml index d4e8ef94..aeb09198 100644 --- a/ansible/test/roles/prepare-kubectl/defaults/main.yml +++ b/ansible/test/roles/prepare-kubectl/defaults/main.yml @@ -4,4 +4,4 @@ # cases where it is used by verification tests of other roles). kubectl_install: false # Kubectl version. -kubectl_version: 1.13.5 +kubectl_version: 1.15.4 diff --git a/ansible/test/roles/prepare-rke/defaults/main.yml b/ansible/test/roles/prepare-rke/defaults/main.yml index 2cf85635..28ec779b 100644 --- a/ansible/test/roles/prepare-rke/defaults/main.yml +++ b/ansible/test/roles/prepare-rke/defaults/main.yml @@ -1,5 +1,5 @@ --- #The rke version. -rke_version: 0.2.0 +rke_version: 0.3.0 #The kubectl version. -kubectl_version: 1.13.5 +kubectl_version: 1.15.4 diff --git a/build/build_nexus_blob.sh b/build/build_nexus_blob.sh index f964bf9d..72dda540 100755 --- a/build/build_nexus_blob.sh +++ b/build/build_nexus_blob.sh @@ -54,12 +54,14 @@ LOCAL_PATH="$(readlink -f $(dirname ${0}))" # Defaults DOCKER_LOAD="false" +NPM_PUSH="false" +PYPI_PUSH="false" DATA_DIR="$(realpath ${LOCAL_PATH}/../../resources)" NEXUS_DATA_DIR="${DATA_DIR}/nexus_data" LISTS_DIR="${LOCAL_PATH}/data_lists" # Required dependencies -COMMANDS=(jq docker expect npm twine) +COMMANDS=(jq docker) usage () { echo " @@ -129,6 +131,37 @@ load_docker_images () { done } +prepare_npm () { + # Configure NPM registry to our Nexus repository + echo "Configure NPM registry to ${NPM_REGISTRY}" + npm config set registry "${NPM_REGISTRY}" + + # Login to NPM registry + /usr/bin/expect <<- EOF + spawn npm login + expect "Username:" + send "${NEXUS_USERNAME}\n" + expect "Password:" + send "${NEXUS_PASSWORD}\n" + expect Email: + send "${NEXUS_EMAIL}\n" + expect eof + EOF +} + +patch_npm () { + # Patch problematic package + PATCHED_NPM="$(grep tsscmp ${1} | sed $'s/\r// ; s/\\@/\-/ ; s/$/\.tgz/')" + if [[ ! -z "${PATCHED_NPM}" ]] && ! zgrep -aq "${NPM_REGISTRY}" "${PATCHED_NPM}" 2>/dev/null + then + tar xzf "${PATCHED_NPM}" + rm -f "${PATCHED_NPM}" + sed -i 's|\"registry\":\ \".*\"|\"registry\":\ \"'"${NPM_REGISTRY}"'\"|g' package/package.json + tar -zcf "${PATCHED_NPM}" package + rm -rf package + fi +} + push_npm () { for ARCHIVE in $(sed $'s/\r// ; s/\\@/\-/g ; s/$/\.tgz/g' ${1}); do npm publish --access public ${ARCHIVE} > /dev/null @@ -137,8 +170,8 @@ push_npm () { } push_pip () { - for PACKAGE in $(sed $'s/\r//; s/==/-/' ${NXS_PYPI_LIST}); do - twine upload -u "${NEXUS_USERNAME}" -p "${NEXUS_PASSWORD}" --repository-url ${PYPI_REGISTRY} ${PACKAGE}* + for PACKAGE in $(sed $'s/\r//; s/==/-/' ${1}); do + twine upload -u "${NEXUS_USERNAME}" -p "${NEXUS_PASSWORD}" --repository-url ${PYPI_REGISTRY} ${PACKAGE}* > /dev/null echo "PYPI ${PACKAGE} pushed to Nexus" done } @@ -176,19 +209,6 @@ push_docker () { done } -# Verify all dependencies are available in PATH -FAILED_COMMANDS=() -for cmd in ${COMMANDS[*]}; do - command -v $cmd >/dev/null 2>&1 || FAILED_COMMANDS+=($cmd) -done - -if [ ${#FAILED_COMMANDS[*]} -gt 0 ]; then - echo "Following commands where not found in PATH and are required:" - echo ${FAILED_COMMANDS[*]} - echo "Aborting." - exit 1 -fi - while [ "${1}" != "" ]; do case ${1} in -d | --docker ) shift @@ -199,13 +219,17 @@ while [ "${1}" != "" ]; do ;; -ld | --load-docker-images ) DOCKER_LOAD="true" ;; - -n | --npm ) shift + -n | --npm ) NPM_PUSH="true" + COMMANDS+=(expect npm) + shift NXS_NPM_LISTS+=("${1}") ;; -o | --output-directory ) shift NEXUS_DATA_DIR="${1}" ;; - -p | --pypi ) shift + -p | --pypi ) PYPI_PUSH="true" + COMMANDS+=(twine) + shift NXS_PYPI_LISTS+=("${1}") ;; -rl | --resource-list-directory ) shift @@ -218,6 +242,19 @@ while [ "${1}" != "" ]; do shift done +# Verify all dependencies are available in PATH +FAILED_COMMANDS=() +for cmd in ${COMMANDS[*]}; do + command -v $cmd >/dev/null 2>&1 || FAILED_COMMANDS+=($cmd) +done + +if [ ${#FAILED_COMMANDS[*]} -gt 0 ]; then + echo "Following commands where not found in PATH and are required:" + echo ${FAILED_COMMANDS[*]} + echo "Aborting." + exit 1 +fi + # Setup directories with resources for docker, npm and pypi NXS_SRC_DOCKER_IMG_DIR="${DATA_DIR}/offline_data/docker_images_for_nexus" NXS_SRC_NPM_DIR="${DATA_DIR}/offline_data/npm_tar" @@ -227,18 +264,15 @@ NXS_SRC_PYPI_DIR="${DATA_DIR}/offline_data/pypi" NXS_INFRA_LIST="${LISTS_DIR}/infra_docker_images.list" NXS_DOCKER_IMG_LIST="${LISTS_DIR}/onap_docker_images.list" NXS_RKE_DOCKER_IMG_LIST="${LISTS_DIR}/rke_docker_images.list" -NXS_NPM_LIST="${LISTS_DIR}/onap_npm.list" -NXS_PYPI_LIST="${LISTS_DIR}/onap_pip_packages.list" +NXS_K8S_DOCKER_IMG_LIST="${LISTS_DIR}/k8s_docker_images.list" # Setup Nexus image used for build and install infra NEXUS_IMAGE="$(grep sonatype/nexus3 ${NXS_INFRA_LIST})" NEXUS_IMAGE_TAR="${DATA_DIR}/offline_data/docker_images_infra/$(sed 's/\//\_/ ; s/$/\.tar/ ; s/\:/\_/' <<< ${NEXUS_IMAGE})" # Set default lists if nothing specific defined by user -if [ $((${#NXS_DOCKER_IMG_LISTS[@]} + ${#NXS_NPM_LISTS[@]} + ${#NXS_PYPI_LISTS[@]})) -eq 0 ]; then - NXS_DOCKER_IMG_LISTS=("${NXS_DOCKER_IMG_LIST}" "${NXS_RKE_DOCKER_IMG_LIST}") - NXS_NPM_LISTS[0]="${NXS_NPM_LIST}" - NXS_PYPI_LISTS[0]="${NXS_PYPI_LIST}" +if [ ${#NXS_DOCKER_IMG_LISTS[@]} -eq 0 ]; then + NXS_DOCKER_IMG_LISTS=("${NXS_DOCKER_IMG_LIST}" "${NXS_RKE_DOCKER_IMG_LIST}" "${NXS_K8S_DOCKER_IMG_LIST}") fi # Backup /etc/hosts @@ -357,57 +391,36 @@ curl -sX POST --header "Content-Type: text/plain" http://${NEXUS_USERNAME}:${NEX ########################### # Populate NPM repository # ########################### - -# Configure NPM registry to our Nexus repository -echo "Configure NPM registry to ${NPM_REGISTRY}" -npm config set registry "${NPM_REGISTRY}" - -# Login to NPM registry -/usr/bin/expect <<EOF -spawn npm login -expect "Username:" -send "${NEXUS_USERNAME}\n" -expect "Password:" -send "${NEXUS_PASSWORD}\n" -expect Email: -send "${NEXUS_EMAIL}\n" -expect eof -EOF - -# Patch problematic package -pushd ${NXS_SRC_NPM_DIR} -PATCHED_NPM="$(grep tsscmp ${NXS_NPM_LIST} | sed $'s/\r// ; s/\\@/\-/ ; s/$/\.tgz/')" -if [[ ! -z "${PATCHED_NPM}" ]] && ! zgrep -aq "${NPM_REGISTRY}" "${PATCHED_NPM}" 2>/dev/null; then - tar xzf "${PATCHED_NPM}" - rm -f "${PATCHED_NPM}" - sed -i 's|\"registry\":\ \".*\"|\"registry\":\ \"'"${NPM_REGISTRY}"'\"|g' package/package.json - tar -zcf "${PATCHED_NPM}" package - rm -rf package +if [ $NPM_PUSH == "true" ]; then + prepare_npm + pushd ${NXS_SRC_NPM_DIR} + for NPM_LIST in "${NXS_NPM_LISTS[@]}"; do + patch_npm "${NPM_LIST}" + push_npm "${NPM_LIST}" + done + popd + # Return default settings + npm logout + npm config set registry "https://registry.npmjs.org" fi -# Push NPM packages to Nexus repository -for NPM_LIST in "${NXS_NPM_LISTS[@]}"; do - push_npm "${NPM_LIST}" -done -popd -npm logout - ############################### ## Populate PyPi repository # ############################### - -pushd ${NXS_SRC_PYPI_DIR} -for PYPI_LIST in "${NXS_PYPI_LISTS[@]}"; do - push_pip "${PYPI_LIST}" -done -popd +if [ $PYPI_PUSH == "true" ]; then + pushd ${NXS_SRC_PYPI_DIR} + for PYPI_LIST in "${NXS_PYPI_LISTS[@]}"; do + push_pip "${PYPI_LIST}" + done + popd +fi ############################### ## Populate Docker repository # ############################### # Login to simulated docker registries -# Push images to private nexus based on the list +# Push images to private nexus based on the lists # Images from default registry need to be tagged to private registry # and those without defined repository in tag uses default repository 'library' for DOCKER_IMG_LIST in "${NXS_DOCKER_IMG_LISTS[@]}"; do @@ -431,8 +444,5 @@ if [ -f ~/.docker/${DOCKER_CONF_BACKUP} ]; then mv -f ~/.docker/${DOCKER_CONF_BACKUP} ~/.docker/config.json fi -# Return default settings -npm config set registry "https://registry.npmjs.org" - echo "Nexus blob is built" -exit 0 +exit 0
\ No newline at end of file diff --git a/build/data_lists/infra_bin_utils.list b/build/data_lists/infra_bin_utils.list index 8de616e9..29051f0e 100644 --- a/build/data_lists/infra_bin_utils.list +++ b/build/data_lists/infra_bin_utils.list @@ -1,3 +1,3 @@ -https://storage.googleapis.com/kubernetes-release/release/v1.13.5/bin/linux/amd64/kubectl -https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz -https://github.com/rancher/rke/releases/download/v0.2.1/rke_linux-amd64 +https://storage.googleapis.com/kubernetes-release/release/v1.15.4/bin/linux/amd64/kubectl +https://storage.googleapis.com/kubernetes-helm/helm-v2.14.2-linux-amd64.tar.gz +https://github.com/rancher/rke/releases/download/v0.3.0/rke_linux-amd64 diff --git a/build/data_lists/k8s_docker_images.list b/build/data_lists/k8s_docker_images.list new file mode 100644 index 00000000..c08dee29 --- /dev/null +++ b/build/data_lists/k8s_docker_images.list @@ -0,0 +1,3 @@ +gcr.io/kubernetes-helm/tiller:v2.14.2 +kubernetesui/dashboard:v2.0.0-beta4 +kubernetesui/metrics-scraper:v1.0.1 diff --git a/build/data_lists/onap_git_repos.list b/build/data_lists/onap_git_repos.list deleted file mode 100644 index 518eecde..00000000 --- a/build/data_lists/onap_git_repos.list +++ /dev/null @@ -1,2 +0,0 @@ -#repo branch -gerrit.onap.org/r/so/docker-config.git master diff --git a/build/data_lists/onap_npm.list b/build/data_lists/onap_npm.list deleted file mode 100644 index 058307e3..00000000 --- a/build/data_lists/onap_npm.list +++ /dev/null @@ -1,303 +0,0 @@ -async@0.1.22 -compression@1.1.2 -debug@0.7.4 -errorhandler@1.2.4 -fresh@0.2.4 -grunt-legacy-util@0.2.0 -js-yaml@2.0.5 -mime-types@2.0.14 -pause@0.0.1 -smtp-connection@1.3.8 -thenify@3.3.0 -underscore.string@2.3.3 -any-promise@1.3.0 -etag@1.4.0 -hoek@0.9.1 -method-override@2.2.0 -needle@0.9.2 -oauth@0.9.12 -path-is-absolute@1.0.1 -sentiment@0.2.3 -twitter-ng@0.6.2 -cookie-parser@1.3.5 -glob@3.1.21 -media-typer@0.3.0 -multer@1.1.0 -concat-map@0.0.1 -entities@1.1.2 -irc@0.3.7 -libqp@0.1.1 -mysql@2.7.0 -once@1.4.0 -qs@0.6.6 -serve-favicon@2.1.7 -utils-merge@1.0.0 -cookie@0.1.2 -debug@2.6.9 -hooker@0.2.3 -json-stringify-safe@5.0.1 -reduce-component@1.0.1 -underscore@1.7.0 -escape-html@1.0.1 -forever-agent@0.5.2 -lodash@2.4.2 -nopt@1.0.10 -qs@1.2.2 -cookie@0.1.3 -form-data@0.1.4 -grunt-legacy-log-utils@0.1.1 -libbase64@0.1.0 -qs@2.2.3 -glob@7.1.3 -nopt@3.0.1 -qs@2.2.4 -scmp@1.0.0 -type-is@1.5.7 -abbrev@1.1.1 -etag@1.5.1 -iconv-lite@0.4.24 -readable-stream@1.0.27-1 -strip-json-comments@1.0.4 -utf7@1.0.0 -async@0.9.2 -fs-extra@0.11.1 -mime@1.2.11 -optimist@0.3.7 -sinon@1.10.3 -buffer-from@1.1.1 -destroy@1.0.3 -mime-db@1.37.0 -readable-stream@1.1.14 -superagent@0.18.0 -which@1.0.9 -batch@0.5.1 -colors@0.6.2 -cookie-signature@1.0.6 -should@4.0.4 -uglify-js@2.4.15 -base64-url@1.2.1 -clone@0.1.18 -hyperquest@1.3.0 -methods@1.1.0 -on-finished@2.1.0 -readable-stream@2.3.6 -bl@0.9.5 -connect@2.26.1 -depd@0.4.5 -express@3.17.2 -htmlparser2@3.7.3 -libmime@0.1.7 -morgan@1.3.2 -request@2.42.0 -sntp@0.2.4 -through@2.2.7 -coffee-script@1.3.3 -csrf@2.0.7 -exit@0.1.2 -minimatch@3.0.4 -nodemailer-direct-transport@1.1.0 -on-finished@2.3.0 -stream-counter@0.2.0 -type-is@1.6.16 -debug@2.0.0 -formatio@1.0.2 -grunt-contrib-jshint@0.10.0 -mime-db@1.12.0 -native-or-bluebird@1.1.2 -bignumber.js@2.0.7 -connect-timeout@1.3.0 -negotiator@0.4.9 -raw-body@1.3.0 -shelljs@0.3.0 -when@3.4.6 -cookie-signature@1.0.5 -diff@1.0.7 -iconv-lite@0.2.11 -lodash@1.3.1 -ctype@0.5.3 -esprima@1.0.4 -glob@3.2.3 -minimatch@0.3.0 -require-all@1.0.0 -cryptiles@0.2.2 -dom-serializer@0.0.1 -hawk@1.1.1 -nan@1.0.0 -ipaddr.js@0.1.2 -minimatch@1.0.0 -resolve@0.3.1 -send@0.9.2 -util-deprecate@1.0.2 -assert-plus@0.1.5 -dicer@0.2.5 -inherits@1.0.2 -thenify-all@1.6.0 -vary@1.0.1 -glob@3.2.11 -imap@0.8.13 -psl@1.1.31 -xmlbuilder@9.0.7 -bytes@1.0.0 -domhandler@2.3.0 -hyperquest@0.3.0 -ms@0.6.2 -tunnel-agent@0.4.3 -ws@0.4.32 -body-parser@1.8.4 -commander@1.3.2 -merge-descriptors@0.0.2 -underscore.string@2.2.1 -boom@0.4.2 -commander@2.0.0 -jade@0.26.3 -mkdirp@0.3.0 -source-map@0.1.34 -brace-expansion@1.1.11 -cookiejar@1.3.2 -domelementtype@1.1.3 -extend@1.2.1 -graceful-fs@2.0.3 -inflight@1.0.6 -ncp@0.6.0 -punycode@2.1.1 -send@0.9.3 -statuses@1.5.0 -tough-cookie@2.5.0 -wordwrap@0.0.3 -balanced-match@1.0.0 -combined-stream@0.0.7 -finalhandler@0.2.0 -mkdirp@0.3.5 -node-uuid@1.4.8 -options@0.0.6 -pretty-data@0.40.0 -string_decoder@1.1.1 -underscore.string@2.4.0 -fs.realpath@1.0.0 -grunt-simple-mocha@0.4.0 -mime-types@2.1.21 -busboy@0.2.14 -cors@2.4.2 -domhandler@2.2.1 -graceful-fs@4.1.15 -jshint@2.5.11 -minimatch@0.2.14 -nodemailer-smtp-transport@0.1.13 -samsam@1.1.3 -wrappy@1.0.2 -cron@1.0.4 -ee-first@1.1.1 -growl@1.8.1 -mocha@1.21.4 -response-time@2.0.1 -dateformat@1.0.2-1.2.3 -duplexer2@0.0.2 -eventemitter2@0.4.14 -multiparty@3.3.2 -sax@0.6.1 -compressible@2.0.15 -CSSwhat@0.4.7 -glob@5.0.15 -util@0.11.1 -concat-stream@1.6.2 -etag@1.3.1 -mustache@0.8.2 -rndm@1.1.1 -vhost@3.0.2 -async@0.2.10 -domelementtype@1.3.1 -isarray@1.0.0 -minimist@0.0.8 -on-headers@1.0.1 -uid-safe@1.0.1 -addressparser@0.3.2 -http-errors@1.2.8 -mkdirp@0.5.1 -caseless@0.6.0 -form-data@0.1.2 -inherits@2.0.3 -readable-stream@1.0.34 -tinycolor@0.0.1 -accepts@1.1.4 -cli@0.6.6 -typedarray@0.0.6 -argparse@0.1.16 -graceful-fs@1.2.3 -methods@1.0.0 -safe-buffer@5.1.2 -amdefine@1.0.1 -buildmail@1.3.0 -express-session@1.8.2 -jsonfile@2.4.0 -string_decoder@0.10.31 -commander@2.1.0 -csurf@1.6.6 -domutils@1.4.3 -formidable@1.0.14 -grunt-cli@0.1.13 -isarray@0.0.1 -object-assign@3.0.0 -range-parser@1.0.3 -sigmund@1.0.1 -uglify-to-browserify@1.0.2 -ansi-color@0.2.1 -basic-auth@1.0.0 -core-util-is@1.0.2 -entities@1.0.0 -follow-redirects@0.0.3 -ms@2.0.0 -parseurl@1.3.2 -rimraf@2.2.8 -domutils@1.5.1 -getobject@0.1.0 -htmlparser2@3.8.3 -libmime@1.2.0 -component-emitter@1.1.2 -duplexer@0.1.1 -keypress@0.1.0 -mqtt@0.3.13 -oauth-sign@0.4.0 -streamsearch@0.1.2 -CSSselect@0.4.1 -grunt-legacy-log@0.1.3 -rimraf@2.6.3 -nodemailer-wellknown@0.1.10 -console-browserify@1.1.0 -date-now@0.1.4 -grunt@0.4.5 -mime@1.2.5 -findup-sync@0.1.3 -lodash@3.7.0 -nodemailer@1.3.0 -process-nextick-args@2.0.0 -safer-buffer@2.1.2 -supertest@0.13.0 -xml2js@0.4.4 -ee-first@1.0.5 -http-signature@0.10.1 -lodash@0.9.2 -mkdirp@0.5.0 -stringstream@0.0.6 -underscore@1.6.0 -append-field@0.1.0 -iconv-lite@0.4.4 -basic-auth-connect@1.0.0 -commander@0.6.1 -methods@0.0.1 -mz@1.3.0 -serve-static@1.6.5 -uid-safe@1.1.0 -crc@3.0.0 -delayed-stream@0.0.5 -libqp@1.1.0 -underscore@1.9.1 -aws-sign2@0.5.0 -mime-types@1.0.2 -proxy-addr@1.0.1 -serve-index@1.2.1 -through2@0.6.5 -asn1@0.1.11 -cheerio@0.17.0 -crc@3.2.1 -lru-cache@2.7.3 -xtend@4.0.1
\ No newline at end of file diff --git a/build/data_lists/onap_pip_packages.list b/build/data_lists/onap_pip_packages.list deleted file mode 100644 index 7d9f826f..00000000 --- a/build/data_lists/onap_pip_packages.list +++ /dev/null @@ -1,11 +0,0 @@ -Click==7.0 -certifi==2019.9.11 -chardet==3.0.4 -Flask==1.1.1 -idna==2.8 -itsdangerous==1.1.0 -Jinja2==2.10.1 -MarkupSafe==1.1.1 -requests==2.22.0 -urllib3==1.25.6 -Werkzeug==0.16.0 diff --git a/build/data_lists/rke_docker_images.list b/build/data_lists/rke_docker_images.list index 75d35c72..91b58b1e 100644 --- a/build/data_lists/rke_docker_images.list +++ b/build/data_lists/rke_docker_images.list @@ -1,22 +1,21 @@ -coredns/coredns:1.2.6 -gcr.io/kubernetes-helm/tiller:v2.12.3 -k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 -rancher/calico-cni:v3.4.0 +rancher/calico-cni:v3.7.4 rancher/calico-ctl:v2.0.0 -rancher/calico-node:v3.4.0 -rancher/cluster-proportional-autoscaler:1.0.0 -rancher/coreos-etcd:v3.2.24-rancher1 -rancher/coreos-flannel:v0.10.0 -rancher/coreos-flannel:v0.10.0-rancher1 -rancher/flannel-cni:v0.3.0-rancher1 -rancher/hyperkube:v1.13.5-rancher1 +rancher/calico-kube-controllers:v3.7.4 +rancher/calico-node:v3.7.4 +rancher/cluster-proportional-autoscaler:1.3.0 +rancher/coredns-coredns:1.3.1 +rancher/coreos-etcd:v3.3.10-rancher1 +rancher/coreos-flannel:v0.11.0 +rancher/coreos-flannel:v0.11.0-rancher1 +rancher/flannel-cni:v0.3.0-rancher5 +rancher/hyperkube:v1.15.4-rancher1 rancher/k8s-dns-dnsmasq-nanny:1.15.0 rancher/k8s-dns-kube-dns:1.15.0 rancher/k8s-dns-sidecar:1.15.0 -rancher/metrics-server:v0.3.1 -rancher/nginx-ingress-controller-defaultbackend:1.4-rancher1 -rancher/nginx-ingress-controller:0.21.0-rancher3 +rancher/metrics-server:v0.3.3 +rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1 +rancher/nginx-ingress-controller:nginx-0.25.1-rancher1 rancher/pause:3.1 -rancher/rke-tools:v0.1.27 -weaveworks/weave-kube:2.5.0 -weaveworks/weave-npc:2.5.0 +rancher/rke-tools:v0.1.50 +weaveworks/weave-kube:2.5.2 +weaveworks/weave-npc:2.5.2 diff --git a/config/application_configuration.yml b/config/application_configuration.yml index 2e397f4c..0c082867 100755 --- a/config/application_configuration.yml +++ b/config/application_configuration.yml @@ -7,7 +7,7 @@ # resources_dir: /data app_name: onap -resources_filename: "offline-{{ app_name }}-4.0.0.resources.tar" +resources_filename: "offline-{{ app_name }}-4.0.0-resources.tar" app_data_path: "/opt/{{ app_name }}" certificates: organization_name: Samsung @@ -18,4 +18,3 @@ app_helm_build_targets: - all - onap app_helm_chart_name: onap -application_pre_install_role: "onap-patch-role" diff --git a/patches/onap-patch-role/tasks/main.yml b/patches/onap-patch-role/tasks/main.yml deleted file mode 100644 index 474b8ed4..00000000 --- a/patches/onap-patch-role/tasks/main.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -# This role contains patching logic for OOM charts -# and is valid until OOM-1610 is implemented -- name: Check presence of files for NPM patching - stat: - path: "{{ app_helm_charts_infra_directory }}/{{ item }}" - loop: - - common/dgbuilder/templates/deployment.yaml - register: npm_files_check - -- name: Check presence of files for nexus domain resolving - stat: - path: "{{ app_helm_charts_infra_directory }}/{{ item }}" - loop: - - oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml - register: hosts_files_check - -- name: Patch OOM - set npm registry - lineinfile: - path: "{{ item.stat.path }}" - regexp: '^(.*)NPM_REGISTRY_RECORD' - line: '\g<1>npm set registry "http://nexus.{{ ansible_nodename }}/repository/npm-private/";' - backrefs: yes - state: present - loop: "{{ npm_files_check.results }}" - when: item.stat.exists - -- name: Patch OOM - nexus domain resolving - lineinfile: - path: "{{ item.stat.path }}" - regexp: '^(.*)INFRA_CLUSTER_IP' - line: '\g<1>{{ cluster_ip }}' - backrefs: yes - state: present - loop: "{{ hosts_files_check.results }}" - when: item.stat.exists diff --git a/patches/onap.patch b/patches/onap.patch deleted file mode 100644 index a135ad38..00000000 --- a/patches/onap.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh -index c87a26b..4212c96 100644 ---- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh -+++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/resources/config/msosimulator.sh -@@ -1,4 +1,4 @@ - #!/bin/sh --pip install flask --pip install requests -+pip install -i https://nexus3.onap.org/repository/pypi-private/simple/ --trusted-host nexus3.onap.org flask -+pip install -i https://nexus3.onap.org/repository/pypi-private/simple/ --trusted-host nexus3.onap.org requests - python /share/etc/config/mock.py -diff --git a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml -index b26f6dd..2d31aad 100644 ---- a/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml -+++ b/kubernetes/oof/charts/oof-cmso/charts/oof-cmso-service/templates/deployment.yaml -@@ -30,6 +30,10 @@ spec: - app: {{ include "common.name" . }} - release: {{ .Release.Name }} - spec: -+ hostAliases: -+ - ip: INFRA_CLUSTER_IP -+ hostnames: -+ - nexus3.onap.org - initContainers: - - command: - - /root/ready.py --- - -diff --git a/kubernetes/common/dgbuilder/templates/deployment.yaml b/kubernetes/common/dgbuilder/templates/deployment.yaml -index 353c231..cf38409 100644 ---- a/kubernetes/common/dgbuilder/templates/deployment.yaml -+++ b/kubernetes/common/dgbuilder/templates/deployment.yaml -@@ -49,8 +49,12 @@ spec: - - name: {{ include "common.name" . }} - image: "{{ include "common.repository" . }}/{{ .Values.image }}" - imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} -- command: ["/bin/bash"] -- args: ["-c", "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"] -+ command: -+ - /bin/bash -+ - -c -+ - > -+ NPM_REGISTRY_RECORD; -+ cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait - ports: - - containerPort: {{ .Values.service.internalPort }} - readinessProbe: --- -1.8.3.1 - |