LM Container Argus v3 Release – Support for Kubernetes 1.16 & 1.17

Overview

On April 22, 2020, a new major version of LM Container was made available that provides compatibility for Kubernetes 1.16 and 1.17 and Helm 3. Because of the extent of the changes in this major version, you will need to opt in to this upgrade.

Release Tagging

Beginning with this release, we will no longer be tagging the latest images of Argus and Collectorset-Controller with “latest”. Instead, we will be tagging images with semantic versioning in addition to a tag for the major version (for example, v3) which will match all images that get published with that major version (including minor improvement & bug fix increments).

For example, the newest version of Argus is 3.0.0, and the following tags are applied to the image: “v3” and “3.0.0”. You may reference “v3” in your Helm deployment, and that tag will also match future Argus version 3.1.0, 3.1.1, and so on when they are released. This will ensure that new images with minor improvements and bug fixes are used automatically, but that opt-in is still required when a new major version is released (for example, 4.0.0 or v4). This means that if your Helm deployment for Argus and Collectorset-Controller currently references “latest” or hard-coded version image tags, you will need to opt in to the upgrade using the instructions in the following section.

Opting In to the Upgrade

With this major version release, the new Argus version is 3.0.0 and the Collectorset-Controller version is 2.0.0. You will need to upgrade both Argus and the Collectorset-Controller to opt in to the upgrade, and the following prerequisites and instructions should be used.

Prerequisites

Ensure the following requirements are met before upgrading:

  • Helm 3 (Note: You can use the Helm official plugin to move from Helm 2 to 3).
  • Kubernetes 1.14+.
  • Upgrade your Helm Charts If you are upgrading to Kubernetes version 1.16+.

    Starting with Kubernetes 1.16+, support for some older API objects’ versions like extensions/v1beta1 of Deployment have been dropped and Helm cannot migrate charts using one API object to another with a different schema. To upgrade your charts, you’ll need to decode the Helm secrets referencing older API objects, update with K8s newer APIs, and again encode back. For example, here is the upgrade process for the Collectorset-Controller:

    #Get existing helm secret object, replace secret name present on your cluster, change output files also for according to your chart name

    kubectl get secrets sh.helm.release.v1.collectorset-controller.v1 -o yaml > csc.release# Take backup of file csc.release -> csc.release.bkp

    #Decode it to original json form

    cat csc.release | grep release: | grep -oP '(?<=release: ).*' > csc.release.data && base64 -d < csc.release.data | base64 -d | gzip -d - > release.data.decoded

    #Use your favorite editor and replace apiVersion extensions/v1beta1 to apps/v1 for the Deployment object

    #Encode updated config

    cat release.data.decoded | gzip | base64 | base64 > updated.csc.release

    #Open this updated.csc.release file and remove all newlines - open file in vi editor and then press ESC: and then type "%s/\n//g"

    #Copy secret content of updated.csc.release and replace it in original csc.release for release secret content

    #Replace secret object on cluster

    kubectl apply -f csc.release

Upgrade Instructions

Follow these steps to upgrade:

  1. Fetch new LogicMonitor Helm charts by running:
    helm repo update
  2. Delete the Collectorset-Controller deployment object by running:
    kubectl delete deployment collectorset-controller
  3. Upgrade the Helm deployment for Collectorset-Controller by running:
    helm upgrade --debug --wait --reuse-values --set imageTag="v2" collectorset-controller logicmonitor/collectorset-controller
  4. Delete the Argus deployment object by running:
    kubectl delete deployment argus
  5. Upgrade the Helm deployment for Argus by running:
    helm upgrade --debug --wait --reuse-values --set imageTag="v3" argus logicmonitor/argus

Official Versioning Guidelines

From here on out, we are establishing official commitments to support the most recent four versions of Kubernetes at any given time, and aim to have support for new versions of Kubernetes within 60 days of the official release. For example, with this release, we are adding support for 1.16 and 1.17, resulting in support for 1.14-1.17. We are currently working on support for 1.18 (released by Kubernetes last month).

If you are using an older version of Kubernetes (or Helm), you should still be able to use older images of Argus and Collectorset-Controller.

In this Article: