npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cpn-console/argocd-plugin

v2.4.0

Published

Ce document décrit le fonctionnement du plugin ArgoCD.

Readme

Plugin ArgoCD

Ce document décrit le fonctionnement du plugin ArgoCD.

Hooks et Steps supportés

Le seul step supporté est pour l'instant le step main. Ceci est applicable à tous les hooks de ce plugin.

upsertProject hook

Voici le diagramme de séquence du hook le plus important du plugin (upsert) :

sequenceDiagram
  actor Bob as Bob

  box DSO
    participant Console as Console
    participant Gitlab as Gitlab
  end

  box Project Cluster
    participant ArgoCD_EXT as ArgoCD
    participant Kubernetes_EXT as Kubernetes
  end

  Bob ->> Console: "Please upsert project"

  loop For every zone/environment
    Console ->> Gitlab: Reconcile (create/update/delete) values.yaml files
    ArgoCD_EXT ->> Gitlab: Detects new/updated values.yaml files
    ArgoCD_EXT ->> Kubernetes_EXT: Apply changes
  end

Les clusters sont dits "externes" car ils sont hors du périmètre de DSO, et gérés de manière autonome par les projets clients, ce qui est une contrainte majeur : on ne peut pas interagir avec l'API Kubernetes (le cluster est considéré comme "air gapped", c'est-à-dire injoignable de l'extérieur, a fortiori depuis la Console). C'est en particulier le cas pour les clusters qui se trouvent dans une Zone DR ("Diffusion Restreinte").

C'est pourquoi la Console fonctionne avec son paradigme dans lequel c'est le cluster externe qui vient récupérer les informations pour se mettre à jour. Et la manière la plus efficace de faire ça, c'est de fonctionner en mode "GitOps", un mode dans lequel la Console crée un fichier de configuration (typiquement un values.yaml) qui serait récupéré (d'où le nom de "pull", en opposition au "push" traditionnel dans lequel on va utiliser les API Kubernetes) par le cluster externe afin d'être traité par l'ArgoCD qui lui est rattaché.

deleteProject hook

sequenceDiagram
  actor Bob as Bob

  box DSO
    participant Console as Console
    participant Gitlab as Gitlab
    participant ArgoCD_DSO as ArgoCD
    participant Kubernetes_DSO as Kubernetes
  end

  box Project Cluster
    participant ArgoCD_EXT as ArgoCD
    participant Kubernetes_EXT as Kubernetes
  end

  Bob ->> Console: "Please delete project"

  loop For every zone/environment
    Console ->> Gitlab: Delete values.yaml files
    ArgoCD_EXT ->> Gitlab: Detects deleted values.yaml files
    ArgoCD_EXT ->> Kubernetes_EXT: Apply relevant changes (delete resources)
  end

upsertCluster hook

Ce hook sert à la création/modification d'un cluster Kubernetes. Il est à noter la distinction des clusters étiquetés in-cluster pour lesquels la gestion des secrets est différente (c'est une exception à la règle).

sequenceDiagram
  actor Bob as Bob

  box DSO
    participant Console as Console
    participant Vault as Vault
    participant Kubernetes as Kubernetes
  end

  Bob ->> Console: "Please upsert cluster"

  alt cluster has "in-cluster" label
    Console ->> Kubernetes: Delete cluster Secret
  else cluster DOES NOT HAVE "in-cluster" label
    Console ->> Kubernetes: Create cluster Secret
  end

  Console ->> Vault: Create entry for cluster data

deleteCluster hook

Ce hook sert à la "suppression" d'un cluster Kubernetes. Il est à noter que le cluster n'est pas vraiment supprimé, mais "oublié" par la Console, qui n'en garde plus trace.

sequenceDiagram
  actor Bob as Bob

  box DSO
    participant Console as Console
    participant Vault as Vault
    participant Kubernetes as Kubernetes
  end

  Bob ->> Console: "Please delete cluster"

  Console ->> Kubernetes: Delete cluster Secret
  Console ->> Vault: Destroy entry for cluster data

upsertZone hook

Ce hook sert à la création/modification d'une Zone (qui contiendra donc un ou plusieurs clusters Kubernetes)

sequenceDiagram
  actor Bob as Bob

  box DSO
    participant Console as Console
    participant Gitlab as Gitlab
    participant Vault as Vault
    participant Kubernetes as Kubernetes
  end

  Bob ->> Console: "Please upsert zone"

  Console ->> Vault: Get credentials
  Console ->> Gitlab: Create infrastructure project for the zone if needed
  Console ->> Gitlab: Create argocd-values.yaml file

Deployment as-code (declarative mode)

---
config:
  layout: default
  theme: base
  flowchart:
    curve: linear
    defaultRenderer: "elk"
---
flowchart TD
    subgraph "Helm-charts"
        H1@{ shape: doc, label: "Chart 'dso-argocd-zone'" }
        H2@{ shape: doc, label: "Chart 'dso-env'" }
        H3@{ shape: doc, label: "Chart 'dso-ns'" }
    end
    subgraph "Gitlab DSO"
        subgraph "zone repository"
            V1@{ shape: doc, label: "/argocd-values.yaml" }
            V2@{ shape: docs, label: "**/values.yaml" }
        end
        subgraph "project repositories"
            V3@{ shape: docs, label: "infra sources" }
        end
    end
    subgraph "DSO Cluster"
        A1[Application zone-#lt;name>-app]
        A1 --Deploy--> A3[ApplicationSet dso-appset]
        A1 --Deploy--> S1[Cluster secrets]
        V2 --Generator--> A3
        A3 --Generates--> A4[Application *-root]
        V2 --> A4
        H2 -.-> A4
        A4 --Deploys--> A7[Application #lt;project>-env]
        A4 --Deploys--> A8@{ shape: procs, label: "Application #lt;project>-#lt;env>-#lt;random-id>" }

    end
    S1 --> apps
    V1 --> A1
    H1 -.-> A1
    V3 ==> A8
    H3 -.-> A7
    V2 --> A7
    A7 --Deploys--> namespace & R1 & R2 & R3
    A8 ==Deploys==> A10
    A8 --Deploys--> A11
    subgraph apps["Apps Clusters"]
        subgraph namespace["Namespace"]
            A10@{ shape: procs, label: "K8S resources" }
            A11@{ shape: procs, label: "VaultStaticSecrets" }
            R1[ResourceQuota]
            R2[VaultConnection]
            R3[VaultStaticSecret registry-pull-secret]
            R3 --> R4[Secret registry-pull-secret]
            A11 --> R5@{ shape: procs, label: "Secrets" }
        end
    end
    subgraph "Vault DSO"
        kv1["KV Infra"]
        kv2@{ shape: procs, label: "KV Projets" }
    end
    kv1 --> R3
    kv2 --> A11