Introduction
Argo CD has supported extensions for some time now. Unfortunately, prior to OpenShift GitOps 1.14 there wasn’t an easy way to make use of them due to the operator not supporting init and sidecar containers in the server component. As discussed in the What’s New in 1.14 blog, this feature is now available which opens the door to using extensions.
In this short blog we will review how to install an extension by adding the Argo Rollout Extension to our OpenShift GitOps installation.
Rollouts Extension
The Rollout Extension enables users to manage Argo Rollouts in the Argo CD user interface. To access the Rollout Extension, first navigate to an Application that is managing a Rollout and then click on the Details menu for the Rollout as shown here:
This will then open the resource sidebar as usual however a new tab called Rollout will be available which is being provided by the extension:
This extension enables visualizing the Rollout to monitor progression, perform promotions and rollbacks and more. It is identical to the dashboard interface that is provided when using the Argo Rollouts kubectl plugin via this command:
oc argo rollouts dashboard
Installing the Rollout Extension
The upstream documentation for the Argo Rollout Extension shows how to install it via a mix of init containers and volume mounts on the Argo CD Server component. Leveraging the new features in 1.14, it is trivial to translate this into the OpenShift GitOps operator:
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: argocd
namespace: gitops
spec:
...
server:
...
initContainers:
- env:
- name: EXTENSION_URL
value: 'https://github.com/argoproj-labs/rollout-extension/releases/download/v0.3.5/extension.tar'
image: 'quay.io/argoprojlabs/argocd-extension-installer:v0.0.5'
name: rollout-extension
securityContext:
allowPrivilegeEscalation: false
volumeMounts:
- mountPath: /tmp/extensions/
name: extensions
volumeMounts:
- mountPath: /tmp/extensions/
name: extensions
volumes:
- emptyDir: {}
name: extensions
Note that I have updated the image references to the latest available images for the rollouts extension and the installer from what is shown in the upstream documentation.
Conclusion
In this short blog we reviewed installing extensions in OpenShift GitOps 1.14 by installing the Argo Rollout extension. Note that in the future OpenShift GitOps is planning on adding official support for the Argo Rollout Extension. Keep your eye on this issue if interested in following progress on it.
Note: While Red Hat supports the provided features needed to install extensions, Red Hat does not support specific third-party extensions at this time. Using an extension will not invalidate support for OpenShift GitOps, however, do keep in mind that the third party extension itself is unsupported.