Helm Generator for DCAE MS

Wiki to track the design requirements for Helm generator to support DCAEGEN2-2694: Helm charts generation through MOD (Part1)Closed

REQUIREMENTS

1. ENV SETTING SUPPORT

Component Spec

"auxilary": { . . "helm": { "applicationEnv": { "PMSH_PG_URL": "dcae-pmsh-pg-primary", "PMSH_PG_USERNAME": { "secretUid": "pgUserCredsSecretUid", "key": "login" }, "PMSH_PG_PASSWORD": { "secretUid": "pgUserCredsSecretUid", "key": "password" } } } . . }



Values.yaml specification



applicationEnv:
  PMSH_PG_URL: dcae-pmsh-pg-primary
  PMSH_PG_USERNAME:
     secretUid: pgUserCredsSecretUid
     key: login
  PMSH_PG_PASSWORD:
     secretUid: pgUserCredsSecretUid
     key: password

Note: Text in blue should be mapped from component-spec. If using secret UID, its responsibility of MS developer to include them also on values.yaml

Example

  - uid: &pgUserCredsSecretUid pg-user-creds
    name: &pgUserCredsSecretName '{{ include "common.release" . }}-pmsh-pg-user-creds'
    type: basicAuth
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix "pmsh-pg-user-creds" .Values.postgres.config.pgUserExternalSecret) }}'
    login: '{{ .Values.postgres.config.pgUserName }}'
    password: '{{ .Values.postgres.config.pgUserPassword }}'
    passwordPolicy: generate

2. CONFIG-MAP SUPPORT 

Component Spec

  "config_map_volume": {       "type": "object",       "properties": {         "config_volume": {           "type": "object",           "name": {             "type": "string"           }         },         "container": {           "type": "object",           "bind": {             "type": "string"           },           "mode": {             "type": "string"           }         }       },       "required": ["config_volume", "container"]     },



Example:

                     

"volumes": [{      "config_volume": {        "name": "dcae-external-repo-configmap-schema-map"      },      "container": {        "bind": "/opt/app/VESCollector/etc/externalRepo/"      }    }, {      "config_volume": {        "name": "dcae-external-repo-configmap-sa88-rel16"      },      "container": {        "bind": "/opt/app/VESCollector/etc/externalRepo/3gpp/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/"      }   } ],

    
https://git.onap.org/dcaegen2/collectors/ves/tree/dpo/spec/vescollector-componentspec.json



Values.yaml specification





3. CMVP2 Certificates support

Component Spec



Example:

https://git.onap.org/dcaegen2/collectors/ves/tree/dpo/spec/vescollector-componentspec.json

Values.yaml specification



requirement.yaml

templates/certificates.yaml



4. POLICY SIDECAR SUPPORT

Component Spec



Example: 

            

Values.yaml specification



#dcaePolicySyncImage: onap/org.onap.dcaegen2.deployments.dcae-services-policy-sync:1.0.1  → From base template
policies:
  duration: 300  → default

  policyRelease: onap
  policyID: |
    '["tca_policy_id_11","tca_policy_id_10"]'  → coming from spec file

5. POSTGRES SUPPORT

Component Spec



  • Need secret suffix or retrieve from spec-name?

Values.yaml specification

Note: applicationEnv setting if required should be mapped from spec as-is (req#1). Example above contains <pmsh> part of secret name and PG name which should be mapped to component-name from spec file



Requirement.yaml

requirement yaml content



6. DMAAP – Secure Topic/Feed (WIP)

Component Spec

            TBD

Values.yaml specification

      Note: applicationConfig should use same names as defined under credentials

Example:

  enable_tls: true
  aaf_identity: ${AAF_USER}
  aaf_password: ${AAF_PASSWORD}
  streams_publishes:
      ves-3gpp-fault-supervision:
      type: kafka
      aaf_credentials:
        username: ${AAF_USER}
        password: ${AAF_PASSWORD}
      kafka_info:
        bootstrap_servers: message-router-kafka:9092
        topic_name: SEC_3GPP_FAULTSUPERVISION_OUTPUT

7. SERVICE MAPPING 

Component Spec



  • Schema change required need to determine if nodeport vs clusterip

    • Require type/name/ports 

      • type - Nodeport or ClusterIPO

      • ports - list of objects mapped from spec as-is

      • constraints for ports can be added later

Values.yaml specification

OR 

OR

Based on https://gerrit.onap.org/r/c/oom/+/121390

REVISED V3 SPEC

Component

V3 Schema

V2 Schema

With CMPV2

With Postgres

With Policy

Component

V3 Schema

V2 Schema

With CMPV2

With Postgres

With Policy

VESCollector

vescollector-componentspec-v3-helm

vescollector-componentspec

vescollector-componentspec-cmpv2-v3-helm

vescollector-componentspec-postgres-v3-helm



TCAgen2

tcagen2_spec-v3-helm

tcagen2_spec





tcagen2_spec-policy-v3-helm

PRH 

prh-componentspec-v3-helm (pending test)

prh-componentspec







hv_vescollector

hv-ves-collector-componentspec-v3-helm (pending test)

hv-ves-collector.componentspec







PM-Mapper

pmmapper-component-spec-v3-helm (need to update publisher and subscriber and pending test)

pmmapper-component-spec







DataFileCollector (DFC)

datafile-component-spec-v3-helm (need to update publisher and subscriber and pending test)

datafile-component-spec








REFERENCE

Discussed ppt slides  Helm_deployment.pptx