In this repository, the development of the gardener extension, which deploys the flux controllers automatically to shoot clusters, takes place.

Gardener Extension for Flux

reuse compliant

Project Gardener implements the automated management and operation of Kubernetes clusters as a service. Its main principle is to leverage Kubernetes concepts for all of its tasks.

This controller implements Gardener's extension contract for the shoot-flux extension. An example for a ControllerRegistration resource that can be used to register this controller to Gardener can be found here.

Please find more information regarding the extensibility concepts and a detailed proposal here.

Table of Contents

What does this package provide?

The general idea of this controller is to install the fluxcd controllers together with a flux gitrepository resource and a flux kustomization resource into newly created shoot clusters. In consequence, your fresh shoot cluster will be reconciled to the state defined in the Git repository by the fluxcd controllers. Thus, this extension provides a general approach to install addons to shoot clusters.

Example use case

Let's say you have a CI-workflow which needs a kubernetes cluster with some basic components, such as cert-manager or minio. Thus, your CI-workflow creates a Shoot on which you perform all your actions. However, the process of creating the Shoot and installing the needed components takes for several minutes holding you back from effectively running your CI-pipeline. In this case, you can make use of this extension and pre-spawn Shoots, which are automatically equipped with fluxcd and reconciled to the state defined in a Git repository. Of course, there is a trade-off, as your pre-spawned shoots will consume some resources (either in terms of money, if running in a public cloud, or in terms of physical resources). However, in certain scenarios, this approach will dramatically improve the effectiveness of you CI-workflow.

How to...

Use it as a gardener operator

Of course, you need to apply the controller-registration resources to the garden cluster first. You can find the corresponding yaml-files in our releases. Moreover, you will need some configuration pointing to the git repository you want to use as a basis for flux. This configuration is provided on a per-project basis via a ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: flux-config
  namespace: YOUR-PROJECT-NAMESPACE
data:
  fluxVersion: v0.29.5 # optional, if not defined the latest release will be used
  repositoryUrl: ssh://[email protected]/THE-OWNER/THE-REPO
  repositoryBranch: main
  repositoryType: private

At the time writing this, the extension-controller will generate a new SSH-keypair for you, if the repositoryType is set to private. This keypair will be stored in the garden cluster as a Secret and you will need to make the public key available to you git SSH-server, so that flux can read from your repository. Note: On e.g. github.com, this can be achieved by adding a deploy key to your Git repository.

Next you can deploy a Shoot with the shoot-flux extension enabled:

apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
metadata:
  name: bar
  namespace: garden-foo
spec:
  extensions:
  - type: shoot-flux
...

Then, your shoot cluster should be reconciled to the declarative definition in your Git repository.

Develop this extension locally

Prerequisites

  • A local installation of Go
  • A Gardener (could also be the local setup)

Running and Debugging the controller

  • Place the kubeconfig of the Seed cluster in PATH-TO-REPO-ROOT/dev/kubeconfig
  • Set ignoreResources=true and replicaCount=0 in PATH-TO-REPO-ROOT/charts/gardener-extension-shoot-flux/values.yaml
  • Generate the controller-registration.yaml by e.g.
./vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh shoot-flux charts/gardener-extension-shoot-flux v0.0.1 example/controller-registration.yaml Extension:shoot-flux
  • Apply it to the garden cluster:
kubectl apply -f PATH-TO-REPO-ROOT/example/controller-registration.yaml
  • Run and debug the controller with dlv by:
dlv debug ./cmd/gardener-extension-shoot-flux -- --kubeconfig=dev/kubeconfig.yaml  --ignore-operation-annotation=true --leader-election=false --gardener-version="v1.44.4"
  • You can set breakpoints now, and instruct dlv to run the controller by entering "c" into the dlv commandline.
  • Lastly, deploy a ConfigMap pointing to a git repository and a Shoot with the shoot-flux extension enabled (as explained above).

General concepts and how it works internally

Generally, this extension was motivated by the idea of enabling Gardener operators to pre-configure Shoot clusters with addons. Obviously, a declarative approach to the configuration makes sense in this scenario. Consequently fluxcd was chosen as a more general configuration tool for Kubernetes clusters. From this basis, a Gardener operator can track the configuration of Shoot clusters in Git repositories and configure all Shoots in a project to use a configuration via a ConfigMap in the project namespace. This overall workflow is depicted in the block diagram below.

                      +--------------------------------------------------------+
                      |  Gardener operator                                     |
                      +--------------------------------------------------------+
                      |  - A human being                                       +-----------------------+
                      |                                                        |                       |
                      |                                                        |                       |
                      +-----+--------------------------------------------------+                       |configures SSH-key
                            |                  ^                                                       |
                            |                  |                                                       |
                            |delploys          |read SSH-key                                           |
                            |Configmap         |                                                       |
                            |                  |                                                       |
                            v                  |                                                       |
                      +------------------------+--------------------------------+                      v
                      |Garden cluster                                           |           +------------------------------------+
                      +-------------------------+------------------------+------+           |Git repository                      |
                      |Projetct 1               |Project 2               |...   |           +------------------------------------+
                      +-------------------------+------------------------+------+           |                                    |
                      |- Configmap containing   |- Configmap containing  |      |           |- Configuration for shoot clusters  |
                      |  flux configuration     |  flux configuration    |      |           |                                    |
                      |                         |                        |...   |           |                                    |
             +------->|- ControllerRegistration |- ControllerRegistration|      |           |                                    |
             |        |                         |                        |      |           |                                    |
             |        |- Shoot with extension   |- Shoot with extension  |      |           +------------------------------------+
             |        |  enabled                |  enabled               |      |                ^
             |        +-------------------------+------------------------+------+                |
read config  |                                                                                   |
and generate |                                                                                   |reconcile
SSH-keys     |                                                                                   |
             |        +----------------------+         +------------------------+                |
             |        |Seed cluster          |         |Shoot cluster           |                |
             |        +----------------------+         +-------------------+----+                |
             |        |- Controller watching |         |- Flux controllers +----+----------------+
             +--------+> extension resource  |         |                        |
                      |     |                |         |- GitRepository resource|
                      |     |deploys         |         |                        |
                      |     |                |         |- A main kustomization  |
                      |     v                |         |                        |
                      |- Managed resources   |         |                        |
                      |  for flux controllers|         |                        |
                      |  and flux config     |         |                        |
                      +----------------------+         +------------------------+

Wait! How does the controller in the Seed cluster communicate to the garden cluster? Actually, we are just using the Secret containing the gardenlet-kubeconfig which should be available, when the gardenlet is run inside the Seed cluster. Of course, this is not a rock solid solution, but it was an easy way to achieve the overall goal by simple means.

Last remarks

This extensions is still in a preliminary state and contains some hacks. However, the work and testing is still ongoing and the extension will be continuously improved. In general, you could consider the current state of the extension as kind of a minimal working example for Gardener extensions, as it is very low complex to this point.

Owner
23 Technologies GmbH
We make cloud native technologies viable for the industry
23 Technologies GmbH
Comments
  • GET https://api.github.com/repos/fluxcd/flux2/releases/latest: 403 API rate limit exceeded

    GET https://api.github.com/repos/fluxcd/flux2/releases/latest: 403 API rate limit exceeded

    How to categorize this issue?

    /area scalability /kind bug

    What happened: On a "random" shoot, the extension produced this error

    task "Waiting until extension resources are ready" failed: Error while waiting for Extension shoot--23ke-ci--23ke-run-d0ea/shoot-flux to become ready: error during reconciliation: Error reconciling extension: GET https://api.github.com/repos/fluxcd/flux2/releases/latest: 403 API rate limit exceeded for 168.119.x.x. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) [rate reset in 15m38s]

    I just found that noteworthy but maybe you already hit something like that during development. Not sure if there is any room to hit the github api less frequently, but even then I believe it is unavoidable that a large enough deployment (especially behind f.e. a common NAT IP) would be hitting that rate limit at some point.

    My gut instinct is that using "latest" is not a good idea due to breaking flux changes and non-declarative anyway and maybe selecting a flux version should just be mandatory.

  • Bump github.com/fluxcd/flux2 from 0.28.4 to 0.29.0

    Bump github.com/fluxcd/flux2 from 0.28.4 to 0.29.0

    Bumps github.com/fluxcd/flux2 from 0.28.4 to 0.29.0.

    Release notes

    Sourced from github.com/fluxcd/flux2's releases.

    v0.29.0

    Flux v0.29.0 comes with new features and improvements. Users are encouraged to upgrade for the best experience.

    Breaking changes

    source-controller
    • From this release on, the RUNTIME_NAMESPACE environment variable is no longer taken into account to configure the advertised HTTP/S address of the storage. Instead, variable substitution must be used, as described in the changelog entry for v0.5.2.
    • Use of file-based KubeConfig options are now permanently disabled (e.g. TLSClientConfig.CAFile, TLSClientConfig.KeyFile, TLSClientConfig.CertFile and BearerTokenFile). The drive behind the change was to discourage insecure practices of mounting Kubernetes tokens inside the controller's container file system.
    • Use of TLSClientConfig.Insecure in KubeConfig file is disabled by default, but can be enabled at controller level with the flag --insecure-kubeconfig-tls.
    • Use of ExecProvider in KubeConfig file is now disabled by default, but can be enabled at controller level with the flag --insecure-kubeconfig-exec.

    Features and improvements

    Notification Improvements

    A new notification is now emitted to identify recovery from failures. It is triggered when a failed reconciliation is followed by a successful one, and the notification message is the same that's sent in usual successful source reconciliation message about the stored artifact.

    In-memory cache for HelmRepository

    The opt-in in-memory cache for HelmRepository addresses issues where the index file is loaded and unmarshalled in concurrent reconciliation resulting in a heavy memory footprint. It can be configured using the flags: --helm-cache-max-size, --helm-cache-ttl, --helm-cache-purge-interval.

    Configurable retention of Source Artifacts

    Garbage Collection is enabled by default, and now its retention options are configurable with the flags: --artifact-retention-ttl (default: 60s) and --artifact-retention-records (default: 2). They define the minimum time to live and the maximum amount of artifacts to survive a collection.

    Configurable Key Exchange Algorithms for SSH connections

    The Key Exchange Algorithms used when establishing SSH connections are based on the defaults configured upstream in go-git and golang.org/x/crypto. Now this can be overriden with the flag --ssh-kex-algos. Note this applies to the go-git gitImplementation or the libgit2 gitImplementation but only when Managed Transport is being used.

    Configurable Exponential Back-off retry settings

    The exponential back-off retry can be configured with the new flags: --min-retry-delay (default: 750ms) and --max-retry-delay (default: 15min). Previously the defaults were set to 5ms and 1000s, which in some cases impaired the controller's ability to self-heal (e.g. retrying failing SSH connections).

    Experimental managed transport for libgit2 Git implementation

    Managed Transport for libgit2 now introduces self-healing capabilities, to recover from failure when long-running connections become stale.

    SOPS refactored and optimized

    SOPS implementation was refactored to include various improvements and extended code coverage. Age identities are now imported once and reused multiple times, optimizing CPU and memory usage between decryption operations.

    Helm chart directory loader improvements

    Introduction of a secure directory loader which improves the handling of Helm charts paths.

    Components Changelog

    ... (truncated)

    Commits
    • 5346c1c Merge pull request #2652 from fluxcd/update-components
    • baadaa0 tests/azure: Update toolkit components
    • 224a1ce Update toolkit components
    • 52f1bfe Merge pull request #2646 from aryan9600/fix-mask-sops
    • 5c9cbe6 handle secret types properly while masking sops data
    • e25bb74 Merge pull request #2649 from fluxcd/update-deps
    • c2f465e Update dependencies
    • 6bbbf16 tests/azure: update dependencies
    • c5cdb70 Merge pull request #2617 from fluxcd/update-components
    • 2955cd7 Update toolkit components
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Generic code clean-up

    Generic code clean-up

    How to categorize this PR? /area cleanup

    What this PR does / why we need it: This PR mainly cleans up some rough edges of the current implementation and should not change any behavior implemented so far.

  • Revendor: Gardener to 1.54 and flux to 0.32.0

    Revendor: Gardener to 1.54 and flux to 0.32.0

    Bumps github.com/fluxcd/flux2 from 0.29.5 to 0.32.0.

    Release notes

    Sourced from github.com/fluxcd/flux2's releases.

    v0.32.0

    Highlights

    Flux v0.32.0 comes with support for distributing Kubernetes manifests, Kustomize overlays and Terraform code as OCI artifacts. For more information please see the Flux OCI documentation.

    New features

    • New Flux CLI commands flux push|pull|tag artifact for publishing OCI Artifacts to container registries.
    • New source type OCIRepository for fetching OCI artifacts from container registries.
    • Resolve Helm dependencies from OCI for charts defined in Git.

    Components changelog

    CLI Changelog

    v0.31.5

    Highlights

    Flux v0.31.5 is a patch release that comes with fixes. Users are encouraged to upgrade for the best experience.

    Fixes

    • Fix ImageRepository public repository scan for unconfigured provider registries

    Improvements

    • Improve Helm OCI Chart to work with registries that don't support listing tags

    Component changelog

    CLI Changelog

    ... (truncated)

    Commits
    • f2d7490 Merge pull request #2966 from fluxcd/update-components
    • d4169aa Update toolkit components
    • c06072d Merge pull request #2856 from fluxcd/oci
    • 7e2d235 Merge pull request #2971 from fluxcd/trace-ocirepo
    • b810aea Make flux trace work with OCIRepository
    • 75a879c OCI docs improvements
    • d4c5a13 Add examples for pushing artifacts with GH Actions
    • d4718f6 Improve artifact commands docs
    • ac9b3d1 Update controllers with OCI support
    • 7c7e76f Use fluxcd/pkg/oci/client
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Download flux-install.yaml only once

    Download flux-install.yaml only once

    This should provide a hotfix for hitting the Github-API ratelimits

    Signed-off-by: Jens Schneider [email protected]


    How to categorize this PR?

    /area robustness /kind enhancement

    What this PR does / why we need it: It prevents from hitting GitHub ratelimits just because of a request for the current latest version of fluxcd.

    Which issue(s) this PR fixes: Fixes #6

    Special notes for your reviewer:

    Release note:

    Hitting GitHub ratelimits due to multiple requests for the latest version of fluxcd are avoided
    
  • start controller-runtime client cache

    start controller-runtime client cache

    I guess it was done automatically before. Without this, the reconiliation fails with (coming from the first call to clientGardenlet.Get())

    {"level":"error","ts":"2022-08-05T14:14:08.810Z","logger":"shoot_flux_lifecycle_controller","msg":"Error","namespace":"shoot--23ke-ci--23ke-run-4259","name":"shoot-flux","error":"Error reco nciling extension: the cache is not started, can not read objects","stacktrace":"github.com/gardener/gardener/extensions/pkg/controller.(*statusUpdater).Error\n\t/go/src/github.com/23techno logies/gardener-extension-shoot-flux/vendor/github.com/gardener/gardener/extensions/pkg/controller/status.go:132\ngithub.com/gardener/gardener/extensions/pkg/controller/extension.(*reconcil er).reconcile\n\t/go/src/github.com/23technologies/gardener-extension-shoot-flux/vendor/github.com/gardener/gardener/extensions/pkg/controller/extension/reconciler.go:156\ngithub.com/garden er/gardener/extensions/pkg/controller/extension.(*reconciler).Reconcile\n\t/go/src/github.com/23technologies/gardener-extension-shoot-flux/vendor/github.com/gardener/gardener/extensions/pkg /controller/extension/reconciler.go:138\ngithub.com/gardener/gardener/pkg/controllerutils/reconciler.(*operationAnnotationWrapper).Reconcile\n\t/go/src/github.com/23technologies/gardener-ex tension-shoot-flux/vendor/github.com/gardener/gardener/pkg/controllerutils/reconciler/operation_annotation_wrapper.go:73\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller ).Reconcile\n\t/go/src/github.com/23technologies/gardener-extension-shoot-flux/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:121\nsigs.k8s.io/controller-runtim e/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/src/github.com/23technologies/gardener-extension-shoot-flux/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/con troller.go:320\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/src/github.com/23technologies/gardener-extension-shoot-flux/vendor/sigs.k8s.i o/controller-runtime/pkg/internal/controller/controller.go:273\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/go/src/github.com/23technologies/garde ner-extension-shoot-flux/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:234"}

  • revendor: go 1.18, gardener 1.51 and k8s 0.24 and more

    revendor: go 1.18, gardener 1.51 and k8s 0.24 and more

    How to categorize this PR?

    /area robustness /kind cleanup

    What this PR does / why we need it: Updates various components. The only real upgrade that I wanted to do was k8s.io 0.24 (to be able to connect to kube-apiserver 1.24.x). The others seemed necessary or were an easy way to achieve overall compatibility again. The go upgrade to 1.18 is to be on the same go version as gardener/gardener 1.51.

  • Handle error from gardenclient.NewClientFromSecret

    Handle error from gardenclient.NewClientFromSecret

    How to categorize this PR?

    /area quality /kind bug

    What this PR does / why we need it: Instead of crashing this allows to return errors like

    could not add controllers to manager: error discovering kubernetes version: unsupported kubernetes version "v1.24.3"

  • New features and fixes

    New features and fixes

    How to categorize this PR?

    /area quality /kind enhacement

    What this PR does / why we need it:

    • Dev changes

      • Refactors the code a bit
      • Performs revendoring
      • Adds the hack directory, as it is needed for revendoring
    • Feature changes

      • Let's the user of a shoot cluster modify the flux controllers.

    Which issue(s) this PR fixes: Fixes #

    Special notes for your reviewer:

    Release note:

    NONE
    
  • Add basic tests

    Add basic tests

    How to categorize this PR?

    /area testing

    What this PR does / why we need it: Add some basic tests in order to check whether we can fetch fluxcd from upstream

    Which issue(s) this PR fixes: Fixes #

    Special notes for your reviewer:

    Release note:

    NONE
    
  • Allow to select a version of fluxcd

    Allow to select a version of fluxcd

    How to categorize this PR?

    /area quality

    What this PR does / why we need it: See title

    Which issue(s) this PR fixes:

    Special notes for your reviewer:

    Release note:

    NONE
    
Flux prometheus grafana-example - A tool for keeping Kubernetes clusters in sync with sources ofconfiguration
Flux prometheus grafana-example - A tool for keeping Kubernetes clusters in sync with sources ofconfiguration

Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration (like Git repositories), and automating updates to configuration when there is new code to deploy.

Feb 1, 2022
A Terraform controller for Flux

tf-controller A Terraform controller for Flux Quick start Here's a simple exampl

Dec 29, 2022
Keep updated about all deploys on Tsuru

Snitch Keep updated about each deploy via Tsuru. This program will notify your team and many tools when someone has deployed any application via Tsuru

Sep 27, 2022
Simple-go-api - This porject deploys a simple go app inside a EKS Cluster

SimpleGoApp This porject deploys a simple go app inside a EKS Cluster Prerequisi

Jan 19, 2022
Go-gke-pulumi - A simple example that deploys a GKE cluster and an application to the cluster using pulumi

This example deploys a Google Cloud Platform (GCP) Google Kubernetes Engine (GKE) cluster and an application to it

Jan 25, 2022
KinK is a helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Designed to ease clusters up for fast testing with batteries included in mind.
KinK is a helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Designed to ease clusters up for fast testing with batteries included in mind.

kink A helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Table of Contents kink (KinD in Kubernetes) Introduction How it works ?

Dec 10, 2022
PolarDB Stack is a DBaaS implementation for PolarDB-for-Postgres, as an operator creates and manages PolarDB/PostgreSQL clusters running in Kubernetes. It provides re-construct, failover swtich-over, scale up/out, high-available capabilities for each clusters.
PolarDB Stack is a DBaaS implementation for PolarDB-for-Postgres, as an operator creates and manages PolarDB/PostgreSQL clusters running in Kubernetes. It provides re-construct, failover swtich-over, scale up/out, high-available capabilities for each clusters.

PolarDB Stack开源版生命周期 1 系统概述 PolarDB是阿里云自研的云原生关系型数据库,采用了基于Shared-Storage的存储计算分离架构。数据库由传统的Share-Nothing,转变成了Shared-Storage架构。由原来的N份计算+N份存储,转变成了N份计算+1份存储

Nov 8, 2022
kubequery is a Osquery extension that provides SQL based analytics for Kubernetes clusters

kubequery powered by Osquery kubequery is a Osquery extension that provides SQL based analytics for Kubernetes clusters kubequery will be packaged as

Dec 27, 2022
Client extension for interacting with Kubernetes clusters from your k6 tests.

⚠️ This is a proof of concept As this is a proof of concept, it won't be supported by the k6 team. It may also break in the future as xk6 evolves. USE

Jan 2, 2023
Linux Controllers for Kubernetes

Tambourine Kubelet replacement with Built in Linux extensions Development Success: Install, Manage, and Observe a new systemd service from Kubernetes.

Jun 2, 2021
Go library to create resilient feedback loop/control controllers.

Gontroller A Go library to create feedback loop/control controllers, or in other words... a Go library to create controllers without Kubernetes resour

Jan 1, 2023
Write controller-runtime based k8s controllers that read/write to git, not k8s

Git Backed Controller The basic idea is to write a k8s controller that runs against git and not k8s apiserver. So the controller is reading and writin

Dec 10, 2021
ControllerMesh is a solution that helps developers manage their controllers/operators better.
ControllerMesh is a solution that helps developers manage their controllers/operators better.

ControllerMesh ControllerMesh is a solution that helps developers manage their controllers/operators better. Key Features Canary update: the controlle

Jan 6, 2023
Golang Integration Testing Framework For Kong Kubernetes APIs and Controllers.
Golang Integration Testing Framework For Kong Kubernetes APIs and Controllers.

Kong Kubernetes Testing Framework (KTF) Testing framework used by the Kong Kubernetes Team for the Kong Kubernetes Ingress Controller (KIC). Requireme

Dec 20, 2022
Controller-check - Run checks against K8s controllers to verify if they meets certain conventions

controller-check Run checks against K8s controllers to verify if they meets cert

Jan 4, 2022
ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.
ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.

ArgoCD Interlace ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it

Dec 14, 2022
General Pod Autoscaler(GPA) is a extension for K8s HPA, which can be used not only for serving, also for game.
General Pod Autoscaler(GPA) is a extension for K8s HPA, which can be used not only for serving, also for game.

Introduction General Pod Autoscaler(GPA) is a extension for K8s HPA, which can be used not only for serving, also for game. Features Compatible with a

Aug 19, 2022
An image server which automatically optimize non webp and avif images to webp and avif images

go-imageserver go-imageserver is an image server which automatically optimize no

Apr 18, 2022
Opinionated platform that runs on Kubernetes, that takes you from App to URL in one step.
Opinionated platform that runs on Kubernetes, that takes you from App to URL in one step.

Epinio Opinionated platform that runs on Kubernetes, that takes you from App to URL in one step. Contents Epinio Contents What problem does Epinio sol

Nov 13, 2022