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

GitHub Action Documentation Test Go Report Card Coverage Status Releases License

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. Furthermore, it provides full access to the AdmissionReview request and decodes the Object in the request automatically. More sophistic webhook logic is facilitated by using the injected Client of the webhook which provides full access to the Kubernetes API.

Quickstart

  1. Initialize a new manager using the operator-sdk.
  2. Create a pkg (e.g. webhooks/pod) and implement your webhook logic by embedding either the ValidatingWebhook or the MuatatingWebhook.

Example ValidatingWebhook

package pod

import (
	"context"

	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/runtime"
	"sigs.k8s.io/controller-runtime/pkg/log"
	"sigs.k8s.io/controller-runtime/pkg/manager"
	"sigs.k8s.io/controller-runtime/pkg/webhook/admission"

	"github.com/snorwin/k8s-generic-webhook/pkg/webhook"
)

type Webhook struct {
	webhook.ValidatingWebhook
}

func (w *Webhook) SetupWebhookWithManager(mgr manager.Manager) error {
	return webhook.NewGenericWebhookManagedBy(mgr).
		For(&corev1.Pod{}).
		Complete(w)
}

func (w *Webhook) ValidateCreate(ctx context.Context, request admission.Request, object runtime.Object) admission.Response {
	_ = log.FromContext(ctx)

	pod := object.(*corev1.Pod)
	// TODO add your programmatic validation logic here

	return admission.Allowed("")
}

Example MutatingWebhook

package pod

import (
	"context"

	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/runtime"
	"sigs.k8s.io/controller-runtime/pkg/log"
	"sigs.k8s.io/controller-runtime/pkg/manager"
	"sigs.k8s.io/controller-runtime/pkg/webhook/admission"

	"github.com/snorwin/k8s-generic-webhook/pkg/webhook"
)

type Webhook struct {
	webhook.MutatingWebhook
}

func (w *Webhook) SetupWebhookWithManager(mgr manager.Manager) error {
	return webhook.NewGenericWebhookManagedBy(mgr).
		For(&corev1.Pod{}).
		Complete(&w)
}

func (w *Webhook) Mutate(ctx context.Context, request admission.Request, object runtime.Object) admission.Response {
	_ = log.FromContext(ctx)

	pod := object.(*corev1.Pod)
	// TODO add your programmatic mutation logic here

	return admission.Allowed("")
}
  1. Add the following snippet to main() in main.go in order to register the webhook in the manager.
if err = (&pod.Webhook{}).SetupWebhookWithManager(mgr); err != nil {
    setupLog.Error(err, "unable to create webhook", "webhook", "Pod")
    os.Exit(1)
}
Owner
Norwin Schnyder
Cloud Software Engineer with a demonstrated history of working in the financial services industry. Proficient in Go, C++, Kubernetes and OpenShift.
Norwin Schnyder
Comments
  • Bump github.com/onsi/gomega from 1.20.1 to 1.20.2

    Bump github.com/onsi/gomega from 1.20.1 to 1.20.2

    Bumps github.com/onsi/gomega from 1.20.1 to 1.20.2.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.20.2

    1.20.2

    Fixes

    • label specs that rely on remote access; bump timeout on short-circuit test to make it less flaky [35eeadf]
    • gexec: allow more headroom for SIGABRT-related unit tests (#581) [5b78f40]
    • Enable reading from a closed gbytes.Buffer (#575) [061fd26]

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.1.5 to 2.1.6 (#583) [55d895b]
    • Bump github.com/onsi/ginkgo/v2 from 2.1.4 to 2.1.5 (#582) [346de7c]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.20.2

    Fixes

    • label specs that rely on remote access; bump timeout on short-circuit test to make it less flaky [35eeadf]
    • gexec: allow more headroom for SIGABRT-related unit tests (#581) [5b78f40]
    • Enable reading from a closed gbytes.Buffer (#575) [061fd26]

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.1.5 to 2.1.6 (#583) [55d895b]
    • Bump github.com/onsi/ginkgo/v2 from 2.1.4 to 2.1.5 (#582) [346de7c]
    Commits
    • 604aef4 v1.20.2
    • 35eeadf label specs that rely on remote access; bump timeout on short-circuit test to...
    • 55d895b Bump github.com/onsi/ginkgo/v2 from 2.1.5 to 2.1.6 (#583)
    • 346de7c Bump github.com/onsi/ginkgo/v2 from 2.1.4 to 2.1.5 (#582)
    • 5b78f40 gexec: allow more headroom for SIGABRT-related unit tests (#581)
    • 061fd26 Enable reading from a closed gbytes.Buffer (#575)
    • See full diff 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)
  • add ObjectMutator interface to simplify object handling and patch creation

    add ObjectMutator interface to simplify object handling and patch creation

    This PR adds an additional mutation interface, where the object is provided as argument, and the patch for the response is automatically generated by the handler.

  • Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.0

    Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.0

    Bumps sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.0.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.14.0

    Changes since v0.13.1

    :warning: Breaking Changes

    • Add Get functionality to SubResourceClient (#2094)
    • Allow configuring RecoverPanic for controllers globally (#2093)
    • Add client.SubResourceWriter (#2072)
    • Support registration and removal of event handler (#2046)
    • Update Kubernetes dependencies to v0.26 (#2043, #2087)
    • Zap log: Default to RFC3339 time encoding (#2029)
    • cache.BuilderWithOptions inherit options from caller (#1980)

    :sparkles: New Features

    • Builder: Do not require For (#2091)
    • support disable deepcopy on list funcion (#2076)
    • Add cluster.NewClientFunc with options (#2054)
    • Tidy up startup logging of kindWithCache source (#2057)
    • Add function to get reconcileID from context (#2056)
    • feat: add NOT predicate (#2031)
    • Allow to provide a custom lock interface to manager (#2027)
    • Add tls options to manager.Options (#2023)
    • Update Go version to 1.19 (#1986)

    :bug: Bug Fixes

    • Prevent manager from getting started a second time (#2090)
    • Missing error log for in-cluster config (#2051)
    • Skip custom mutation handler when delete a CR (#2049)
    • fix: improve semantics of combining cache selectorsByObject (#2039)
    • Conversion webhook should not panic when conversion request is nil (#1970)

    :seedling: Others

    • Prepare for release 0.14 (#2100)
    • Generate files and update modules (#2096)
    • Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 (#2097)
    • Bump golang.org/x/time (#2089)
    • Update OWNERS: remove inactive members, promote fillzpp sbueringer (#2088, #2092)
    • Default ENVTEST version to a working one (1.24.2) (#2081)
    • Update golangci-lint to v1.50.1 (#2080)
    • Bump go.uber.org/zap from 1.23.0 to 1.24.0 (#2077)
    • Bump golang.org/x/sys from 0.2.0 to 0.3.0 (#2078)
    • Ignore Kubernetes Dependencies in Dependabot (#2071)
    • Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 (#2070)
    • Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#2066)
    • seedling to dependabot (#2065)
    • Bump github.com/onsi/gomega from 1.23.0 to 1.24.1 (#2062)
    • Bump go.uber.org/zap from 1.21.0 to 1.23.0 (#2060)
    • Bump actions/checkout from 2 to 3 (#2059)
    • Bump golangci/golangci-lint-action from 2 to 3 (#2058)
    • Add Dependabot for dependency management (#2050)
    • Deprecate Webhook Server TLSMinVersion (#2041)

    ... (truncated)

    Commits
    • ddcb99d Merge pull request #2100 from vincepri/release-0.14
    • 69f0938 Merge pull request #2094 from alvaroaleman/subresoruce-get
    • 8738e91 Merge pull request #2091 from alvaroaleman/no-for
    • ca4b4de Merge pull request #2096 from lucacome/generate
    • 5673341 Merge pull request #2097 from kubernetes-sigs/dependabot/go_modules/github.co...
    • 7333aed :seedling: Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0
    • d4f1e82 Generate files and update modules
    • a387bf4 Merge pull request #2093 from alvaroaleman/recover-panic-globally
    • da7dd5d :warning: Allow configuring RecoverPanic for controllers globally
    • c773bef Merge pull request #2092 from alvaroaleman/cleanup-2
    • 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)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.24.1

    Bump github.com/onsi/gomega from 1.22.1 to 1.24.1

    Bumps github.com/onsi/gomega from 1.22.1 to 1.24.1.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.1

    No release notes provided.

    v1.24.0

    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]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.1

    Fixes

    • maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e]
    • fix small typo (#601) [ea0ebe6]

    Maintenance

    • Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372]
    • Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb]
    • fix label-filter in test.yml [d795db6]
    • stop running flakey tests and rely on external network dependencies in CI [7133290]

    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]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • 3eef0d7 v1.24.1
    • 4c7df5e maintain backward compatibility for Eventually and Consisntetly's signatures
    • 1ba8372 Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603)
    • f9426cb Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602)
    • ea0ebe6 fix small typo (#601)
    • d795db6 fix label-filter in test.yml
    • 7133290 stop running flakey tests and rely on external network dependencies in CI
    • ed1156b v1.24.0
    • 756eaa0 Update BeComparableTo documentation
    • 6015576 finish documenting gcustom
    • 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)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.24.0

    Bump github.com/onsi/gomega from 1.22.1 to 1.24.0

    Bumps github.com/onsi/gomega from 1.22.1 to 1.24.0.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.0

    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]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    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]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • ed1156b v1.24.0
    • 756eaa0 Update BeComparableTo documentation
    • 6015576 finish documenting gcustom
    • 0cfc53b godoc for gcustom
    • 6a2e51e First pass at gcustom: a convenience package for making custom matchers. Doc...
    • bf817a4 v1.23.0
    • 7b8b801 fix broken call to Eventually
    • ba35cc6 Allow ctx to be passed in as a leading parameter for Eventually and Consistently
    • 818b78c AsyncAssertions emit the format.Object representation of the error when it i...
    • d63d67e Rename AsyncSignalError to PollingSignalError
    • 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)
  • Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.13.1

    Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.13.1

    Bumps sigs.k8s.io/controller-runtime from 0.13.0 to 0.13.1.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.13.1

    What's Changed

    Full Changelog: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.13.0...v0.13.1

    Commits
    • 44c5d50 Merge pull request #2028 from k8s-infra-cherrypick-robot/cherry-pick-2023-to-...
    • 271f9e6 Add tls options to manager.Options
    • See full diff 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)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.23.0

    Bump github.com/onsi/gomega from 1.22.1 to 1.23.0

    Bumps github.com/onsi/gomega from 1.22.1 to 1.23.0.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Commits
    • bf817a4 v1.23.0
    • 7b8b801 fix broken call to Eventually
    • ba35cc6 Allow ctx to be passed in as a leading parameter for Eventually and Consistently
    • 818b78c AsyncAssertions emit the format.Object representation of the error when it i...
    • d63d67e Rename AsyncSignalError to PollingSignalError
    • abd25f0 fix go vet
    • 618a133 Introduce TryAgainAfter
    • 67ab22c Simplify StopTrying handling
    • 75c8c70 Fix go vet and drop 1.17 from test matrix
    • 237e97d Matchers can now return StopTrying() errors; StopTrying() can wrap an error t...
    • 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)
  • Bump sigs.k8s.io/controller-runtime from 0.12.1 to 0.12.2

    Bump sigs.k8s.io/controller-runtime from 0.12.1 to 0.12.2

    Bumps sigs.k8s.io/controller-runtime from 0.12.1 to 0.12.2.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.12.2

    changes since v0.12.1

    :sparkles: New Features

    • Allow TLS to be entirely configured on webhook server (#1914)

    :bug: Bug Fixes

    • Fix webhook write response error for broken HTTP connection (#1931)
    • Fix issue with starting multiple test envs (#1913)
    • don't override global log in builder (#1911)

    Thanks to all our contributors!

    Commits
    • f561596 ✨ Bump k8s.io packages to v1.24.2 (#1940)
    • 697e66d Merge pull request #1931 from k8s-infra-cherrypick-robot/cherry-pick-1930-to-...
    • 0d4500b Fix webhook write response error for broken HTTP connection
    • d15de97 Merge pull request #1914 from k8s-infra-cherrypick-robot/cherry-pick-1897-to-...
    • 54d6a15 Allow TLS config to be entirely configured on webhook server
    • 160efcb Merge pull request #1913 from k8s-infra-cherrypick-robot/cherry-pick-1910-to-...
    • 6c84577 Fix issue with starting multiple test envs
    • 1efdbd7 Merge pull request #1911 from k8s-infra-cherrypick-robot/cherry-pick-1907-to-...
    • 19f8d99 bug: don't override global log in builder
    • See full diff 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)
  • Bump sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.2

    Bump sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.2

    Bumps sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.2.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.11.2

    changes since v0.11.1

    :sparkles: New Features

    • Upgrade k8s dependencies from 1.23.0 to 1.23.5 (#1853)

    Thanks to all our contributors!

    v0.11.1

    changes since v0.11.0

    :bug: Bug Fixes

    • Fixed a bug in newGVKFixupWatcher which caused the metadata informer to hang (#1801)

    Thanks to all our contributors!

    Commits
    • bf71fc5 Upgrade k8s dependencies from 1.23.0 to 1.23.5 (#1853)
    • 6627ea2 Merge pull request #1801 from k8s-infra-cherrypick-robot/cherry-pick-1790-to-...
    • e11297b Remove DeepCopy, as suggested during code review
    • bad563a Update copyright headers
    • fb739b0 Re-implement gvkFixupWatcher as a watch.FilterFunc
    • b32c137 Test that gvkFixupWatcher matches the behaviour of watch.FakeWatcher
    • See full diff 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)
  • Bump sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.1

    Bump sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.1

    Bumps sigs.k8s.io/controller-runtime from 0.11.0 to 0.11.1.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.11.1

    changes since v0.11.0

    :bug: Bug Fixes

    • Fixed a bug in newGVKFixupWatcher which caused the metadata informer to hang (#1801)

    Thanks to all our contributors!

    Commits
    • 6627ea2 Merge pull request #1801 from k8s-infra-cherrypick-robot/cherry-pick-1790-to-...
    • e11297b Remove DeepCopy, as suggested during code review
    • bad563a Update copyright headers
    • fb739b0 Re-implement gvkFixupWatcher as a watch.FilterFunc
    • b32c137 Test that gvkFixupWatcher matches the behaviour of watch.FakeWatcher
    • See full diff 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)
  • Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.1

    Bump sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.1

    Bumps sigs.k8s.io/controller-runtime from 0.13.0 to 0.14.1.

    Release notes

    Sourced from sigs.k8s.io/controller-runtime's releases.

    v0.14.1

    Changes since v0.14.0

    :bug: Bug Fixes

    Full Changelog: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.0...v0.14.1

    v0.14.0

    Changes since v0.13.1

    :warning: Breaking Changes

    • Add Get functionality to SubResourceClient (#2094)
    • Allow configuring RecoverPanic for controllers globally (#2093)
    • Add client.SubResourceWriter (#2072)
    • Support registration and removal of event handler (#2046)
    • Update Kubernetes dependencies to v0.26 (#2043, #2087)
    • Zap log: Default to RFC3339 time encoding (#2029)
    • cache.BuilderWithOptions inherit options from caller (#1980)

    :sparkles: New Features

    • Builder: Do not require For (#2091)
    • support disable deepcopy on list funcion (#2076)
    • Add cluster.NewClientFunc with options (#2054)
    • Tidy up startup logging of kindWithCache source (#2057)
    • Add function to get reconcileID from context (#2056)
    • feat: add NOT predicate (#2031)
    • Allow to provide a custom lock interface to manager (#2027)
    • Add tls options to manager.Options (#2023)
    • Update Go version to 1.19 (#1986)

    :bug: Bug Fixes

    • Prevent manager from getting started a second time (#2090)
    • Missing error log for in-cluster config (#2051)
    • Skip custom mutation handler when delete a CR (#2049)
    • fix: improve semantics of combining cache selectorsByObject (#2039)
    • Conversion webhook should not panic when conversion request is nil (#1970)

    :seedling: Others

    • Prepare for release 0.14 (#2100)
    • Generate files and update modules (#2096)
    • Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 (#2097)
    • Bump golang.org/x/time (#2089)
    • Update OWNERS: remove inactive members, promote fillzpp sbueringer (#2088, #2092)
    • Default ENVTEST version to a working one (1.24.2) (#2081)
    • Update golangci-lint to v1.50.1 (#2080)
    • Bump go.uber.org/zap from 1.23.0 to 1.24.0 (#2077)
    • Bump golang.org/x/sys from 0.2.0 to 0.3.0 (#2078)
    • Ignore Kubernetes Dependencies in Dependabot (#2071)

    ... (truncated)

    Commits
    • 84c5c9f 🐛 controllers without For() fail to start (#2108)
    • ddcb99d Merge pull request #2100 from vincepri/release-0.14
    • 69f0938 Merge pull request #2094 from alvaroaleman/subresoruce-get
    • 8738e91 Merge pull request #2091 from alvaroaleman/no-for
    • ca4b4de Merge pull request #2096 from lucacome/generate
    • 5673341 Merge pull request #2097 from kubernetes-sigs/dependabot/go_modules/github.co...
    • 7333aed :seedling: Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0
    • d4f1e82 Generate files and update modules
    • a387bf4 Merge pull request #2093 from alvaroaleman/recover-panic-globally
    • da7dd5d :warning: Allow configuring RecoverPanic for controllers globally
    • 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)
  • Bump github.com/onsi/gomega from 1.22.1 to 1.24.2

    Bump github.com/onsi/gomega from 1.22.1 to 1.24.2

    Bumps github.com/onsi/gomega from 1.22.1 to 1.24.2.

    Release notes

    Sourced from github.com/onsi/gomega's releases.

    v1.24.2

    1.24.2

    Fixes

    • Correctly handle assertion failure panics for eventually/consistnetly "g Gomega"s in a goroutine [78f1660]
    • docs:Fix typo "you an" -> "you can" (#607) [3187c1f]
    • fixes issue #600 (#606) [808d192]

    Maintenance

    • Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf]
    • Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8]
    • Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9]

    v1.24.1

    No release notes provided.

    v1.24.0

    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]

    v1.23.0

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    Maintenance

    • Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901]
    • Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3]
    • Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665]
    Changelog

    Sourced from github.com/onsi/gomega's changelog.

    1.24.2

    Fixes

    • Correctly handle assertion failure panics for eventually/consistnetly "g Gomega"s in a goroutine [78f1660]
    • docs:Fix typo "you an" -> "you can" (#607) [3187c1f]
    • fixes issue #600 (#606) [808d192]

    Maintenance

    • Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf]
    • Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8]
    • Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9]

    1.24.1

    Fixes

    • maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e]
    • fix small typo (#601) [ea0ebe6]

    Maintenance

    • Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372]
    • Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb]
    • fix label-filter in test.yml [d795db6]
    • stop running flakey tests and rely on external network dependencies in CI [7133290]

    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]

    1.23.0

    Features

    • Custom formatting on a per-type basis can be provided using format.RegisterCustomFormatter() -- see the docs here

    • Substantial improvement have been made to StopTrying():

      • Users can now use StopTrying().Wrap(err) to wrap errors and StopTrying().Attach(description, object) to attach arbitrary objects to the StopTrying() error
      • StopTrying() is now always interpreted as a failure. If you are an early adopter of StopTrying() you may need to change your code as the prior version would match against the returned value even if StopTrying() was returned. Going forward the StopTrying() api should remain stable.
      • StopTrying() and StopTrying().Now() can both be used in matchers - not just polled functions.
    • TryAgainAfter(duration) is used like StopTrying() but instructs Eventually and Consistently that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration.

    • ctx can now be passed-in as the first argument to Eventually and Consistently.

    ... (truncated)

    Commits
    • c3aef8b v1.24.2
    • 78f1660 Correctly handle assertion failure panics for eventually/consistnetly "g Gom...
    • 6ebc0bf Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611)
    • 258cfc8 Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612)
    • e6c3eb9 Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609)
    • 3187c1f docs:Fix typo "you an" -> "you can" (#607)
    • 808d192 fixes issue #600 (#606)
    • 3eef0d7 v1.24.1
    • 4c7df5e maintain backward compatibility for Eventually and Consisntetly's signatures
    • 1ba8372 Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603)
    • 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)
  • operator-sdk Plugin

    operator-sdk Plugin

    Create an operator-sdk plugin (see: https://sdk.operatorframework.io/docs/contribution-guidelines/plugins/#how-to-create-your-own-plugins) in order to simplify the creation of a generic webhook as already mentioned in #17.

  • Full examples?

    Full examples?

    Hi. I like what you have here. But full examples (with rbac, webhook yaml, etc) would be a great addition.

    For example, I was able to create a simple webhook, but your example didn't include any of the kubebuilder rbac statements. (that was fairly easy to resolve, but it being in the examples would be better). Now, I'm fighting with the operator-sdk config directory, trying to get the webhook to deploy correctly.

    It could either be a sample app, or just more documentation in the README.

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
a k8s operator 、operator-sdk

helloworld-operator a k8s operator 、operator-sdk Operator 参考 https://jicki.cn/kubernetes-operator/ https://learnku.com/articles/60683 https://opensour

Jan 27, 2022
Webhook-server - Webhook Server for KubeDB resources

webhook-server Webhook Server for KubeDB resources Installation To install KubeD

Feb 22, 2022
Basic Kubernetes operator that have multiple versions in CRD. This operator can be used to experiment and understand Operator/CRD behaviors.

add-operator Basic Kubernetes operator that have multiple versions in CRD. This operator can be used to experiment and understand Operator/CRD behavio

Dec 15, 2021
An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

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

Aug 16, 2022
K8s-network-config-operator - Kubernetes network config operator to push network config to switches

Kubernetes Network operator Will add more to the readme later :D Operations The

May 16, 2022
Pulumi-k8s-operator-example - OpenGitOps Compliant Pulumi Kubernetes Operator Example

Pulumi GitOps Example OpenGitOps Compliant Pulumi Kubernetes Operator Example Pr

May 6, 2022
Test Operator using operator-sdk 1.15

test-operator Test Operator using operator-sdk 1.15 operator-sdk init --domain rbt.com --repo github.com/ravitri/test-operator Writing kustomize manif

Dec 28, 2021
Kubernetes Operator Samples using Go, the Operator SDK and OLM
Kubernetes Operator Samples using Go, the Operator SDK and OLM

Kubernetes Operator Patterns and Best Practises This project contains Kubernetes operator samples that demonstrate best practices how to develop opera

Nov 24, 2022
Simplify Kubernetes Secrets Management with Dockhand Secrets Operator

dockhand-secrets-operator Secrets management with GitOps can be challenging in Kubernetes environments. Often engineers resort to manual secret creati

Sep 28, 2022
webhook is a lightweight incoming webhook server to run shell commands
webhook is a lightweight incoming webhook server to run shell commands

What is webhook? webhook is a lightweight configurable tool written in Go, that allows you to easily create HTTP endpoints (hooks) on your server, whi

Jan 5, 2023
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

Aug 26, 2022
Tcpdump-webhook - Toy Sidecar Injection with Mutating Webhook

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

Feb 8, 2022
The Elastalert Operator is an implementation of a Kubernetes Operator, to easily integrate elastalert with gitops.

Elastalert Operator for Kubernetes The Elastalert Operator is an implementation of a Kubernetes Operator. Getting started Firstly, learn How to use el

Jun 28, 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

Feb 27, 2022
Image clone controller is a kubernetes controller to safe guard against the risk of container images disappearing

Image clone controller image clone controller is a kubernetes controller to safe guard against the risk of container images disappearing from public r

Oct 10, 2021
A Controller written in kubernetes sample-controller style which watches a custom resource named Bookstore

bookstore-sample-controller A Controller written in kubernetes sample-controller style which watches a custom resource named Bookstore. A resource cre

Jan 20, 2022
upgrade from controller-runtime 0.6.5. Reactor substitute.

Upgrade Kubernetes Controller Runtime from v0.6.5 This blog concentrates on test case migration as the real code migration pretty detailed and straigh

Dec 6, 2021
A controller to create K8s Ingresses for Openshift routes.

route-to-ingress-operator A controller to create corresponding ingress.networking.k8s.io/v1 resources for route.openshift.io/v1 TODO int port string p

Jan 7, 2022