LM Container Argus v4 Release

Overview

On September 14 2020, a new major version of LM Container was made available. This version provides:

  • Improved compatibility with LogicMonitor API rate limits
  • Support for pod priority class
  • Toleration specifications

Because of the extent of the changes in this major version, you will need to opt in to this upgrade.

Release Tagging

Argus disk images are tagged with semantic versioning in addition to a tag for the major version (for example, v4) which will match all images that get published with that major version (including minor improvement and bug fix increments).

For example, the newest version of Argus is 4.0.0, and the following tags are applied to the image: “v4” and “4.0.0”. You may reference “v4” in your Helm deployment, and that tag will also match future Argus versions 4.1.0, 4.1.1, and so on when they are released. This will ensure that new images with minor improvements and bug fixes are used automatically.

Opt-in is still required when a new major version is released (for example, v5 and 5.0.0). 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 provided in the Opting in to the Upgrade section of this support article.

Release Details

Rate limit compatibility. Argus will back off when LogicMonitor REST API rate limits are met. Subsequent request attempts will be made after the rate limit window to ensure successful discovery and deletion requests.

Dynamic node groups based on labels. Dynamic node sub-groups are now based on labels. Previously, they were based on values found in the system.categories property, which did not work in all cases.

Priority Class. LogicMonitor Helm charts now support a new option called priorityClass for Argus, Collectorset-Controller, and Collector pods. This option allows you to prioritize pods when there are insufficient resources to schedule all pods.

For Argus and Collectorset-Controller charts, specify priority class with:

--set priorityClassName="<name>"

For the Collector, specify priority class in the Argus charts with:

--set collector.priorityClassName="<name>"

Tolerations. Adds support for a new tolerations option in Helm for Argus, Collectorset-Controller, and Collectors. These tolerations may be useful for preventing Argus, Collectorset-Controller, and Collector pods from being scheduled on tainted nodes.

For Argus and Collectorset-Controller charts, specify tolerations with the following sequence:

  • --set tolerations[0].key="special"
  • --set tolerations[0].operator="Equal"
  • --set tolerations[0].value="worker1"
  • --set tolerations[0].effect="NoSchedule"

For the Collector, specify tolerations in Argus charts with the following sequence:

  • --set collector.tolerations[0].key="special"
  • --set collector.tolerations[0].operator="Equal"
  • --set collector.tolerations[0].value="worker1"
  • --set collector.tolerations[0].effect="NoSchedule"

Opting In to the Upgrade

With this major version release, the new Argus version is 4.0.0. Use the following instructions to upgrade Argus and opt in to the LM Container upgrade.

Prerequisites

Ensure the following requirements are met before upgrading:

  • Helm 3. You can use the Helm official plugin to move from Helm 2 to 3.
  • Kubernetes 1.14+. If upgrading to Kubernetes 1.16+, you will need to also upgrade your Helm charts. This is because support for some older API object versions (such as extensions/v1beta1 of Deployment) have been dropped and Helm cannot migrate charts between API objects with different schemas.

To upgrade your Helm charts, you’ll need to decode the Helm secrets referencing older API objects, update with Kubernetes’s newer APIs, and re-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 favourite 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

The following steps only apply to Argus. If you have not upgraded Collectorset-Controller to version 2 (released in April 2020), you should do that first before you continue.

  1. Fetch new LogicMonitor Helm charts by running:
    helm repo update
  2. Delete the Argus deployment by running:
    kubectl delete deployment argus
  3. Upgrade the Helm deployment for Argus by running:
    helm upgrade --debug --wait --reuse-values --set imageTag="v4" argus logicmonitor/argus

In this Article: