A tool for managing complex enterprise Kubernetes environments as code.

Overview

kubecfg

Go Report Card

A tool for managing Kubernetes resources as code.

kubecfg allows you to express the patterns across your infrastructure and reuse these powerful "templates" across many services, and then manage those templates as files in version control. The more complex your infrastructure is, the more you will gain from using kubecfg.

Yes, Google employees will recognise this as being very similar to a similarly-named internal tool ;)

Install

Pre-compiled executables exist for some platforms on the Github releases page.

On macOS, it can also be installed via Homebrew: brew install kubecfg

To build from source:

% PATH=$PATH:$GOPATH/bin
% go get github.com/kubecfg/kubecfg

Quickstart

# Show generated YAML
% kubecfg show -o yaml examples/guestbook.jsonnet

# Create resources
% kubecfg update examples/guestbook.jsonnet

# Modify configuration (downgrade gb-frontend image)
% sed -i.bak '\,gcr.io/google-samples/gb-frontend,s/:v4/:v3/' examples/guestbook.jsonnet
# See differences vs server
% kubecfg diff examples/guestbook.jsonnet

# Update to new config
% kubecfg update examples/guestbook.jsonnet

# Clean up after demo
% kubecfg delete examples/guestbook.jsonnet

Features

  • Supports JSON, YAML or jsonnet files (by file suffix).
  • Best-effort sorts objects before updating, so that dependencies are pushed to the server before objects that refer to them.
  • Additional jsonnet builtin functions. See lib/kubecfg.libsonnet.
  • Optional "garbage collection" of objects removed from config (see --gc-tag).

Infrastructure-as-code Philosophy

The idea is to describe as much as possible about your configuration as files in version control (eg: git).

Changes to the configuration follow a regular review, approve, merge, etc code change workflow (github pull-requests, phabricator diffs, etc). At any point, the config in version control captures the entire desired-state, so the system can be easily recreated in a QA cluster or to recover from disaster.

Jsonnet

Kubecfg relies heavily on jsonnet to describe Kubernetes resources, and is really just a thin Kubernetes-specific wrapper around jsonnet evaluation. You should read the jsonnet tutorial, and skim the functions available in the jsonnet std library.

Community

Click here to sign up to the Kubernetes Slack org.

Comments
  • Add parseHelmChart builtin

    Add parseHelmChart builtin

    Add a new parseHelmChart native function that expands helm charts into jsonnet objects. The new code links helm (v3) libraries directly, and does not require nor use the external helm command.

    Note the helm chart is provided as an array of bytes (numbers 0-255) - this builtin does not fetch the helm chart. The expectation is that this will be used with another mechanism like the jsonnet importbin statement.

    Fixes #267

    Example usage:

    local kubecfg = import "kubecfg.libsonnet";
    
    local data = importbin "https://charts.jetstack.io/charts/cert-manager-v1.5.3.tgz";
    local cm = kubecfg.parseHelmChart(data, "cert-manager", namespace, {
      // Example values.yaml
      webhook: {replicaCount: 2},
    });
    
    // ... returns a jsonnet object with filename keys from the helm chart
    // and expanded/parsed Kubernetes objects as values.
    
    // The result can be manipulated and used just like any other jsonnet
    // value.
    cm + {
      "cert-manager/templates/webhook-deployment.yaml": [o + {
        spec+: {
          template+: {
            spec+: {
              nodeSelector+: {"kubernetes.io/arch": "amd64"},
            },
          },
        },
      } for o in super["cert-manager/templates/webhook-deployment.yaml"]],
    }
    

    Caveats:

    • Helm 'hooks' are not supported and ignored.
    • Chart sort order is ignored, and the usual kubecfg sort mechanism is used.
    • Probably some other things.
    opened by anguslees 16
  • Add isK8sObject, deepMap and fold jsonnet builtins

    Add isK8sObject, deepMap and fold jsonnet builtins

    Add some helper functions to help manipulate jsonnet structures that conform to kubecfg's usual "nested collections of Kubernetes objects" result structure.

    Specifically they handle:

    • null (ignored)
    • single Kubernetes object
    • Kubernetes v1.List of Kubernetes objects (note other kind-specific list types are not supported)
    • jsonnet array of any of these types (recursively)
    • jsonnet object with values of any of these types (recursively)

    Helper functions added in this commit:

    isK8sObject: returns true if this is a Kubernetes object.

    deepMap: map Kubernetes objects, preserving the original nested structure.

    fold: iterate over Kubernetes objects and accumulate a result.

    gvkName: useful function for fold. Accumulates a two-level nested object by apiVersion.kind, then object name.

    gvkNsName: useful function for fold. Accumulates a three-level nested object by apiVersion.kind, object namespace (or _), then object name.

    opened by anguslees 8
  • #52 limit garbage collection to the namespace scope

    #52 limit garbage collection to the namespace scope

    This addresses https://github.com/kubecfg/kubecfg/issues/52

    Adds a new cli flag --gc-all-namespaces to kubecfg update.

    • When set to false: apply the namespace scope (i.e. default namespace, adjustable with --namespace) to garbage collection
    • When set to true (default): keep behavior unchanged
    automerge 
    opened by muxmuse 6
  • feat: Add helmTemplate builtin

    feat: Add helmTemplate builtin

    This is an import of https://github.com/anguslees/kubecfg-1/tree/helm onto the new kubecfg repository

    Add a new helmTemplate native function that downloads and expands helm charts into jsonnet objects. The new code links helm (v3) libraries directly, and does not require nor use the external helm command.

    Fixes vmware-archive#267

    Example usage:

    local kubecfg = import "kubecfg.libsonnet";
    
    local url = "https://charts.jetstack.io/charts/cert-manager-v1.5.3.tgz";
    local cm = kubecfg.helmTemplate("cert-manager", namespace, url, {
      // Example values.yaml
      webhook: {replicaCount: 2},
    });
    
    // ... returns a jsonnet object with filename keys from the helm chart
    // and expanded/parsed Kubernetes objects as values.
    
    // The result can be manipulated and used just like any other jsonnet
    // value.
    cm + {
      "cert-manager/templates/webhook-deployment.yaml"+: {
        spec+: {
          template+: {
            spec+: {
              nodeSelector+: {"kubernetes.io/arch": "amd64"},
            },
          },
        },
      },
    }
    

    Caveats:

    • Helm 'hooks' are not supported and ignored.
    • Chart sort order is ignored, and the usual kubecfg sort mechanism is used.
    • chartURL argument uses the kubecfg URL-based importer, but will reject relative URLs by default[1].
    • HTTP_PROXY is obeyed, but there is no other cache. The helm chart is re-downloaded on every invocation (for now).
    • Probably some other things.

    [1]: Relative URLs can be enabled using a new --allow-relative-helm-urls flag. URLs are interpreted relative to $PWD currently, even when used by jsonnet from remote URLs. This will change. TODO: Make this consistent with usual relative import semantics, and enable by default.

    opened by primeroz 5
  • Allow output filenames to have yml suffix

    Allow output filenames to have yml suffix

    In our internal project, we have almost 5000 individual YAML files that we generate. For historic reasons, we continue to name the files .yml instead of .yaml.

    By enabling kubecfg to write the files with a .yml suffix, we can produce these files for our CI/CD pipeline measurably faster.

    I used hyperfine to benchmark the current mode (my build of kubecfg, do not specify --format, followed by find | read | mv), vs. the same build of kubecfg with --format=yml, no call to find.

    Benchmark #1: GENMODE=current make generate Time (mean ± σ): 13.384 s ± 0.459 s [User: 79.086 s, System: 19.813 s] Range (min … max): 12.775 s … 14.280 s 10 runs

    Benchmark #2: GENMODE=newkubecfg make generate Time (mean ± σ): 11.166 s ± 0.216 s [User: 73.907 s, System: 9.905 s] Range (min … max): 10.858 s … 11.544 s 10 runs

    Summary 'GENMODE=newkubecfg make generate' ran 1.20 ± 0.05 times faster than 'GENMODE=current make generate'

    opened by mark-rushakoff 4
  • Update module github.com/mkmik/yaml to v2 - autoclosed

    Update module github.com/mkmik/yaml to v2 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/mkmik/yaml | replace | major | v0.0.0-20210505221935-5a0cbc1c4094 -> v2.4.0 |


    Release Notes

    mkmik/yaml

    v2.4.0

    Compare Source

    v2.3.0

    Compare Source

    v2.2.8

    Compare Source

    v2.2.7

    Compare Source

    v2.2.6

    Compare Source

    v2.2.5

    Compare Source

    v2.2.4

    Compare Source

    v2.2.3

    Compare Source

    v2.2.2

    Compare Source

    v2.2.1

    Compare Source

    v2.2.0

    Compare Source

    v2.1.1

    Compare Source

    v2.1.0

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

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

    Rebasing: Whenever PR is behind base branch, 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, click this checkbox.

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

    dependencies 
    opened by renovate[bot] 4
  • Update module github.com/googleapis/gnostic to v0.6.2

    Update module github.com/googleapis/gnostic to v0.6.2

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/googleapis/gnostic | require | minor | v0.5.5 -> v0.6.2 |


    Release Notes

    googleapis/gnostic

    v0.6.2

    Compare Source

    This adds a retract statement to go.mod to exclude v0.6.0 from dependency updates. Thanks @​morphar and @​shenqidebaozi for quickly catching and fixing problems with the multimodule configuration!

    v0.6.1

    Compare Source

    v0.6.0

    Compare Source

    This renames the former apps directory to cmd and adds a go.mod for each cmd subdirectory. These directories contain demonstrations and various gnostic-related applications, and putting each in a separate module clarifies dependencies and reduces the apparent dependencies of gnostic itself (as listed in the top-level go.mod). Thanks @​shenqidebaozi for making this change and @​morphar for advising.

    This also includes significant improvements to protoc-gen-openapi from @​morphar and @​tonybase and a new protoc-gen-jsonschema pluigin contributed by @​morphar.

    v0.5.7

    Compare Source

    v0.5.6

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

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

    Rebasing: Whenever PR is behind base branch, 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, click this checkbox.

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

    dependencies 
    opened by renovate[bot] 4
  • Fish completion

    Fish completion

    Might as well include this, since it's supported. I wanted to add fish completion to the AUR pkg for kubecfg, so this is a necessary first step.

    NOTES:

    1. I tried to run make generate as advised by the contrib guide, but it doesn't seem to exist. Not sure what's going on there. Maybe those need an update?
    2. I ran make tidy as a test, and it did produce various changes, notably
    diff --git a/go.mod b/go.mod
    index 193c90c..f1c7448 100644
    --- a/go.mod
    +++ b/go.mod
    @@ -31,7 +31,6 @@ require (
     )
    
     require (
    -       cloud.google.com/go v0.100.2 // indirect
    

    but I decided not to include this in my PR, insofar as this seems like a pretty trivial change to me. Please advise if this is wrong.

    1. I tested ./kubecfg completion > ~/.config/fish/completions/kubecfg.fish on fish 3.5.1 and it seems to work as expected, but I didn't go deeper than that.
    automerge 
    opened by dradetsky 2
  • Duplicate detection should not include version part of apiVersion when compaing if resource already exists

    Duplicate detection should not include version part of apiVersion when compaing if resource already exists

    To reproduce the issue:

    local i = {
      kind: 'Ingress',
      metadata: { name: 'i1', namespace: 'ns1' },
      spec: {},
    };
    
    [
      (i { apiVersion: 'networking.k8s.io/v1' }),
      (i { apiVersion: 'networking.k8s.io/v1' }),
    ]
    

    This fails. The following should also fail, but works as expected:

    local i = {
      kind: 'Ingress',
      metadata: { name: 'i1', namespace: 'ns1' },
      spec: {},
    };
    
    [
      (i { apiVersion: 'networking.k8s.io/v1' }),
      (i { apiVersion: 'networking.k8s.io/v1beta1' }),
    ]
    
    Kubernetes would treat `networking.k8s.io/v1` and `networking.k8s.io/v1beta1` resources with same name and namespace as same, so it is a duplicate.
    
    I'm not sure how exactly should `apiVersion` be compared.
    
    opened by wojciechka 2
  • Use --export-filename-extension instead of special casing -o yml

    Use --export-filename-extension instead of special casing -o yml

    The more I think about it, the less I like using -o yml to represent yaml but with a different extension. What if you want *.YAML extension or .jsn ? More importantly I'm worried about forgetting to treat yml and yaml equivalently in the kubecfg internals.

    The root issue is that --export-filename-format doesn't include the extension. This is in order to support outputting .yaml and .json files with --export-dir .

    We should have added the extension as variable that can be referenced in the filename format.

    Unfortunately we cannot add this and maintain backward compatibility.

    This PR adds a new flag -export-filename-extension to override the extension. Controlling the filename extension is quite a niche feature, so I think that adding a new flag is acceptable.

    This PR effectively reverts #65

    opened by mkmik 2
  • Update golang.org/x/crypto commit hash to bba287d

    Update golang.org/x/crypto commit hash to bba287d

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.org/x/crypto | require | digest | e495a2d -> bba287d |


    Configuration

    📅 Schedule: At any time (no schedule defined).

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

    Rebasing: Whenever PR is behind base branch, 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, click this checkbox.

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

    automerge dependencies 
    opened by renovate[bot] 2
  • Update actions/setup-go digest to d0a58c1

    Update actions/setup-go digest to d0a58c1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-go | action | digest | c4a742c -> d0a58c1 |


    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 is behind base branch, 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.

    automerge dependencies 
    opened by renovate[bot] 0
  • Update module golang.org/x/crypto to v0.4.0

    Update module golang.org/x/crypto to v0.4.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.org/x/crypto | require | minor | v0.3.0 -> v0.4.0 |


    Release Notes

    golang/crypto

    v0.4.0

    Compare Source


    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 is behind base branch, 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.

    dependencies 
    opened by renovate[bot] 0
  • Update module github.com/spf13/viper to v1.14.0

    Update module github.com/spf13/viper to v1.14.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/spf13/viper | require | minor | v1.13.0 -> v1.14.0 |


    Release Notes

    spf13/viper

    v1.14.0

    Compare Source

    What's Changed

    Enhancements 🚀
    Breaking Changes 🛠
    Dependency Updates ⬆️

    Full Changelog: https://github.com/spf13/viper/compare/v1.13.0...v1.14.0


    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 is behind base branch, 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.

    dependencies 
    opened by renovate[bot] 0
  • Use gc tags present in input

    Use gc tags present in input

    kubecfg supports garbage collection with a tag given by --gc-tag. This PR adds another flag --gc-tags-from-input which instructs kubecfg to garbage collect for all tags present on objects in the input.

    This allows to deploy multiple applications at once where each application has its own gc tag.

    opened by muxmuse 2
  • Update module github.com/onsi/gomega to v1.24.1

    Update module github.com/onsi/gomega to v1.24.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/onsi/gomega | require | minor | v1.23.0 -> v1.24.1 |


    Release Notes

    onsi/gomega

    v1.24.1

    Compare Source

    v1.24.0

    Compare Source

    1.24.0

    Features

    Introducting gcustom - a convenient mechanism for building custom matchers.

    This is an RC release for gcustom. The external API may be tweaked in response to feedback however it is expected to remain mostly stable.

    Maintenance
    • Update BeComparableTo documentation [756eaa0]

    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 is behind base branch, 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.

    dependencies 
    opened by renovate[bot] 0
Releases(v0.28.1)
  • v0.28.0(Oct 28, 2022)

    Changes

    • update go-jsonnet to version 0.19.1 to include support for upstream importbin
      • importbin replaces the alpha format import binary:// which is now deprecated
    • update several golang modules thanks to dependabot

    Example of parseHelmChart function using importbin

    • download chart with helm binary
    helm repo add ingress-nginx https //kubernetes.github.io/ingress-nginx
    helm repo update
    helm pull ingress-nginx ingress-nginx
    
    • render helm chart in jsonnet
    local kubecfg = import 'kubecfg.libsonnet';
    
    local data = importbin './ingress-nginx-4.1.4.tgz';
    
    {
    
      values:: {
        nameOverride: 'nginx-example',
        fullNameOverride: 'nginx-example',
        commonLabels: { app: 'nginx-example' },
        controller: {
          minReadySeconds: 10,
        },
    
      },
    
      controller:
        kubecfg.fold(
          kubecfg.layouts.gvkNsName,  // Render list output of ParseHelmChart into a hierarchy layout
          kubecfg.parseHelmChart(data, 'nginx-example', 'ingress', $.values),
          {}
        ) {
          'apps/v1.Deployment'+: {  //  apiversion.kind
            ingress+: {  // resource namespace
              'nginx-example-controller'+: {  // resource name
                spec+: {
                  replicas: 20,
                },
              },
            },
          },
        },
    
    }
    
    • render jsonnet
    kubecfg show helm.jsonnet
    
    Source code(tar.gz)
    Source code(zip)
    kubecfg_Linux_X64(33.76 MB)
    kubecfg_macOS_X64(37.63 MB)
  • v0.27.0(Aug 25, 2022)

    Changes:

    • Add support for alpha features, only enabled when kubecfg is run with --alpha cli flag or KUBECFG_ALPHA environment variable #112

    • Add parseHelmChart native function that expands helm charts into jsonnet objects. #67

    • Add alpha import "binary://file.tgz" override #110

      • this is a work around the lack of availability of importbin until it is merged and released in go-jsonnet and jsonnet
      • at the moment only really required by the parseHelmChart function
    • Add isK8sObject, deepMap, fold and layouts jsonnet functions to support transformation of parseHelmCharts output #61

    • Add flag --gc-all-namespaces to limit garbage collection to the namespace scope #53

      • defaults to all namespaces , keep current behavior unchanged

    Example of new parseHelmChart function

    • download chart with helm binary
    helm repo add ingress-nginx https //kubernetes.github.io/ingress-nginx
    helm repo update
    helm pull ingress-nginx ingress-nginx
    
    • render helm chart in jsonnet
    local kubecfg = import 'kubecfg.libsonnet';
    
    local data = import 'binary://ingress-nginx-4.1.4.tgz';
    
    {
    
      values:: {
        nameOverride: 'nginx-example',
        fullNameOverride: 'nginx-example',
        commonLabels: { app: 'nginx-example' },
        controller: {
          minReadySeconds: 10,
        },
    
      },
    
      controller:
        kubecfg.fold(
          kubecfg.layouts.gvkNsName,  // Render list output of ParseHelmChart into a hierarchy layout
          kubecfg.parseHelmChart(data, 'nginx-example', 'ingress', $.values),
          {}
        ) {
          'apps/v1.Deployment'+: {  //  apiversion.kind
            ingress+: {  // resource namespace
              'nginx-example-controller'+: {  // resource name
                spec+: {
                  replicas: 20,
                },
              },
            },
          },
        },
    
    }
    
    • render jsonnet
    kubecfg --alpha show helm.jsonnet
    
    Source code(tar.gz)
    Source code(zip)
    kubecfg_Linux_X64(34.91 MB)
    kubecfg_macOS_X64(38.75 MB)
  • v0.27.0-rc0(Jul 14, 2022)

    Changes:

    • Add support for alpha features, only enabled when kubecfg is run with --alpha cli flag or KUBECFG_ALPHA environment variable #112

    • Add parseHelmChart native function that expands helm charts into jsonnet objects. #67

    • Add alpha import "binary://file.tgz" override #110

      • this is a work around the lack of availability of importbin until it is merged and released in go-jsonnet and jsonnet
      • at the moment only really required by the parseHelmChart function
    • Add isK8sObject, deepMap, fold and layouts jsonnet functions to support transformation of parseHelmCharts output #61

    • Add flag --gc-all-namespaces to limit garbage collection to the namespace scope #53

      • defaults to all namespaces , keep current behavior unchanged

    Example of new parseHelmChart function

    • download chart with helm binary
    helm repo add ingress-nginx https //kubernetes.github.io/ingress-nginx
    helm repo update
    helm pull ingress-nginx ingress-nginx
    
    • render helm chart in jsonnet
    local kubecfg = import 'kubecfg.libsonnet';
    
    local data = import 'binary://ingress-nginx-4.1.4.tgz';
    
    {
    
      values:: {
        nameOverride: 'nginx-example',
        fullNameOverride: 'nginx-example',
        commonLabels: { app: 'nginx-example' },
        controller: {
          minReadySeconds: 10,
        },
    
      },
    
      controller:
        kubecfg.fold(
          kubecfg.layouts.gvkNsName,  // Render list output of ParseHelmChart into a hierarchy layout
          kubecfg.parseHelmChart(data, 'nginx-example', 'ingress', $.values),
          {}
        ) {
          'apps/v1.Deployment'+: {  //  apiversion.kind
            ingress+: {  // resource namespace
              'nginx-example-controller'+: {  // resource name
                spec+: {
                  replicas: 20,
                },
              },
            },
          },
        },
    
    }
    
    • render jsonnet
    kubecfg --alpha show helm.jsonnet
    
    Source code(tar.gz)
    Source code(zip)
    kubecfg_Linux_X64(34.79 MB)
    kubecfg_macOS_X64(38.61 MB)
  • v0.26.0(Mar 22, 2022)

  • v0.25.0(Feb 8, 2022)

  • v0.24.1(Jan 10, 2022)

  • v0.24.0(Dec 22, 2021)

  • v0.23.0(Dec 21, 2021)

Owner
null
Package trn introduces a Range type with useful methods to perform complex operations over time ranges

Time Ranges Package trn introduces a Range type with useful methods to perform c

CappuccinoTeam 39 Aug 18, 2022
for Prometheus, complex settings

Remo Manager Nature Remo Cloud API を用いて、Prometheus上にデータを展開するプログラム。 Nature Remo Cloud APIのアクセスリミットに対応し、1分間に1度だけデータを更新する。 使い方 make build -> docker-compo

null 0 Dec 29, 2021
Helm : a tool for managing Kubernetes charts

Helm Helm is a tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources. Use Helm to: Find and use popular soft

null 0 Nov 30, 2021
Vagrant is a tool for building and distributing development environments.

Vagrant Website: https://www.vagrantup.com/ Source: https://github.com/hashicorp/vagrant HashiCorp Discuss: https://discuss.hashicorp.com/c/vagrant/24

HashiCorp 24.7k Dec 6, 2022
Tool (in Go!) to compare and diff container and host environments. Dinosaur fun!

Compenv compare environments between containers, and host ??️ This is a simple tool to compare environments. This means the environment on your host v

Vanessasaurus 1 Sep 24, 2022
Managing your Kubernetes clusters (including public, private, edge, etc) as easily as visiting the Internet

Clusternet Managing Your Clusters (including public, private, hybrid, edge, etc) as easily as Visiting the Internet. Clusternet (Cluster Internet) is

Clusternet 1.1k Nov 26, 2022
The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases

The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases. It eliminates the dependency on a human operator or administrator for the majority of database operations.

Oracle 86 Nov 30, 2022
Kubernetes is an open source system for managing containerized applications across multiple hosts.

Kubernetes Kubernetes is an open source system for managing containerized applications across multiple hosts. It provides basic mechanisms for deploym

null 0 Nov 25, 2021
Vulnerability-exporter - A Prometheus Exporter for managing vulnerabilities in kubernetes by using trivy

Kubernetes Vulnerability Exporter A Prometheus Exporter for managing vulnerabili

null 24 Dec 4, 2022
sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail 中文文档 sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),a

Bougou Nisou 10 Dec 16, 2021
Reward is a Swiss Army knife CLI utility for orchestrating Docker based development environments.

Reward Reward is a Swiss Army knife CLI utility for orchestrating Docker based development environments. It makes possible to run multiple local envir

null 50 Dec 5, 2022
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Open Service Mesh 2.5k Nov 30, 2022
Example used to try a compose application with Docker Dev Environments

compose-dev-env Example used to try a Compose application with Docker Dev Environments. This example is based on the nginx-golang-mysql sample of awes

Docker Samples 89 Dec 6, 2022
Composer is a simple process manager for dev environments.

Composer Composer is a simple service manager for dev environments. How to build/install it? To build composer under ./bin, run: make build To build

Thought Foundry, Inc. 2 May 12, 2022
Ensi-local-ctl - ELC - orchestrator of development environments

ELC - orchestrator of development environments With ELC you can: start a couple

MadridianFox 1 Oct 13, 2022
Enterprise-grade application development platform

Erda Overview Feature list Architecture Related repositories erda-proto erda-infra erda-ui Quick start To start using erda To start developing erda Do

Erda 2.5k Dec 5, 2022
Enterprise-grade container platform tailored for multicloud and multi-cluster management

KubeSphere Container Platform What is KubeSphere English | 中文 KubeSphere is a distributed operating system providing cloud native stack with Kubernete

KubeSphere 11.6k Dec 1, 2022
KubeCube is an open source enterprise-level container platform

KubeCube English | 中文文档 KubeCube is an open source enterprise-level container platform that provides enterprises with visualized management of Kuberne

KubeCube IO 329 Dec 3, 2022
The GCP Enterprise Cloud Cost Optimiser, or gecco for short, helps teams optimise their cloud project costs.

gecco helps teams optimise their cloud resource costs. Locate abandoned, idle, and inefficiently configured resources quickly. gecco helps teams build

aeihr. 2 Jan 9, 2022