• Stars
    star
    108
  • Rank 319,407 (Top 7 %)
  • Language
    Go
  • Created over 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Support for extending Argo CD

Deprecation Notice

This repo is now deprecated and no further changes will be made. The current alternative for installing Argo CD extensions is by defining an init-container in the Argo CD API server using the argocd-extension-installer image provided by the following repo:

This is an example about how to use it:

Argo CD Extensions

To enable Extensions for your Argo CD cluster will require just a single kubectl apply.

Here we provide a way to extend Argo CD such that it can provide resource-specific visualizations, capabilities and interactions in the following ways:

  • Richer and context-sensitive UI components can be displayed in the user interface about custom resources.
  • Custom health checks can be configured to assess the health of the resource.
  • Custom actions could be performed to manipulate resources in predefined ways.

Motivation

Argo CD is commonly used as a dashboard to Kubernetes applications. The current UI is limited in that it only displays very general information about Kubernetes objects. Any special visualizations can currently only be done native Kubernetes kinds.

For custom resources, Argo CD does not by default have any special handling or understanding of CRs, such as how to assess health of the object or visualizations. When examining a resource, a user can only see a YAML view of the object, which is not helpful unless they are familiar with the object's spec and status information.

Note that Argo CD does currently have a resource customizations feature, which allows operators to define health checks and actions via lua scripts in the argocd-cm ConfigMap. However, the current mechanism of configuring resource customizations is difficult and highly error prone.

This proposal would allow operators to more easily configure Argo CD to understand custom resources, as well as provide more powerful visualization of objects.'

Goals

  • Enable new visualizations in the UI for resources that do not have baked-in support
  • Extensions can be configured by operators at runtime, without a feature being built directly into Argo CD, and with no need to recompile UI code.
  • Extensions should be easy to develop and install (via an ArgoCDExtension CR)
  • Replace current resource customizations in argocd-cm ConfigMap with extensions

Getting Started

The simplest way to install the extension controller is to use Kustomize to bundle Argo CD and the extensions controller manifests together:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
# base Argo CD components
- https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/install.yaml

components:
# extensions controller component
- https://github.com/argoproj-labs/argocd-extensions/manifests

Store the YAML above into kustomization.yaml file and use the following command to install manifests:

kubectl create ns argocd && kustomize build . | kubectl apply -f - -n argocd

More Repositories

1

argocd-image-updater

Automatic container image update for Argo CD
Go
1,220
star
2

argocd-autopilot

Argo-CD Autopilot
Go
889
star
3

argocd-vault-plugin

An Argo CD plugin to retrieve secrets from Secret Management tools and inject them into Kubernetes secrets
Go
805
star
4

argocd-operator

A Kubernetes operator for managing Argo CD clusters.
Go
625
star
5

hera

Hera is an Argo Python SDK. Hera aims to make construction and submission of various Argo Project resources easy and accessible to everyone! Hera abstracts away low-level setup details while still maintaining a consistent vocabulary with Argo. ⭐️ Remember to star!
Python
559
star
6

argocd-notifications

Notifications for Argo CD
Go
492
star
7

terraform-provider-argocd

Terraform provider for ArgoCD
Go
397
star
8

old-argo-dataflow

Dataflow is a Kubernetes-native platform for executing large parallel data-processing pipelines.
Go
268
star
9

rollout-extension

Argo Rollout visualization in Argo CD Web UI
TypeScript
186
star
10

argocd-bot

Bot to automate Kubernetes deployment via Github PRs
TypeScript
135
star
11

argocd-extension-metrics

An Argo CD extension to enable visualization of metrics in Argo CD UI.
TypeScript
115
star
12

argo-python-dsl

Python DSL for Argo Workflows
Python
99
star
13

argo-kube-notifier

Argo Kube Notifier controller monitors Kubernetes resources
Go
95
star
14

rollouts-plugin-trafficrouter-gatewayapi

The Argo Rollouts plugin implementing the Kubernetes Gateway API specification for using different traffic providers in progressive delivery scenarios
Go
92
star
15

argo-rollouts-manager

Kubernetes Operator for Argo Rollouts controller.
Go
90
star
16

argo-workflows-catalog

Argo Workflows Catalog
Go
86
star
17

gordian

Gordian applies transformations to files across multiple github repositories and creates pull requests for the owners of the repositories to review and merge them.
Python
78
star
18

argocd-interlace

Enabling Software Supply Chain Security Capabilities in ArgoCD
Go
78
star
19

argo-client-python

⚠️⚠️⚠️This repository is no longer maintained, please find your Java SDKs https://github.com/argoproj/argo-workflows/blob/master/docs/client-libraries.md ⚠️⚠️⚠️
Python
78
star
20

argocd-agent

Redefining the multi cluster story of Argo CD
Go
48
star
21

argo-client-java

⚠️This repository is no longer maintained, please find your Java SDKs https://github.com/argoproj/argo-workflows/blob/master/docs/client-libraries.md
Java
35
star
22

appsource

Automatically self-serviced applications for ArgoCD.
Go
24
star
23

argocd-extension-installer

Install Argo CD extensions using init-containers
Shell
17
star
24

rollouts-plugin-trafficrouter-contour

The Argo Rollouts plugin implementing the Contour HTTPProxy traffic control in progressive delivery scenarios.
Go
15
star
25

argocd-rbac-operator

Kubernetes Operator for Argo CD RBAC Management.
Go
14
star
26

applicationset-hello-plugin

Python
13
star
27

community

Community documents for argoproj-labs
12
star
28

argo-java-client

Created java data model from argo project by it's swagger files. Argo proj does use Kubernetes api so this client only contains Model and no APIs
Java
12
star
29

argoverse

ShaderLab
11
star
30

training-material

Shell
8
star
31

argo-client-gen

⚠️⚠️⚠️This repository is no longer maintained, please find your Java SDKs https://github.com/argoproj/argo-workflows/blob/master/docs/client-libraries.md ⚠️⚠️⚠️
8
star
32

gitops-promoter

A GitOps Environment Promotion Tool
Go
7
star
33

multi-cluster-kubernetes

Proof of concept of amalgamating multiple Kubernetes APIs into a single view
Go
6
star
34

argo-cd-benchmarking

JavaScript
6
star
35

argo-cd-tokens

Go
6
star
36

argo-workflows-slack-executor-plugin

Python
5
star
37

argocd-example-extension

JavaScript
5
star
38

argo-workflows-python-executor-plugin

Python
5
star
39

argo-graph

TypeScript
4
star
40

rollouts-plugin-trafficrouter-consul

Argo Rollouts Plugin for Consul Service Mesh
Go
4
star
41

friends

Projects which would love to associate themselves with the Argo ecosystem of projects!
4
star
42

argo-workflows-events-workshop

3
star
43

couler

This project has been moved to https://github.com/couler-proj/couler
3
star
44

argo-eventbus

Go
3
star
45

argocd-ephemeral-access

A kubernetes controller to manage Argo CD temporary access
Go
3
star
46

argocd-cmp-plugin-examples

2
star
47

terraform-provider-argocd-old

2
star
48

argo-workflows-hello-executor-plugin

Python
1
star
49

rollouts-opsmx-metric-plugin

Argo Rollouts plugin implementation for logs and metrics analysis
1
star
50

rollouts-plugin-trafficrouter-openshift

Go
1
star