Skip to content

Helm - Automation gaps in Release process - Phase 2

Arturo Hernandez [EPAM] requested to merge ah/iap-237-refactor-helm into master
  • Refactored helm-charts-azure pipeline to use the latest tag image on demand. (Build pipelines to update Service Group helm chart's version for any increment in patch version.)

    • Script incremental_app_parse.bash will parse version on each osdu-azure apps based in the latests tags of each service, if not found will not parse anything and keep version configured.
    • Each time the release branch runs a pipeline, the tag generator will parse the latest found tag of each service.
    • To avoid confusion, it is used the 1.16.0-r version for helm chart, if tag is created will be used tag version I.E (1.16.2).
    • This have advantage to have the latest "r" version (1.16.0-r), and not overwrite the 0.16.0 version.
    • Job of app parsing example: 1349052
  • Create Service Groups in Helm charts structure to be able to deploy multiple services using single helm chart.

    • Refactored gitlab pipeline to build dependency for subCharts in osdu-azure azure-helm.yml
    • osdu-core_services osdu-security_compliance osdu-reference_helper osdu-partition_base osdu-ingest_enrich
    • Created those as well as dependencies and pushed to the publish repo.
    • Line in action for osdu-azure package job: 1349052#L207
  • If the release or the tag cannot be parsed by default it will use 0.0.0-latest (To avoid overwritten of published charts).

  • Pipeline to deploy helm charts on demand

  • Conditionally deploy individual services

    • Created pipeline in azure devops to conditionally deploy based on each environment, it can deploy any service on demand by configuring pipeline.
    • Deploy base, istio, osdu-azure, and standard-ddms's (wellbore, seismic, reservoir, well-delivery)
    • Full example working in dev
      • To be implemented in ship and demo if approved.
    • This pipeline will not use but values generator script in the helm-charts-azure repository, instead will use published and stable helm-charts.
    • Used multienvironment approach (same pipeline for many environments)

Pipeline screenshot:

image

If we want to deploy specific service:

I.E. (For specific service and overwriting default values for pipeline) I.E Storage, and partition_services


stages:
  - template: /scripts/pipelines/tasks/helm-osdu-stages.yml@HelmChartsAzure
    parameters:
      checkoutRepo: HelmChartsAzure
      environments:
        - dev
      # Already setup by default releases to fully install osdu helm-charts-azure OR
      # Setup your custom releases
      releases:
        - releaseName: test-storage
          chartVersion: 1.16.2
          ociRepo: oci://msosdu.azurecr.io/helm/osdu-azure
          namespace: osdu-azure
          valuesFunction: ''
          subCharts:
            - releaseName: partition-services
              chartPath: osdu-azure/osdu-partition_base
            # storage
            - releaseName: test-storage
              chartPath: osdu-azure/storage
          extraHelmOpts: $(HELM_OPTS)   

Be aware that pipeline will grab the published charts from the oci://msosdu or any other repo which is specified. (No authentication as for now)

Ref: infra-azure-provisioning#237 (closed)

Edited by Arturo Hernandez [EPAM]

Merge request reports