A plugin for argo which behaves like I'd like

Overview

argocd-lovely-plugin

An ArgoCD plugin to perform various manipulations in a sensible order to ultimately output YAML for Argo CD to put into your cluster. If you use it as the reader in a unix pipe, it will instead read from stdin. It will still under some circumstances taint the current directory with files so expects to be run in a directory it can mess up.

Why?

  • Allows for better GitOps with one argo application per real application.
    • Process a helm chart through kustomize more easily.
    • Trivially add some extra resources to a helm chart by popping them in a directory alongside your main one.
    • Chain additional ArgoCD plugins. For example, you can use argo-vault-replacer to pull secrets from Hashicorp Vault as a plugin to this one to combine secrets and helm/kustomize more easily.
  • DRY (Don't repeat yourself) more
    • Allows ArgoCD to kustomize per application.
    • Combines particularly well with application sets to allow broadly similar things to be partially modified by the application.

Downsides

  • Helm is no longer special, and is just a templating tool. This is the case for any use of modified helm charts in ArgoCD. We cannot run hooks or anything any more. You don't get Helm specific support in ArgoCD.

Installing as an ArgoCD Plugin

You can use our Kustomization example to install ArgoCD and to bootstrap the installation of the plugin at the same time. However the steps below will detail what is required should you wish to do things more manually.

General configuration

Lovely is designed for minimal configuration and to do the right thing. The following environment variables can be used to change some behaviour:

  • LOVELY_PLUGINS: Set to a comma separated list of binaries to run, in the same way as argocd expects plugins. stdin->plugin->stdout processing yaml. Each plugin is executed with bash -c , so you can pass parameters as hoped for.
  • LOVELY_KUSTOMIZE_PATH: Set to a path or binary name to use for kustomize.
  • LOVELY_HELM_PATH: Set to a path or binary name to use for helm.

Helm variation

  • LOVELY_HELM_VALUES: to some yaml you'd like overlayed on any values.yaml files used by helm. This will override any settings in values.yaml that already exist. You cannot use this to append to existing yaml lists.

Kustomize

  • LOVELY_KUSTOMIZE_EXTRAS: to some yaml you'd like overlayed on any kustomization.yaml files used by kustomize. This will override any settings in kustomization.yaml that already exist. You cannot use this to append to existing yaml lists.

What can I do with it?

Have a look at the test suite for a lot of examples of how you can use this to make nice git repos for your applications.

What doesn't it do?

This is not a templating tool, there are plenty of choices out there to that stuff. It just brings together external tools.

Comments
  • lovely plugin does not support ../ in kustomization.yaml

    lovely plugin does not support ../ in kustomization.yaml

    everything seems to be in working order when kustomization.yaml does not reference ../ but as soon as you include a base in the parent directory (at the same level at the directory polled by lovely plugin) everything breaks because lovely plugin does not copy all the resources like argocd kustomization support does. (kustomization including parent directory content for base works in native argocd)

    opened by shanproofpoint 6
  • add extra environment var for helm template params

    add extra environment var for helm template params

    Created this pr because i have some helm charts with conditions based on k8 version with this change i can add the param --kube-version to the helm tempalte command using an new optional environment variable

    example export LOVELY_HELM_TEMPLATE_PARAMS="--kube-version 1.21"

    opened by martijnvdp 5
  • Lovely throws an error when kustomize includes a base or directory up in tree

    Lovely throws an error when kustomize includes a base or directory up in tree

    Given a simple kustomization like

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
    - ../../../../base/namespaces
    

    and ArgoCD Application without lovely plugin, it works as expected, base is included and deployed properly.

    However, when lovely plugin is included in the same Application:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    ...
    spec:
      source:
        ...
        path: k8s/[omitted]/overlays/_cluster/namespaces
        plugin:
          name: argocd-lovely-plugin
    ...
    

    an error is thrown:

    rpc error: code = Unknown desc = Manifest generation error (cached):
     `argocd-lovely-plugin` failed exit status 1: 2022/10/13 15:19:41 
    Error: accumulating resources: accumulation 
    err='accumulating resources from '../../../../base/namespaces': 
    evalsymlink failure on '/base/namespaces' : 
    lstat /base: no such file or directory': 
    evalsymlink failure on '/base/namespaces' : 
    lstat /base: no such file or directory
    

    Does lovely plugin support inclusion of base?

    ArgoCD version: 2.4.12 Lovely version: 0.6.4 Kustomize version: 4.4.1

    opened by Tyrion85 5
  • Question: InitContainer runAsNonRoot user?

    Question: InitContainer runAsNonRoot user?

    Hey, first of all I want to say thank you for this cool project.

    Our OPA-Gatekeeper does not allow containers running as root user. The InitContainer argocd-lovely-plugin:0.4.1 is running as root user. I tried to create my own Dockerfile, but always getting the following InitContainer error as soon as I deploy with ArgoCD:

    mv: can't remove 'argocd-lovely-plugin': Permission denied

    With the Dockerfile, I tried to create my own user and change the owner of the /argocd-lovely-plugin file:

    FROM ghcr.io/crumbhole/argocd-lovely-plugin:0.4.1
    
    USER root
    
    # Create a group and user
    RUN addgroup -S app -g 1000 && adduser -S app -u 1000 -G app \
     && chown -R 1000:1000 /argocd-lovely-plugin
    
    # Tell docker that all future commands should run as the appuser user
    USER 1000
    
    # the following commands are only for traceability
    RUN id
    RUN ls -l /
    RUN ls -ln /argocd-lovely-plugin
    RUN rm -rf /argocd-lovely-plugin
    

    If I build the image and try to remove (rm) the "argocd-lovely-plugin" file, then I have the same problem:

    Step 1/7 : FROM ghcr.io/crumbhole/argocd-lovely-plugin:0.4.1
     ---> 3256ecbe39ac
    Step 2/7 : USER root
     ---> Running in cd434b201efe
    Removing intermediate container cd434b201efe
     ---> c196c3018099
    Step 3/7 : RUN addgroup -S app -g 1000 && adduser -S app -u 1000 -G app  && chown -R 1000:1000 /argocd-lovely-plugin
     ---> Running in c4d323e9e69c
    Removing intermediate container c4d323e9e69c
     ---> 56dd65b7905e
    Step 4/7 : USER 1000
     ---> Running in 8e9f994b894c
    Removing intermediate container 8e9f994b894c
     ---> 114c8b9d36d9
    Step 5/7 : RUN ls -l /
     ---> Running in 2866727819fe
    total 14532
    -rwxr-xr-x    1 app      app       14822201 Jul  5 10:44 argocd-lovely-plugin
    drwxr-xr-x    2 root     root          4096 May 23 16:51 bin
    drwxr-xr-x    5 root     root           320 Jul 22 23:20 dev
    drwxr-xr-x    1 root     root          4096 Jul 22 23:20 etc
    drwxr-xr-x    1 root     root          4096 Jul 22 23:20 home
    drwxr-xr-x    7 root     root          4096 May 23 16:51 lib
    drwxr-xr-x    5 root     root          4096 May 23 16:51 media
    drwxr-xr-x    2 root     root          4096 May 23 16:51 mnt
    drwxr-xr-x    2 root     root          4096 May 23 16:51 opt
    dr-xr-xr-x  167 root     root             0 Jul 22 23:20 proc
    drwx------    2 root     root          4096 May 23 16:51 root
    drwxr-xr-x    2 root     root          4096 May 23 16:51 run
    drwxr-xr-x    2 root     root          4096 May 23 16:51 sbin
    drwxr-xr-x    2 root     root          4096 May 23 16:51 srv
    dr-xr-xr-x   13 root     root             0 Jul 22 23:20 sys
    drwxrwxrwt    2 root     root          4096 May 23 16:51 tmp
    drwxr-xr-x    7 root     root          4096 May 23 16:51 usr
    drwxr-xr-x   12 root     root          4096 May 23 16:51 var
    Removing intermediate container 2866727819fe
     ---> 6f09a2a7cb8c
    Step 6/7 : RUN ls -ln /argocd-lovely-plugin
     ---> Running in e17004972a4b
    -rwxr-xr-x    1 1000     1000      14822201 Jul  5 10:44 /argocd-lovely-plugin
    Removing intermediate container e17004972a4b
     ---> 25de8bbf2028
    Step 7/7 : RUN rm -rf /argocd-lovely-plugin
     ---> Running in 8f9d8cfb7001
    rm: can't remove '/argocd-lovely-plugin': Permission denied
    The command '/bin/sh -c rm -rf /argocd-lovely-plugin' returned a non-zero code: 1
    

    Adjusting the file permissions (e.g. 777) leads to the same behavior.

    Do you have any idea what I'm doing wrong or is there a plan on the roadmap for a container that is "runAsNonRoot" compatible?

    opened by husira 5
  • BUG: Alphabetical order breaks rendering

    BUG: Alphabetical order breaks rendering

    Using the latest stable version of argocd-lovely-plugin.

    WIth a repo structure like the following: my-cluster (folder):

    • chart (folder containing a Chart.yaml and values.yaml)
    • d.yaml
    • e.yaml
    • kustomization.yaml

    This works without issue.

    However, if you have a repo like this:

    my-cluster (folder):

    • chart (folder containing a Chart.yaml and values.yaml)
    • b.yaml
    • e.yaml
    • kustomization.yaml

    It will ONLY render the b and e and it won't render the helm chart.

    opened by hawkesn 4
  • Update wangyoucao577/go-release-action action to v1.33

    Update wangyoucao577/go-release-action action to v1.33

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | wangyoucao577/go-release-action | action | minor | v1.32 -> v1.33 |


    Release Notes

    wangyoucao577/go-release-action

    v1.33

    Compare Source

    What's Changed

    New Contributors

    Full Changelog: https://github.com/wangyoucao577/go-release-action/compare/v1.32...v1.33


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 3
  • Additional Kustomize Args

    Additional Kustomize Args

    Curious how you'd recommend adding additional args to kustomize such as --load-restrictor LoadRestrictionsNone? Attempting to install a chart from local, and can't get it to work unless the /chart is inside the kustomize directory. I see --helm-enabled is set here, and we're given the option to provide a path to a different kustomize binary. Would it be possible to use another plugin instead of pointing to a binary? Already have a kustomize plugin with the necessary options set. Otherwise maybe some way to use the argo-cm kustomize.buildOptions?

    opened by wmiller112 3
  • Weirdness in preprocessors

    Weirdness in preprocessors

    I'm using sed command in ARGOCD_ENV_LOVELY_PREPROCESSORS, as in one of the examples to replace contents of values.yaml.

    Seems if sed returns error code due to eg. file not existing, lovely-plugin does not catch it, and happily just continues processing.

    Instead, we should return error to argocd.

    EDIT: seems my ENV variable name was wrong, LOVELY_PREPROCESSORS does work, however I still can't make it to find proper file. Following Application definition works, and replaces correctly:

      source:
        path: deploy/magento
        plugin:
          env:
          - name: LOVELY_PREPROCESSORS
            value: sed -i 's/<<environment>>/dev-lovely/g' values.yaml
          name: argocd-lovely-plugin
    

    But if I try to target a directory above it, in order to include plain yaml files in another directory, I this fails:

      source:
        path: deploy
        plugin:
          env:
          - name: LOVELY_PREPROCESSORS
            value: sed -i 's/<<environment>>/dev-lovely/g' magento/values.yaml
          name: argocd-lovely-plugin
    
    opened by paveq 3
  • characters dropped after $

    characters dropped after $

    when using kustomize_patch as per below, anything attached to $ disappears from the render, there doesnt appear to be an escape key either to stop this from happening.

    plugin:
      name: argocd-lovely-plugin
      env:
        - name: LOVELY_KUSTOMIZE_PATCH
          value: |-
            - op: replace
              path: /patches/0/patch
              value: |-
                - op: add
                  path: /data/agent3.yaml
                  value: $value
    

    So in the above example the entire "$value" will disappear and leave it empty.

    My use case is patching in configs for an prometheus that includes scraping configs that require variables such as "$1:$2" which are dropped and rendered as ":"

    wontfix 
    opened by Mitchell-Blanchard 3
  • api and kube versions from argocd build env vars

    api and kube versions from argocd build env vars

    PR to add api versions and cluster versions to the helm template command there both available in the build environment variables

    KUBE_VERSION = the version of kubernetes cluster KUBE_API_VERSIONS = the version of kubernetes APIs (csv formated string)

    https://argo-cd.readthedocs.io/en/stable/user-guide/build-environment/

    tested it in argocd and this works , i'm getting the correct cluster version and created a configmap with all api versions issue: https://github.com/crumbhole/argocd-lovely-plugin/issues/57

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: lovely-test
      namespace: lovely-test
    data:
      apiVersions.txt: |
        {{ .Capabilities.APIVersions }}
    
    opened by martijnvdp 2
  • Lovely with helm-argocd-vault-replacer

    Lovely with helm-argocd-vault-replacer

    I've configured lovely plugin with vault-replacer, and trying to use helm-argocd-vault-replacer as plugin for lovely. My use case is that we have in-house maintained Helm chart, that in one of it's secret retrieves Vault secret like this:

    stringData:
      sftp.json: "<secret:sftp/data/login/{{ .Values.sftp.environment }}/users~{{ .Values.sftp.userName }}>"
    

    As values are used in the secret template, I need to first render the Helm chart before filling in the secret templates.

    My Application spec looks like:

        spec:
          source:
            path: 'deploy'
            plugin:
              name: argocd-lovely-plugin
              env:
                - name: LOVELY_PLUGINS
                  value: helm-argocd-vault-replacer
                - name: LOVELY_PREPROCESSORS
                  value: sed -i 's/<<environment>>/{{environment}}/g' values.yaml || true
    

    Error I get is:

    `argocd-lovely-plugin` failed exit status 1: 2022/09/27 05:19:57 exit status 127: bash: line 1: helm-argocd-vault-replacer: command not found`
    

    Looking at source code in lovely plugin, all it tries is to execute plugins as commands. Are plugins in argo-cd configmap relevant at all as plugins for lovely, and can above scenario work at all?

    opened by paveq 2
  • Multiple charts in the same application could be handled better.

    Multiple charts in the same application could be handled better.

    Because both charts are rendered with the same name (ARGOCD_APP_NAME), there are issues in most cases.

    Provide a way to override this on a per chart basis. Can we do something automatically perhaps, like postpend the directory name?

    opened by Joibel 1
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    This repository currently has no open or pending branches.

    Detected dependencies

    dockerfile
    Dockerfile
    • golang 1.19.3
    • alpine 3.17.0
    github-actions
    .github/workflows/ci.yaml
    • actions/checkout v3
    • beaujr/gogitops-action v0.2
    • actions/checkout v3
    • actions/setup-go v3
    • actions/checkout v3
    • docker/setup-qemu-action v2
    • docker/setup-buildx-action v2
    • docker/login-action v2
    • docker/build-push-action v3
    .github/workflows/codeql-analysis.yml
    • actions/checkout v3
    • github/codeql-action v2
    • github/codeql-action v2
    • github/codeql-action v2
    .github/workflows/pull.yaml
    • actions/checkout v3
    • beaujr/gogitops-action v0.2
    • actions/checkout v3
    • actions/setup-go v3
    • actions/checkout v3
    • AbsaOSS/k3d-action v2
    • actions/checkout v3
    • docker/setup-qemu-action v2
    • docker/setup-buildx-action v2
    • docker/build-push-action v3
    .github/workflows/release.yaml
    • actions/checkout v3
    • wangyoucao577/go-release-action v1.33
    • actions/checkout v3
    • little-core-labs/get-git-tag v3.0.2
    • docker/setup-qemu-action v2
    • docker/setup-buildx-action v2
    • docker/login-action v2
    • docker/build-push-action v3
    gomod
    go.mod
    • go 1.19
    • github.com/evanphx/json-patch v5.6.0+incompatible
    • github.com/otiai10/copy v1.9.0
    • gopkg.in/yaml.v3 v3.0.1
    • sigs.k8s.io/kustomize/api v0.12.1
    • sigs.k8s.io/kustomize/kyaml v0.13.10
    • sigs.k8s.io/yaml v1.3.0

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
  • Feeding sensitive values to Helm over standard input

    Feeding sensitive values to Helm over standard input

    Context

    I want to feed Helm with decrypted secrets, ideally without storing them to disk. My secrets are stored encrypted in the Git repository with SOPS. As a plain shell command it would look like this: sops --decrypt secrets.enc.yaml | helm template $name . -f -.

    This would automatically pick up the values.yaml file in the directory but it would also pass the decrypted values in secrets.enc.yaml via stdin to helm, effectively merging the values together. Obviously the SOPS binary, configuration and keys would need to be in-place but that is not a concern for the plugin.

    The problem

    It seems that I cannot specify additional values files on disk for the Helm processor, let alone pass something to Helm via stdin. I need something to happen before the Helm command kicks off that generates values, which are then fed via stdin to Helm.

    Options

    I've looked at the options at my disposal.

    ARGOCD_ENV_LOVELY_PREPROCESSORS

    As far as I can see, this can only modify files on disk for further processing. My use-case is to not decrypt the secrets to disk. So the idea of a prepocessor is what I'm looking for, but it needs to be able to 'feed' the Helm command via stdin.

    ARGOCD_ENV_LOVELY_HELM_MERGE

    I do not know upfront what the contents of my secrets will be. Also, I'd rather not put it in ENV variables for additional security.

    Plugins

    Plugins seem to run after Helm/Kustomize which makes them useless for my use-case. All the magic is happening within the Helm chart. I don't want to patch/correct it afterwards. I don't want to dig into the Helm chart and see how they use the secret values to implement them on my own later in the 'pipeline'.

    Since plugins implement the idea of Linux pipe, this is exactly what I need, only I need it to run before Helm kicks off. Passing the output of the previous plugins to Helm.

    Next steps

    Maybe I've overlooked/missed options that can work for my use case. Otherwise I'd be happy to collaborate on a design and help implement the code (I'm proficient in Go) if the added value is sufficient. I understand that we should probably design for the generic case, SOPS is just my implementation but others should be free to use whatever they want.

    enhancement 
    opened by iverberk 4
  • Feedback about lovely plugin trial

    Feedback about lovely plugin trial

    Dear all, I am working in MonoRepo<=>Multi-k8s-clusters environment. Here is my inventory repository structure my GitlabCI pipeline is browsing to build deployment manifests to be scrapped by Argo App. Capture d’écran du 2022-07-11 10-40-19

    I had in mind to move the process of my GitlabCI pipeline into Lovely plugin. Here are the main caveats I do experience

    Vault interop

    Vault Replacer plugin is configured as a plugin to lovely by the means of env variable ARGOCD_ENV_LOVELY_PLUGINS. As a result, Vault Replacer is gonna run in preprocessing step in order to resolve secret in these cases:

    Deploy a helm chart in accordance with its values. One of the values will be taken from Hashicorp Vault.
    Deploy a separate kubernetes secret, with the value being taken from Hashicorp Vault.
    Deploy a kubernetes configmap using Kustomize. Some of the data within the configmap will be taken from Hashicorp Vault.
    

    Vault Replacer does only support Kubernetes Auth method. This method is not supported by my central Vault server. As a workaround, I successfully interop lovely plugin with ArgoCD Vault plugin with approle authentication. ArgoCD Vault plugin takes the PATH of the yaml files to resolve and sends the result as the aggregate standard output i.e. we should iterate each yaml file to keep the directory tree like Vault Replacer which performs this process in the box. Vault plugin cannot do it out of the box along preprocessing step by the means of the basic ArgoCD configManagementPlugins syntax.

    As a consequence, I trigger Vault Plugin once Lovely Plugin is processed. Hence, we support only here above use cases #2 and #3.

    Overlays support

    As detailed in ArgoCD Lovely plugin help page, overlays mechanisms are not supported:

    • neither from an Helm value file perspective : --values (or -f) to specify a YAML file with overrides. This can be specified multiple times and the rightmost file will take precedence,
    • nor from a Kustomize perspective.

    However, application sets should be investigated furthermore to mitigate/tackle this caveat.

    Environment variables

    ArgoCD Lovely plugin does not support environnement variables. Helm value file or manifest file must be fully resolved prior to be processed. Also ArgoCD Lovely plugin does not enhance Kustomize processing which does build the manifests from files exclusively, and no information would come from runtime. In essence, no information can be loaded from the command-line arguments or environment variables during the manifest build phase.

    This caveat could however be solved by the means of a preprocessor plugin which would browse the working application directory and envsubst the yaml files.

    Thanks & Best Regards. Richard

    opened by rcarre 4
  • Support private helm (deps) repositories

    Support private helm (deps) repositories

    Hello,

    looking at the code below, I assume private repositories are not supported

    func (h helmProcessor) repoEnsure(path string, name string, url string) error {
    	_, err := h.helmDo(path, `repo`, `add`, name, url)
    	return err
    }
    

    I was wondering if we could provide a limited support by leveraging ArgoCD env variables like: GIT_USERNAME and GIT_PASSWORD, assuming the same credentials for source repo, and all other repo found underneath. It would work in my case but maybe too limited for community.

    ++ thanks

    opened by romuduck 14
Releases(0.9.0)
Owner
null
Automating Kubernetes Rollouts with Argo and Prometheus. Checkout the demo URL below

observe-argo-rollout Demo for Automating and Monitoring Kubernetes Rollouts with Argo and Prometheus Performing Demo The demo can be found on Katacoda

null 33 Nov 16, 2022
Simple example using Git actions + Argo CD + K8S + Docker and GO lang

CICD-simple_example Simple example using Git actions + Argo CD + K8S + Docker and GO lang Intro Pre reqs Have an ArgoCD account and Installed. Docker

Diogo Miyake 1 Oct 28, 2021
Kubectl Locality Plugin - A plugin to get the locality of pods

Kubectl Locality Plugin - A plugin to get the locality of pods

John Howard 6 Nov 18, 2021
A kubernetes plugin which enables dynamically add or remove GPU resources for a running Pod

GPU Mounter GPU Mounter is a kubernetes plugin which enables add or remove GPU resources for running Pods. This Introduction(In Chinese) is recommende

XinYuan 80 Nov 23, 2022
A middleware plugin for Traefik which replace a header in the response

Rewrite Header Rewrite header is a middleware plugin for Traefik which replace a header in the response Configuration Static pilot: token: "xxxx" e

vincentinttsh 1 Feb 11, 2022
A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

Tom Granot 2 Mar 9, 2022
A simple project (which is visitor counter) on kubernetesA simple project (which is visitor counter) on kubernetes

k8s playground This project aims to deploy a simple project (which is visitor counter) on kubernetes. Deploy steps kubectl apply -f secret.yaml kubect

null 12 Nov 10, 2022
Tool which gathers basic info from apk, which can be used for Android penetration testing.

APKSEC Tool which gathers basic info from apk, which can be used for Android penetration testing. REQUIREMENTS AND INSTALLATION Build APKSEC: git clon

Jayateertha Guruprasad 3 Sep 2, 2022
An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

Grafana Complementary Operator A grafana which complements grafana-operator for custom features which are not feasible to be merged into core operator

Snapp Cab Incubators 6 Aug 16, 2022
An Alert notification service is an application which can receive alerts from certain alerting systems like System_X and System_Y and send these alerts to developers in the form of SMS and emails.

Alert-System An Alert notification service is an application which can receive alerts from certain alerting systems like System_X and System_Y and sen

null 0 Dec 10, 2021
Drone plugin for trigger Jenkins jobs.

drone-jenkins Drone plugin for trigger Jenkins jobs. Setup the Jenkins Server Setup the Jenkins server using the docker command: $ docker run \ --na

Bo-Yi Wu 35 Sep 27, 2022
Dothill (Seagate) AssuredSAN dynamic provisioner for Kubernetes (CSI plugin).

Dothill-csi dynamic provisioner for Kubernetes A dynamic persistent volume (PV) provisioner for Dothill AssuredSAN based storage systems. Introduction

Enix 23 Oct 11, 2022
Fast docker image distribution plugin for containerd, based on CRFS/stargz

[ ⬇️ Download] [ ?? Browse images] [ ☸ Quick Start (Kubernetes)] [ ?? Quick Start (nerdctl)] Stargz Snapshotter Read also introductory blog: Startup C

containerd 746 Nov 28, 2022
Kubectl plugin to ease sniffing on kubernetes pods using tcpdump and wireshark

ksniff A kubectl plugin that utilize tcpdump and Wireshark to start a remote capture on any pod in your Kubernetes cluster. You get the full power of

Eldad Rudich 2.5k Nov 21, 2022
MenuStart plugin to nwg-panel, also capable of working standalone

nwg-menu This code provides the MenuStart plugin to nwg-panel. It also may be used standalone, however, with a little help from command line arguments

Piotr Miller 27 Sep 9, 2022
Snowflake grafana datasource plugin allows Snowflake data to be visually represented in Grafana dashboards.

Snowflake Grafana Data Source With the Snowflake plugin, you can visualize your Snowflake data in Grafana and build awesome chart. Get started with th

Michelin 36 Nov 8, 2022
A helm v3 plugin to get values from a previous release

helm-val helm-val is a helm plugin to fetch values from a previous release. Getting started Installation To install the plugin: $ helm plugin install

Hamza ZOUHAIR 12 Feb 8, 2022
A helm v3 plugin to adopt existing k8s resources into a new generated helm chart

helm-adopt Overview helm-adopt is a helm plugin to adopt existing k8s resources into a new generated helm chart, the idea behind the plugin was inspir

Hamza ZOUHAIR 32 Nov 15, 2022
DigitalOcean Droplets target plugin for HashiCorp Nomad Autoscaler

Nomad DigitalOcean Droplets Autoscaler The do-droplets target plugin allows for the scaling of the Nomad cluster clients via creating and destroying D

Johan Siebens 39 Oct 24, 2022