Helm

A helm component permits to deploy existing Helm Charts as application components. Notice that the support is still in beta as the compatibility between the Open Application Model and the resulting component is still being improved due to some limitations with general deployment of Helm Charts.

The helm component will download the chart and deploy it in the selected environment. Notice that the standard Kubernetes limitations apply, so some of the elements that an arbitrary Helm Chart may be trying to create could potentially fail as some entities are restricted in multi-tenant environments. Creating cluster level entities for example will not be possible.

Additionally, some of the inner limitations of Helm difficult tracking the resources generated by a chart, so the application may appear with a WARNING status if the deployed entities cannot be identified. To improve this, we recommend to include two extra labels when deploying the chart. Adding labels depends on the chart specifics, so not all of them support that option. To improve tracking, add the following labels:

app.oam.dev/name=<application-name>
app.oam.dev/component=<component-name>

The following snippet contains an example application with the available options to deploy a chart:

​apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: my-app
spec:
  components:
    - name: my-component
      type: helm
      properties:
        repoType: "helm" # (Required) helm | git | oss | oci (helm by default)
        pullInterval: "5m" # (Required) interval to check for updates (5m by default)
        interval: "30s" # (Required) interval to reconcile the Helm release (30s by default)
        url: "https://<the_chart_url>" # (Required) url
        secretRef: "secret-name" # (Optional) the secret name that contains the auth credentials
        timeout: "5m" # (Optional) operations timeout
        installTimeout: "10m" # (Required) install operation timeout (10m by default)
        git: # (Optional)
          branch: git-branch # (Required) branch to checkout 
        oss: # (Optional)            
          bucketName: "bucket-name" # (Required) the oss bucket's name 
          provider: "generic" # (Required) generic | aws. aws for retrieve credentials from the EC2
                              # service when credentials not specified, in other case (Minio,
                              # Amazon S3, Google Cloud Storage, Alibaba Cloud OSS)
                              # generic (generic by default)
        region: "regiona" # (Optional) buket region
        chart: "<chart_name>" # (Required) - chart name for helm resource
                       #            - relative path to helm chart for git/oss 
                       #            - relative path for chart package 
        version: "*" # (Required) chart version (* by default)   
        releaseName: "release-name" # (Optional) release name
        retries: 3 # (Required) times to retry when install or upgrade fails    
        values: # (Optional) chart values
          key1:
            key11:
              key111: value111