Go framework to create Kubernetes mutating and validating webhooks

Overview

kubewebhook

kubewebhook

CI Go Report Card GoDoc Apache 2 licensed GitHub release (latest SemVer) Kubernetes release

Kubewebhook is a small Go framework to create external admission webhooks for Kubernetes.

With Kubewebhook you can make validating and mutating webhooks in any version, fast, easy, and focusing mainly on the domain logic of the webhook itself.

Features

  • Ready for mutating and validating webhook kinds.
  • Abstracts webhook versioning (compatible with v1beta1 and v1).
  • Resource inference (compatible with CRDs and fallbacks to Unstructured).
  • Easy and testable API.
  • Simple, extensible and flexible.
  • Multiple webhooks on the same server.
  • Webhook metrics (RED) for Prometheus with Grafana dashboard included.
  • Webhook tracing with Opentelemetry support.
  • Supports warnings.

Getting started

Use github.com/slok/kubewebhook/v2 to import Kubewebhook v2.

func run() error {
    logger := &kwhlog.Std{Debug: true}

    // Create our mutator
    mt := kwhmutating.MutatorFunc(func(_ context.Context, _ *kwhmodel.AdmissionReview, obj metav1.Object) (*kwhmutating.MutatorResult, error) {
        pod, ok := obj.(*corev1.Pod)
        if !ok {
            return &kwhmutating.MutatorResult{}, nil
        }

        // Mutate our object with the required annotations.
        if pod.Annotations == nil {
            pod.Annotations = make(map[string]string)
        }
        pod.Annotations["mutated"] = "true"
        pod.Annotations["mutator"] = "pod-annotate"

        return &kwhmutating.MutatorResult{MutatedObject: pod}, nil
    })

    // Create webhook.
    wh, err := kwhmutating.NewWebhook(kwhmutating.WebhookConfig{
        ID:      "pod-annotate",
        Mutator: mt,
        Logger:  logger,
    })
    if err != nil {
        return fmt.Errorf("error creating webhook: %w", err)
    }

    // Get HTTP handler from webhook.
    whHandler, err := kwhhttp.HandlerFor(kwhhttp.HandlerConfig{Webhook: wh, Logger: logger})
    if err != nil {
        return fmt.Errorf("error creating webhook handler: %w", err)
    }

    // Serve.
    logger.Infof("Listening on :8080")
    err = http.ListenAndServeTLS(":8080", cfg.certFile, cfg.keyFile, whHandler)
    if err != nil {
        return fmt.Errorf("error serving webhook: %w", err)
    }

    return nil

You can get more examples in here

Production ready example

This repository is a production ready webhook app: https://github.com/slok/k8s-webhook-example

It shows, different webhook use cases, app structure, testing domain logic, kubewebhook use case, how to deploy...

Static and dynamic webhooks

We have 2 kinds of webhooks:

  • Static: Common one, is a single resource type webhook.
  • Dynamic: Used when the same webhook act on multiple types, unknown types and/or is used for generic stuff (e.g labels).
    • To use this kind of webhook, don't set the type on the configuration or set to nil.
    • If a request for an unknown type is not known by the webhook libraries, it will fallback to runtime.Unstructured object type.
    • Very useful to manipulate multiple resources on the same webhook (e.g Deployments, Statefulsets).
    • CRDs are unknown types so they will fallback to runtime.Unstructured`.
    • If using CRDs, better use Static webhooks.
    • Very useful to maniputale any metadata based validation or mutations (e.g Labels, annotations...)

Compatibility matrix

The Kubernetes' version associated with Kubewebhook's versions means that this specific version is tested and supports the shown K8s version, however, this doesn't mean that doesn't work with other versions. Normally they work with multiple versions (e.g v1.18 and v1.19).

Kubewebhook version k8s version Supported admission reviews Support dynamic webhooks
v2.1 1.21 v1beta1, v1
v2.0 1.20 v1beta1, v1
v0.11 1.19 v1beta1
v0.10 1.18 v1beta1
v0.9 1.18 v1beta1
v0.8 1.17 v1beta1
v0.7 1.16 v1beta1
v0.6 1.15 v1beta1
v0.5 1.14 v1beta1
v0.4 1.13 v1beta1
v0.3 1.12 v1beta1
v0.2 1.11 v1beta1
v0.2 1.10 v1beta1

Documentation

You can access here.

Issues
  • Dynamic type webhooks

    Dynamic type webhooks

    Fixes https://github.com/slok/kubewebhook/issues/36

    This PR adds the ability to use dynamic webhooks. This webhooks infer the type of the request based on the received review JSON data. If the type can't be inferred because is unknown then it will fallback to runtime.Unstructured object type.

    We consider unknown types (core objects that are not tracked by the webhook kubernetes libraries and CRDs).

    These dynamic webhooks will be activated when the webhook factory receives a configuration without the Obj field set.

    The webhooks have been refactored internally to use a internal ObjectCreator that is the one responsible to create the object from the received raw JSON, so we have 2, a Static and Dynamic one.

    These webhooks should be also very helpful on multitype webhooks or webhooks that mutate/validate metadata fields like labels.

    opened by slok 9
  • fix jsonpath create wrong patch

    fix jsonpath create wrong patch

    Hi, I have use kubewebhook to create k8s webhook service to do crd resource defaults and validates. I found a bug in mutating webhook service when create json patch in https://github.com/slok/kubewebhook/blob/master/pkg/webhook/mutating/webhook.go#L147.

    It does not create json patch as expected, because it use origJSON and mutatedJSON to create json patch. The right way to create json patch is using AdmissionReview.Request.Object.Raw and mutatedJSON, the reason is follows:

    1. The origJSON may be different from AdmissionReview.Request.Object.Raw,because AdmissionReview.Request.Object.Raw -->unmarshaled to --> origOBJ --> marshaled to --> origJSON, so if AdmissionReview.Request.Object.Raw has some attr missing,origJSON will has a init value;
    2. As some attrs, origJSON has init value but AdmissionReview.Request.Object.Raw has none , so when create json patch, it will has wrong operation, maybe add, but replace;

    kubernetes-sigs/controller-runtime also use AdmissionReview.Request.Object.Raw to create json patch https://github.com/kubernetes-sigs/controller-runtime/blob/master/pkg/webhook/admission/defaulter.go#L74

    bug 
    opened by luodw 7
  • can not decode pod object when deleting pod

    can not decode pod object when deleting pod

    I am using k8s 14 version, and set up a delete pod webhook. By using v10.0 kubewebhook, but getting a empty pod object like:

    Pod{ObjectMeta:{ 0 0001-01-01 00:00:00 +0000 UTC <nil> <nil> map[] map[] [] [] []},Spec:PodSpec{Volumes:[]Volume{},Containers:[]Container{},RestartPolicy:,TerminationGracePeriodSeconds:nil,ActiveDeadlineSeconds:nil,DNSPolicy:,NodeSelector:map[string]string{},ServiceAccountName:,DeprecatedServiceAccount:,NodeName:,HostNetwork:false,HostPID:false,HostIPC:false,SecurityContext:nil,ImagePullSecrets:[]LocalObjectReference{},Hostname:,Subdomain:,Affinity:nil,SchedulerName:,InitContainers:[]Container{},AutomountServiceAccountToken:nil,Tolerations:[]Toleration{},HostAliases:[]HostAlias{},PriorityClassName:,Priority:nil,DNSConfig:nil,ShareProcessNamespace:nil,ReadinessGates:[]PodReadinessGate{},RuntimeClassName:nil,EnableServiceLinks:nil,PreemptionPolicy:nil,Overhead:ResourceList{},TopologySpreadConstraints:[]TopologySpreadConstraint{},EphemeralContainers:[]EphemeralContainer{},},Status:PodStatus{Phase:,Conditions:[]PodCondition{},Message:,Reason:,HostIP:,PodIP:,StartTime:<nil>,ContainerStatuses:[]ContainerStatus{},QOSClass:,InitContainerStatuses:[]ContainerStatus{},NominatedNodeName:,PodIPs:[]PodIP{},EphemeralContainerStatuses:[]ContainerStatus{},},}

    opened by wucanhao 6
  • bump jsonpatch version

    bump jsonpatch version

    We use the webhook library extensively in our project and some of our users reported a strange index out of range error coming from the jsonpatch library, which has been fixed in version v1.0.1.

    Please see: https://github.com/banzaicloud/bank-vaults/issues/939 https://github.com/banzaicloud/bank-vaults/issues/548

    Upstream issue: https://github.com/gomodules/jsonpatch/pull/22

    This version bump should resolve this issue.

    Signed-off-by: Nandor Kracser [email protected]

    opened by bonifaido 6
  • Better error / documenting error

    Better error / documenting error

    I am using the mutation webhook and currently returning an error like so:

    fmt.Fprintf(os.Stderr, "error serving webhook: %s", err)
    
    

    however, the pod event looks like this:

    24m         Warning   FailedCreate        replicaset/hello-secrets-78445d48c9   Error creating: Internal error occurred: failed calling webhook "pods.vault-secrets-webhook.admission.server.com": an error on the server ("{\"response\":{\"uid\":\"97705fda-61c0-11e9-ad59-0800272e4a1f\",\"allowed\":false,\"status\":{\"metadata\":{},\"status\":\"Failure\",\"message\":\"Error getting vault address - make sure you set the annotation\"}}}") has prevented the request from succeeding
    

    is there any way we can only show the error.status.message instead of this ugly json?

    opened by innovia 6
  • Add 'Allowed' label dimension to Prometheus counter for reviews

    Add 'Allowed' label dimension to Prometheus counter for reviews

    Salve,

    I think it would be very useful to know how many reviews were denied and how many were allowed.

    So this commit adds another label dimension to track this:

    # HELP kubewebhook_admission_webhook_admission_reviews_total Total number of admission reviews handled.
    # TYPE kubewebhook_admission_webhook_admission_reviews_total counter
    kubewebhook_admission_webhook_admission_reviews_total{allowed="false",kind="validating",namespace="default",operation="CREATE",resource="/v1/pods",webhook="validate/pod"} 2                                        
    kubewebhook_admission_webhook_admission_reviews_total{allowed="true",kind="validating",namespace="default",operation="CREATE",resource="/v1/pods",webhook="validate/pod"} 8             
    
    enhancement 
    opened by towolf 5
  • apiversion and kind not provide in response

    apiversion and kind not provide in response

    error msg: expected webhook response of admission.k8s.io/v1, Kind=AdmissionReview, got /, Kind=;

    response: {"response":{"uid":"a7aa4dca-6f37-4e74-9041-c7de0a120c23","allowed":true,"patch":"W3sib3AiOiJhZGQiLCJwYXRoIjoiL21ldGFkYXRhL2Fubm90YXRpb25zL211dGF0ZWQiLCJ2YWx1ZSI6InRydWUifSx7Im9wIjoiYWRkIiwicGF0aCI6Ii9tZXRhZGF0YS9hbm5vdGF0aW9ucy9tdXRhdG9yIiwidmFsdWUiOiJwb2QtYW5ub3RhdGUifV0=","patchType":"JSONPatch"}}

    my k8s version: v1.17.2

    opened by cocotyty 4
  • Updating the certificates for the pod-annotate example

    Updating the certificates for the pod-annotate example

    • Replacing the expired certificate with a new one (10 years expiry date)
    • Adding a Dockerfile, and updating the Readme
    • Updating the outdated Deployment version and fields
    opened by soorena776 4
  • Only return a successful status if the validation succeeded.

    Only return a successful status if the validation succeeded.

    First of all, thanks for creating this framework! It makes creating webhooks so much easier :sparkles:

    This pull request attempts to solve a problem I have been having where the validation message is not returned back to the user. This occurs when using kubectl. The validation message is present in the JSON returned by the API server, but not shown to the user. This may however be related to my Kubernetes configuration or something else. So, if you don't have this problem you can ignore and close this pull request.

    To reproduce this, use kubectl to edit/create a resource that is validatated by a webhook, if the validation fails, something like status/<unknown> edited is returned to the user.

    This can be fixed by not setting the status to Status: metav1.StatusSuccess, which seems to make kubectl think the creation was successful. I haven't really found documentation describing what the status should be set to, but some Kubernetes tests seems to leave the field empty.

    opened by paalka 4
  • Asserting inferred type?

    Asserting inferred type?

    I'm getting a weird results in a mutating webhook writtten to process both v1 and v1beta Ingress. Full code https://github.com/agilestacks/tls-host-controller/blob/master/cmd/tls-host-controller/main.go

    import (
    	netv1 "k8s.io/api/networking/v1"
    	netv1beta1 "k8s.io/api/networking/v1beta1"
    )
    
    mt := mutating.MutatorFunc(func(_ context.Context, _ *kwhmodel.AdmissionReview, obj metav1.Object) (*mutating.MutatorResult, error) {
    	ingressv1, v1 := obj.(*netv1.Ingress)
    	ingressv1beta1, v1beta1 := obj.(*netv1beta1.Ingress)
    	if !v1 && !v1beta1 {
    		logger.Warningf("v1: %+v", ingressv1)
    		logger.Warningf("v1beta1: %+v", ingressv1beta1)
    		logger.Warningf("unsupported object kind %s: %+v", reflect.TypeOf(obj), obj)
    		return &mutating.MutatorResult{}, nil
    	}
    

    If mutating.WebhookConfig{Obj: &netv1beta1.Ingress{}} is set, then it works. If not, then the output is rather cryptic:

    v1: nil
    v1beta1: nil
    unsupported object kind *v1beta1.Ingress: &Ingress{ObjectMeta:{prometheus-operator-grafana  monitoring  8fbdff6f-a83c-44e5-bb15-ed7f999571ba 19038466 3 2021-02-10 15:54:25 +0000 UTC <nil> <nil> map[app.kubernetes.io/instance:prometheus-operator app.kubernetes.io/managed-by:Helm app.kubernetes.io/name:grafana app.kubernetes.io/version:7.4.5 helm.sh/chart:grafana-6.6.3] map[kubernetes.io/ingress.class:nginx kubernetes.io/tls-acme:true meta.helm.sh/release-name:prometheus-operator meta.helm.sh/release-namespace:monitoring] [] []  []},Spec:IngressSpec{Backend:nil,TLS:[]IngressTLS{IngressTLS <cut>
    

    Any suggestions?

    opened by arkadijs 3
  • Validation reviews allowed total metric

    Validation reviews allowed total metric

    Motivation

    Following on with the idea around this PR https://github.com/slok/kubewebhook/pull/32 , we consider that having specific validating metrics (leaving mutating ones for a second PR) adds value to the observability of the library.

    Implementation

    This PR:

    • [x] Adds a new metric to know the amount of validated reviews
    • [x] Adds tests for this new metric in the metrics package.
    • [ ] ~~Adds tests for the behavior of this metric inside the webhook/validating package.~~
    • [x] Extends instrumenting implementation and tests to include this new metric.

    cc @slok for a review.

    opened by jesusvazquez 3
  • Bump golang from 1.18 to 1.19.0 in /docker/dev

    Bump golang from 1.18 to 1.19.0 in /docker/dev

    Bumps golang from 1.18 to 1.19.0.

    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)
    dependencies docker 
    opened by dependabot[bot] 0
  • Bump go.opentelemetry.io/otel/trace from 1.5.0 to 1.9.0

    Bump go.opentelemetry.io/otel/trace from 1.5.0 to 1.9.0

    Bumps go.opentelemetry.io/otel/trace from 1.5.0 to 1.9.0.

    Release notes

    Sourced from go.opentelemetry.io/otel/trace's releases.

    Release v1.6.3

    Fixed

    • Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

    Release v1.6.2

    1.6.2 - 2022-04-06

    Changed

    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
    • Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#2748)

    Release v1.6.1

    Fixed

    • The go.opentelemetry.io/otel/schema/* packages now use the correct schema URL for their SchemaURL constant. Instead of using "https://opentelemetry.io/schemas/v<version>" they now use the correct URL without a v prefix, "https://opentelemetry.io/schemas/<version>". (#2743, #2744)

    Security

    • Upgrade go.opentelemetry.io/proto/otlp from v0.12.0 to v0.12.1. This includes an indirect upgrade of github.com/grpc-ecosystem/grpc-gateway which resolves a vulnerability from gopkg.in/yaml.v2 in version v2.2.3. (#2724, #2728)
    Changelog

    Sourced from go.opentelemetry.io/otel/trace's changelog.

    [1.9.0/0.0.3] - 2022-08-01

    Added

    • Add support for Schema Files format 1.1.x (metric "split" transform) with the new go.opentelemetry.io/otel/schema/v1.1 package. (#2999)
    • Add the go.opentelemetry.io/otel/semconv/v1.11.0 package. The package contains semantic conventions from the v1.11.0 version of the OpenTelemetry specification. (#3009)
    • Add the go.opentelemetry.io/otel/semconv/v1.12.0 package. The package contains semantic conventions from the v1.12.0 version of the OpenTelemetry specification. (#3010)
    • Add the http.method attribute to HTTP server metric from all go.opentelemetry.io/otel/semconv/* packages. (#3018)

    Fixed

    • Invalid warning for context setup being deferred in go.opentelemetry.io/otel/bridge/opentracing package. (#3029)

    [1.8.0/0.31.0] - 2022-07-08

    Added

    • Add support for opentracing.TextMap format in the Inject and Extract methods of the "go.opentelemetry.io/otel/bridge/opentracing".BridgeTracer type. (#2911)

    Changed

    • The crosslink make target has been updated to use the go.opentelemetry.io/build-tools/crosslink package. (#2886)
    • In the go.opentelemetry.io/otel/sdk/instrumentation package rename Library to Scope and alias Library as Scope (#2976)
    • Move metric no-op implementation form nonrecording to metric package. (#2866)

    Removed

    • Support for go1.16. Support is now only for go1.17 and go1.18 (#2917)

    Deprecated

    • The Library struct in the go.opentelemetry.io/otel/sdk/instrumentation package is deprecated. Use the equivalent Scope struct instead. (#2977)
    • The ReadOnlySpan.InstrumentationLibrary method from the go.opentelemetry.io/otel/sdk/trace package is deprecated. Use the equivalent ReadOnlySpan.InstrumentationScope method instead. (#2977)

    [1.7.0/0.30.0] - 2022-04-28

    Added

    • Add the go.opentelemetry.io/otel/semconv/v1.8.0 package. The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
    • Add the go.opentelemetry.io/otel/semconv/v1.9.0 package. The package contains semantic conventions from the v1.9.0 version of the OpenTelemetry specification. (#2792)
    • Add the go.opentelemetry.io/otel/semconv/v1.10.0 package. The package contains semantic conventions from the v1.10.0 version of the OpenTelemetry specification. (#2842)
    • Added an in-memory exporter to metrictest to aid testing with a full SDK. (#2776)

    ... (truncated)

    Commits

    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)
    dependencies go 
    opened by dependabot[bot] 0
  • Bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.5.0 to 1.9.0

    Bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.5.0 to 1.9.0

    Bumps go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.5.0 to 1.9.0.

    Release notes

    Sourced from go.opentelemetry.io/otel/exporters/stdout/stdouttrace's releases.

    Release v1.6.3

    Fixed

    • Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

    Release v1.6.2

    1.6.2 - 2022-04-06

    Changed

    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
    • Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#2748)

    Release v1.6.1

    Fixed

    • The go.opentelemetry.io/otel/schema/* packages now use the correct schema URL for their SchemaURL constant. Instead of using "https://opentelemetry.io/schemas/v<version>" they now use the correct URL without a v prefix, "https://opentelemetry.io/schemas/<version>". (#2743, #2744)

    Security

    • Upgrade go.opentelemetry.io/proto/otlp from v0.12.0 to v0.12.1. This includes an indirect upgrade of github.com/grpc-ecosystem/grpc-gateway which resolves a vulnerability from gopkg.in/yaml.v2 in version v2.2.3. (#2724, #2728)
    Changelog

    Sourced from go.opentelemetry.io/otel/exporters/stdout/stdouttrace's changelog.

    [1.9.0/0.0.3] - 2022-08-01

    Added

    • Add support for Schema Files format 1.1.x (metric "split" transform) with the new go.opentelemetry.io/otel/schema/v1.1 package. (#2999)
    • Add the go.opentelemetry.io/otel/semconv/v1.11.0 package. The package contains semantic conventions from the v1.11.0 version of the OpenTelemetry specification. (#3009)
    • Add the go.opentelemetry.io/otel/semconv/v1.12.0 package. The package contains semantic conventions from the v1.12.0 version of the OpenTelemetry specification. (#3010)
    • Add the http.method attribute to HTTP server metric from all go.opentelemetry.io/otel/semconv/* packages. (#3018)

    Fixed

    • Invalid warning for context setup being deferred in go.opentelemetry.io/otel/bridge/opentracing package. (#3029)

    [1.8.0/0.31.0] - 2022-07-08

    Added

    • Add support for opentracing.TextMap format in the Inject and Extract methods of the "go.opentelemetry.io/otel/bridge/opentracing".BridgeTracer type. (#2911)

    Changed

    • The crosslink make target has been updated to use the go.opentelemetry.io/build-tools/crosslink package. (#2886)
    • In the go.opentelemetry.io/otel/sdk/instrumentation package rename Library to Scope and alias Library as Scope (#2976)
    • Move metric no-op implementation form nonrecording to metric package. (#2866)

    Removed

    • Support for go1.16. Support is now only for go1.17 and go1.18 (#2917)

    Deprecated

    • The Library struct in the go.opentelemetry.io/otel/sdk/instrumentation package is deprecated. Use the equivalent Scope struct instead. (#2977)
    • The ReadOnlySpan.InstrumentationLibrary method from the go.opentelemetry.io/otel/sdk/trace package is deprecated. Use the equivalent ReadOnlySpan.InstrumentationScope method instead. (#2977)

    [1.7.0/0.30.0] - 2022-04-28

    Added

    • Add the go.opentelemetry.io/otel/semconv/v1.8.0 package. The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
    • Add the go.opentelemetry.io/otel/semconv/v1.9.0 package. The package contains semantic conventions from the v1.9.0 version of the OpenTelemetry specification. (#2792)
    • Add the go.opentelemetry.io/otel/semconv/v1.10.0 package. The package contains semantic conventions from the v1.10.0 version of the OpenTelemetry specification. (#2842)
    • Added an in-memory exporter to metrictest to aid testing with a full SDK. (#2776)

    ... (truncated)

    Commits

    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)
    dependencies go 
    opened by dependabot[bot] 0
  • Bump go.opentelemetry.io/otel/sdk from 1.5.0 to 1.9.0

    Bump go.opentelemetry.io/otel/sdk from 1.5.0 to 1.9.0

    Bumps go.opentelemetry.io/otel/sdk from 1.5.0 to 1.9.0.

    Release notes

    Sourced from go.opentelemetry.io/otel/sdk's releases.

    Release v1.6.3

    Fixed

    • Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

    Release v1.6.2

    1.6.2 - 2022-04-06

    Changed

    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
    • Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#2748)

    Release v1.6.1

    Fixed

    • The go.opentelemetry.io/otel/schema/* packages now use the correct schema URL for their SchemaURL constant. Instead of using "https://opentelemetry.io/schemas/v<version>" they now use the correct URL without a v prefix, "https://opentelemetry.io/schemas/<version>". (#2743, #2744)

    Security

    • Upgrade go.opentelemetry.io/proto/otlp from v0.12.0 to v0.12.1. This includes an indirect upgrade of github.com/grpc-ecosystem/grpc-gateway which resolves a vulnerability from gopkg.in/yaml.v2 in version v2.2.3. (#2724, #2728)
    Changelog

    Sourced from go.opentelemetry.io/otel/sdk's changelog.

    [1.9.0/0.0.3] - 2022-08-01

    Added

    • Add support for Schema Files format 1.1.x (metric "split" transform) with the new go.opentelemetry.io/otel/schema/v1.1 package. (#2999)
    • Add the go.opentelemetry.io/otel/semconv/v1.11.0 package. The package contains semantic conventions from the v1.11.0 version of the OpenTelemetry specification. (#3009)
    • Add the go.opentelemetry.io/otel/semconv/v1.12.0 package. The package contains semantic conventions from the v1.12.0 version of the OpenTelemetry specification. (#3010)
    • Add the http.method attribute to HTTP server metric from all go.opentelemetry.io/otel/semconv/* packages. (#3018)

    Fixed

    • Invalid warning for context setup being deferred in go.opentelemetry.io/otel/bridge/opentracing package. (#3029)

    [1.8.0/0.31.0] - 2022-07-08

    Added

    • Add support for opentracing.TextMap format in the Inject and Extract methods of the "go.opentelemetry.io/otel/bridge/opentracing".BridgeTracer type. (#2911)

    Changed

    • The crosslink make target has been updated to use the go.opentelemetry.io/build-tools/crosslink package. (#2886)
    • In the go.opentelemetry.io/otel/sdk/instrumentation package rename Library to Scope and alias Library as Scope (#2976)
    • Move metric no-op implementation form nonrecording to metric package. (#2866)

    Removed

    • Support for go1.16. Support is now only for go1.17 and go1.18 (#2917)

    Deprecated

    • The Library struct in the go.opentelemetry.io/otel/sdk/instrumentation package is deprecated. Use the equivalent Scope struct instead. (#2977)
    • The ReadOnlySpan.InstrumentationLibrary method from the go.opentelemetry.io/otel/sdk/trace package is deprecated. Use the equivalent ReadOnlySpan.InstrumentationScope method instead. (#2977)

    [1.7.0/0.30.0] - 2022-04-28

    Added

    • Add the go.opentelemetry.io/otel/semconv/v1.8.0 package. The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
    • Add the go.opentelemetry.io/otel/semconv/v1.9.0 package. The package contains semantic conventions from the v1.9.0 version of the OpenTelemetry specification. (#2792)
    • Add the go.opentelemetry.io/otel/semconv/v1.10.0 package. The package contains semantic conventions from the v1.10.0 version of the OpenTelemetry specification. (#2842)
    • Added an in-memory exporter to metrictest to aid testing with a full SDK. (#2776)

    ... (truncated)

    Commits

    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)
    dependencies go 
    opened by dependabot[bot] 0
  • Bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.30.0 to 0.34.0

    Bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.30.0 to 0.34.0

    Bumps go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.30.0 to 0.34.0.

    Release notes

    Sourced from go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp's releases.

    Release v1.9.0/v0.34.0/v0.4.0

    Upgrades all go.opentelemetry.io/otel dependencies to v1.9.0.

    Added

    • The TextMapPropagator function to go.opentelemetry.io/contrib/propagators/autoprop. This function is used to return a composite TextMapPropagator from registered names (instead of having to specify with an environment variable). (#2593)

    Changed

    • Upgraded all semconv package use to v1.12.0. (#2589)

    Release v1.8.0/v0.33.0/v0.3.0

    1.8.0/0.33.0 - 2022-07-08

    Added

    • The go.opentelemetry.io/contrib/propagators/autoprop package to provide configuration of propagators with useful defaults and envar support. (#2258)
    • WithPublicEndpointFn hook to dynamically detect public HTTP requests and set their trace parent as a link. (#2342)

    Fixed

    • Fix the otelhttp, otelgin, otelmacaron, otelrestful middlewares by using SpanKindServer when deciding the SpanStatus. This makes 4xx response codes to not be an error anymore. (#2427)

    Release v1.7.0/v0.32.0/v0.2.0

    Added

    • Consistent probability sampler implementation. (#1379)
    • AWS X-Ray remote sampling support. (#1859)

    Changed

    • Upgraded all semconv package use to v1.10.0. This includes a backwards incompatible change for the otelgocql package to conform with the specification change. The db.cassandra.keyspace attribute is now transmitted as the db.name attribute. (#2222)

    Fixed

    • Fix the otelmux middleware by using SpanKindServer when deciding the SpanStatus. This makes 4xx response codes to not be an error anymore. (#1973)
    • Fixed jaegerremote sampler not behaving properly with per operation strategy set. (#2137)
    • Stopped injecting propagation context into response headers in otelhttp. (#2180)

    Release v1.6.0/v0.31.0

    Added

    • The project is now tested against Go 1.18 (in addition to the existing 1.16 and 1.17) (#1976)

    Changed

    • Upgraded all dependencies on stable modules from go.opentelemetry.io/otel from v1.5.0 to v1.6.1. (#2134)
    • Upgraded all dependencies on metric modules from go.opentelemetry.io/otel from v0.27.0 to v0.28.0. (#1977)

    ... (truncated)

    Changelog

    Sourced from go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp's changelog.

    [1.9.0/0.34.0/0.4.0] - 2022-08-02

    Added

    • The TextMapPropagator function to go.opentelemetry.io/contrib/propagators/autoprop. This function is used to return a composite TextMapPropagator from registered names (instead of having to specify with an environment variable). (#2593)

    Changed

    • Upgraded all semconv package use to v1.12.0. (#2589)

    [1.8.0/0.33.0] - 2022-07-08

    Added

    • The go.opentelemetry.io/contrib/propagators/autoprop package to provide configuration of propagators with useful defaults and envar support. (#2258)
    • WithPublicEndpointFn hook to dynamically detect public HTTP requests and set their trace parent as a link. (#2342)

    Fixed

    • Fix the otelhttp, otelgin, otelmacaron, otelrestful middlewares by using SpanKindServer when deciding the SpanStatus. This makes 4xx response codes to not be an error anymore. (#2427)

    [1.7.0/0.32.0] - 2022-04-28

    Added

    • Consistent probability sampler implementation. (#1379)

    Changed

    • Upgraded all semconv package use to v1.10.0. This includes a backwards incompatible change for the otelgocql package to conform with the specification change. The db.cassandra.keyspace attribute is now transmitted as the db.name attribute. (#2222)

    Fixed

    • Fix the otelmux middleware by using SpanKindServer when deciding the SpanStatus. This makes 4xx response codes to not be an error anymore. (#1973)
    • Fixed jaegerremote sampler not behaving properly with per operation strategy set. (#2137)
    • Stopped injecting propagation context into response headers in otelhttp. (#2180)
    • Fix issue where attributes for DynamoDB were not added because of a string miss match. (#2272)

    Removed

    • Drop support for Go 1.16. The project currently only supports Go 1.17 and above. (#2314)

    [1.6.0/0.31.0] - 2022-03-28

    ... (truncated)

    Commits

    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)
    dependencies go 
    opened by dependabot[bot] 0
  • Bump go.opentelemetry.io/otel from 1.5.0 to 1.9.0

    Bump go.opentelemetry.io/otel from 1.5.0 to 1.9.0

    Bumps go.opentelemetry.io/otel from 1.5.0 to 1.9.0.

    Release notes

    Sourced from go.opentelemetry.io/otel's releases.

    Release v1.6.3

    Fixed

    • Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

    Release v1.6.2

    1.6.2 - 2022-04-06

    Changed

    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
    • Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#2748)

    Release v1.6.1

    Fixed

    • The go.opentelemetry.io/otel/schema/* packages now use the correct schema URL for their SchemaURL constant. Instead of using "https://opentelemetry.io/schemas/v<version>" they now use the correct URL without a v prefix, "https://opentelemetry.io/schemas/<version>". (#2743, #2744)

    Security

    • Upgrade go.opentelemetry.io/proto/otlp from v0.12.0 to v0.12.1. This includes an indirect upgrade of github.com/grpc-ecosystem/grpc-gateway which resolves a vulnerability from gopkg.in/yaml.v2 in version v2.2.3. (#2724, #2728)
    Changelog

    Sourced from go.opentelemetry.io/otel's changelog.

    [1.9.0/0.0.3] - 2022-08-01

    Added

    • Add support for Schema Files format 1.1.x (metric "split" transform) with the new go.opentelemetry.io/otel/schema/v1.1 package. (#2999)
    • Add the go.opentelemetry.io/otel/semconv/v1.11.0 package. The package contains semantic conventions from the v1.11.0 version of the OpenTelemetry specification. (#3009)
    • Add the go.opentelemetry.io/otel/semconv/v1.12.0 package. The package contains semantic conventions from the v1.12.0 version of the OpenTelemetry specification. (#3010)
    • Add the http.method attribute to HTTP server metric from all go.opentelemetry.io/otel/semconv/* packages. (#3018)

    Fixed

    • Invalid warning for context setup being deferred in go.opentelemetry.io/otel/bridge/opentracing package. (#3029)

    [1.8.0/0.31.0] - 2022-07-08

    Added

    • Add support for opentracing.TextMap format in the Inject and Extract methods of the "go.opentelemetry.io/otel/bridge/opentracing".BridgeTracer type. (#2911)

    Changed

    • The crosslink make target has been updated to use the go.opentelemetry.io/build-tools/crosslink package. (#2886)
    • In the go.opentelemetry.io/otel/sdk/instrumentation package rename Library to Scope and alias Library as Scope (#2976)
    • Move metric no-op implementation form nonrecording to metric package. (#2866)

    Removed

    • Support for go1.16. Support is now only for go1.17 and go1.18 (#2917)

    Deprecated

    • The Library struct in the go.opentelemetry.io/otel/sdk/instrumentation package is deprecated. Use the equivalent Scope struct instead. (#2977)
    • The ReadOnlySpan.InstrumentationLibrary method from the go.opentelemetry.io/otel/sdk/trace package is deprecated. Use the equivalent ReadOnlySpan.InstrumentationScope method instead. (#2977)

    [1.7.0/0.30.0] - 2022-04-28

    Added

    • Add the go.opentelemetry.io/otel/semconv/v1.8.0 package. The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
    • Add the go.opentelemetry.io/otel/semconv/v1.9.0 package. The package contains semantic conventions from the v1.9.0 version of the OpenTelemetry specification. (#2792)
    • Add the go.opentelemetry.io/otel/semconv/v1.10.0 package. The package contains semantic conventions from the v1.10.0 version of the OpenTelemetry specification. (#2842)
    • Added an in-memory exporter to metrictest to aid testing with a full SDK. (#2776)

    ... (truncated)

    Commits

    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)
    dependencies go 
    opened by dependabot[bot] 0
Releases(v2.3.0)
  • v2.3.0(Mar 23, 2022)

  • v2.2.0(Dec 5, 2021)

    2.2.0 - 2021-12-05

    Added

    • Infer automatically (using Unstructured) Kubernetes types that don't implement metav1.Object like corev1.PodExecOptions.
    • Tracing support with Opentelemetry implementation.

    Changed

    • Update to Kubernetes v1.22.

    Fixed

    • Review errors on http handler were not being logged, now are logged as Error.
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(May 19, 2021)

  • v2.0.0(Apr 2, 2021)

    2.0.0 - 2021-04-02

    v2 of the library mainly refactors the domain model to abstract the admission review versions. This breaks backwards compatibility.

    Added

    • A new model that decouples the different Kubernetes admission review model types.
    • Support Kubernetes warnings headers in webhooks.

    Changed

    • Webhooks factory signatures now receive only a single configuration struct instead of multiple arguments.
    • All Kubernetes specific admission review references, changed in favor of Kubewebhook own model.
    • Better HTTP reponse details (messages, HTTP codes...) on allow, not allow, mutating and errors.
    • Webhook reviewm metrics have been changed to give more insights.
    • Prometheus metrics have been redesigned and now are simpler and give more insights.
    • http.HandlerFor now receives a configuration struct.
    • Improved the logger on webhooks and HTTP handlers.
    • Use structured logging over the application.
    • Add Logrus logger support.
    • Update to Kubernetes v1.20.

    Removed

    • V1 docs.
    • STD logger.
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Oct 21, 2020)

  • v0.10.0(May 19, 2020)

    0.10.0 - 2020-05-19

    Added

    • Dynamic type webhooks without the need to a specific type (can use as multitype webhook).

    Changed

    • Fixed on DELETE operations static webhooks not receiving object unmarshalled (#41)
    • Fixed on DELETE operations dynamic webhooks having unmarshaling errors (#63)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Apr 9, 2020)

  • v0.9.0(Mar 27, 2020)

  • v0.8.0(Feb 18, 2020)

  • v0.7.0(Feb 17, 2020)

    0.7.0 - 2020-02-17

    Changed

    • Update to Kubernetes v1.16.

    Fixed

    • Use mutation request raw json to create the json patch instead of an unmarshaled object of the raw json. In the past we got marshaled the raw into an object, create a deepcopy of the object that would be the mutator, then marshal both objects and get the patch. This on some cases caused some defaulting on the fields that were not present on the raw json when marshaling/unmarshaling process, so when generating the patch the fields that were defaulted acted as if already existed on the original object and if modified on the mutated object patch on these field were "modifications" instead of "additions".
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Feb 16, 2020)

  • v0.5.0(Feb 16, 2020)

  • v0.4.0(Feb 16, 2020)

  • v0.3.0(May 30, 2019)

  • v0.2.0(Dec 6, 2018)

    Breaking: Webhook constructors now need a tracer.

    Added

    • Open tracing support on validators.
    • Open tracing support on mutators.
    • Open tracing support on webhooks.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jul 28, 2018)

    Added

    • MustHandlerFor in case don't want to get an error (panic instead) and be less verbose.

    Fixed

    • Set internal server error status code (500) when a error on a webhook happens.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jul 22, 2018)

    Added

    • Grafana dashboard for Prometheus metrics.
    • Webhook admission review Prometheus metrics.
    • Pass admission request on the context to the webhooks.
    • Pass request context to the webhook and its mutating/validating chain.
    • Static validating webhook.
    • Mutating webhook example.
    • Static mutating webhook.
    • Handler creator for webhooks.
    Source code(tar.gz)
    Source code(zip)
Owner
Xabier Larrakoetxea Gallego
SRE at @Fonoa-Tech
Xabier Larrakoetxea Gallego
Tcpdump-webhook - Toy Sidecar Injection with Mutating Webhook

tcpdump-webhook A simple demonstration of Kubernetes Mutating Webhooks. Injects

Alp Kahvecioglu 2 Feb 8, 2022
A command line tool for validating Kubernetes configs with rego

ccheck ccheck is a command line application for writing tests against configuration files and data using the rego query language. It's intended purpos

Brendan Ryan 63 Jun 1, 2022
Kubernetes webhook development (validating admission webhook) tutorial using kubewebhook

pod-exec-guard-kubewebhook-tutorial Introduction This is a tutorial that shows how to develop a Kubernetes admission webhook. To explain this, the tut

Xabier Larrakoetxea Gallego 9 Jul 25, 2022
Kubernetes Admission Controller Demo: Validating Webhook for Namespace lifecycle events

Kubernetes Admission Controller Based on How to build a Kubernetes Webhook | Admission controllers Local Kuberbetes cluster # create kubernetes cluste

Marco Lehmann 2 Feb 27, 2022
used Terratest to write a test in GO for validating a Terraform module.

Terraform--Terragrant--Test used Terratest to write a test in GO for validating a Terraform module. will write a test for a Terraform module using Ter

EngineerAdnan-DEVOPS 0 Dec 4, 2021
The k8s-generic-webhook is a library to simplify the implementation of webhooks for arbitrary customer resources (CR) in the operator-sdk or controller-runtime.

k8s-generic-webhook The k8s-generic-webhook is a library to simplify the implementation of webhooks for arbitrary customer resources (CR) in the opera

Norwin Schnyder 6 Jul 12, 2022
Admission webhooks the easy way

admission-webhooks-the-easy-way Goals controller-runtime simple and simpler type

Erkan Zileli 6 Mar 13, 2022
Grafana-threema-forwarder - Alert forwarder from Grafana webhooks to Threema wire messages

Grafana to Threema alert forwarder Although Grafana has built in support for pus

Péter Szilágyi 2 Feb 13, 2022
vcluster - Create fully functional virtual Kubernetes clusters - Each cluster runs inside a Kubernetes namespace and can be started within seconds

Website • Quickstart • Documentation • Blog • Twitter • Slack vcluster - Virtual Clusters For Kubernetes Lightweight & Low-Overhead - Based on k3s, bu

Loft Labs 1.8k Aug 7, 2022
PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes.

GalaxyKube -- PolarDB-X Operator PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes. It follo

null 63 Jul 27, 2022
Kubernetes OS Server - Kubernetes Extension API server exposing OS configuration like sysctl via Kubernetes API

KOSS is a Extension API Server which exposes OS properties and functionality using Kubernetes API, so it can be accessed using e.g. kubectl. At the moment this is highly experimental and only managing sysctl is supported. To make things actually usable, you must run KOSS binary as root on the machine you will be managing.

Mateusz Gozdek 3 May 19, 2021
An Easy to use Go framework for Kubernetes based on kubernetes/client-go

k8devel An Easy to use Go framework for Kubernetes based on kubernetes/client-go, see examples dir for a quick start. How to test it ? Download the mo

null 10 Mar 25, 2022
Kubegres is a Kubernetes operator allowing to create a cluster of PostgreSql instances and manage databases replication, failover and backup.

Kubegres is a Kubernetes operator allowing to deploy a cluster of PostgreSql pods with data replication enabled out-of-the box. It brings simplicity w

Reactive Tech Ltd 1k Aug 11, 2022
This is an assignment for Intern-Software Engineer, Backend Go from LINE MAN Wongnai. It is create with Go and GIN framework

COVID-19-API-Assignment Create by Chayaphon Bunyakan, Email: bun.chaya[email protected] Run the API by typing the following command go run main.go Run t

Chayaphon Bunyakan 0 Jan 9, 2022
Create diagrams from the Kubernetes API with go-diagrams.

Kubernetes diagrams k8s-diagrams creates diagrams from your kubernetes clusters. You just have to provide a namespace (or not), and you get a picture

Pierre Erraud 123 Aug 1, 2022
Kubernetes create pod cli with golang

kubernatestest- Anand #Added more coments Anand2 and K8s #GO COMMANDS to RUN : go run xxx.go to install : go install xyz.go - this created binary file

null 1 Dec 2, 2021
A CoreDNS plugin to create records for Kubernetes nodes.

kubenodes Name kubenodes - creates records for Kubernetes nodes. Description kubenodes watches the Kubernetes API and synthesizes A, AAAA, and PTR rec

InfobloxOpen 7 Jul 7, 2022
Litmus helps Kubernetes SREs and developers practice chaos engineering in a Kubernetes native way.

Litmus Cloud-Native Chaos Engineering Read this in other languages. ???? ???? ???? ???? Overview Litmus is a toolset to do cloud-native chaos engineer

Litmus Chaos 3.2k Aug 12, 2022
Carrier is a Kubernetes controller for running and scaling game servers on Kubernetes.

Carrier is a Kubernetes controller for running and scaling game servers on Kubernetes. This project is inspired by agones. Introduction Genera

Open Cloud-native Game-application Initiative 30 Jul 28, 2022