Upgrading Direktiv

Modified on Mon, 22 May, 2023 at 11:11 PM

During the installation of the Direktiv a direktiv.yaml file is created. The fundamental configuration information in the file would include database access details, proxy information (if needed) and several other settings (such as OpenTelemetry configuration and logging information).


An example file is shown below:

ingress:
  host: "dev.direktiv.io"
  certificate: "direktiv-tls-secret"

ui:
  replicas: 1
  image: direktiv/ui-ee
  url: "dev.direktiv.io/api"

flow:
  replicas: 1

functions:
  replicas: 1

api:
  replicas: 1
  image: direktiv/api-ee
  additionalEnvs:
  - name: EE_DB_CONN
    value: "host=direktiv-primary.postgres.svc port=5432 user=<user> password=<password> dbname=<dbname> sslmode=require"

database:
  host: "direktiv-primary.postgres.svc"
  user: "<username>"
  name: "<dbname>"
  password: "<password>"
  sslmode: "require"

# Added this on the 31st October to connect to tracing.direktiv.io (Grafana)
opentelemetry:
  enabled: true
  agentconfig: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    exporters:
      otlp:
        endpoint: "tracing.direktiv.io:4317" # grc port
        insecure: true
        sending_queue:
          num_consumers: 4
          queue_size: 100
        retry_on_failure:
          enabled: true
      logging:
        loglevel: debug
    processors:
      batch:
      memory_limiter:
        # Same as --mem-ballast-size-mib CLI argument
        ballast_size_mib: 165
        # 80% of maximum memory up to 2G
        limit_mib: 400
        # 25% of limit up to 2G
        spike_limit_mib: 100
        check_interval: 5s
    extensions:
      zpages: {}
    service:
      extensions: [zpages]
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging, otlp]

Upgrading a Direktiv instance to the latest version uses this direktiv.yaml configuration file and helm installation utility. Using helm, the most current Direktiv version will be deployed. 

To upgrade each component a tag value can be changed to the desired version. If the component already exists (secrets, flow, ui, api, functions) the tag value has to be added. 


An example is shown below:

secrets:
  tag: "v0.7.1"

flow:
  tag: "v0.7.1"

ui:
  tag: "v0.7.1"

api:
  tag: "v0.7.1"

functions:
  tag: "v0.7.1"

The new configuration file would look like this (note however, this will look different for each version of Direktiv):

ingress:
  host: "dev.direktiv.io"
  certificate: "direktiv-tls-secret"

secrets:
  tag: "v0.7.1"

ui:
  replicas: 1
  image: direktiv/ui-ee
  url: "dev.direktiv.io/api"
  tag: "v0.7.1"

flow:
  replicas: 1
  tag: "v0.7.1"

functions:
  replicas: 1
  tag: "v0.7.1"

api:
  replicas: 1
  image: direktiv/api-ee
  tag: "v0.7.1"
  additionalEnvs:
  - name: EE_DB_CONN
    value: value: "host=direktiv-primary.postgres.svc port=5432 user=<user> password=<password> dbname=<dbname> sslmode=require"

database:
  host: "direktiv-primary.postgres.svc"
  user: "<username>"
  name: "<dbname>"
  password: "<password>"
  sslmode: "require"

# Added this on the 31st October to connect to tracing.direktiv.io
# for the PayPal PoC
opentelemetry:
  # -- opentelemetry address where Direktiv is sending data to
  # address: "localhost:4317"
  # -- installs opentelemtry agent as sidecar in flow
  enabled: true
  # -- config for sidecar agent
  # 4317 PORT
  agentconfig: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    exporters:
      otlp:
        # endpoint: "tracing.direktiv.io:4318"
        endpoint: "tracing.direktiv.io:4317"
        # endpoint: "tracing.direktiv.io:3200"
        insecure: true
        sending_queue:
          num_consumers: 4
          queue_size: 100
        retry_on_failure:
          enabled: true
      logging:
        loglevel: debug
    processors:
      batch:
      memory_limiter:
        # Same as --mem-ballast-size-mib CLI argument
        ballast_size_mib: 165
        # 80% of maximum memory up to 2G
        limit_mib: 400
        # 25% of limit up to 2G
        spike_limit_mib: 100
        check_interval: 5s
    extensions:
      zpages: {}
    service:
      extensions: [zpages]
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging, otlp]
After changing the file the command for upgrading the environment depends on whether you're running Open Source or Enterprise Edition edition.


For Open Source:

helm upgrade -f direktiv.yaml direktiv direktiv/direktiv

For Enterprise Edition, there is an upgrade file in install/06_direktiv:

~/direktiv-ee/install/06_direktiv/upgrade.sh

That's it!

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article