Minecraft-operator - A Kubernetes operator for Minecraft Java Edition servers

Minecraft Operator

A Kubernetes operator for dedicated servers of the video game Minecraft Java Edition. This allows you to administer and configure a Minecraft server solely using the Kubernetes API — no remote shell, SFTP, or graphical admin interfaces are required.

Note that this is 🚧 alpha-grade 🚧 software. No guarantee is provided (see the license), and users are responsible for the security and data-integrity of their own servers. The API surface is subject to change. This software is not endorsed or supported by Microsoft, Mojang, or the Minecraft development team.

All the heavy-lifting is done by the excellent itzg/docker-minecraft-server. That container image is what is actually deployed into the cluster as a Pod. This project isn't endorsed or supported by itzg either.

Installing

Use make install from the root of this directory with your cluster configured in kubectl.

Usage

You can configure a server like this. The operator will create a Pod and Service to this specification. Note that the API uses "allowList" in place of "whitelist", but it is applied to the server in the same way.

apiVersion: minecraft.jameslaverack.com/v1alpha1
kind: MinecraftServer
metadata:
  name: my-minecraft-server
spec:
  eula: Accepted
  minecraftVersion: 1.18.1
  type: Paper
  opsList:
    - name: Player1
      uuid: da6a1ae6-e2f5-4e32-9135-b82a9ef426a9
  allowList:
    - name: Player2
      uuid: 880182d6-a0e3-44cd-a57c-8dc3799e92b8
  world:
    persistentVolumeClaim:
      claimName: minecraft-world
  motd: "My Minecraft Server"
  maxPlayers: 8
  viewDistance: 16
  externalServiceIP: 192.168.1.51
  vanillaTweaks:
    survival:
      - 'multiplayer sleep'
      - 'afk display'
    items:
      - 'player head drops'
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minecraft-world
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
Owner
James Laverack
@kubernetes 1.24 Release Lead — Senior Solutions Engineer @jetstack — He/Him
James Laverack
Comments
  • Bump sigs.k8s.io/controller-runtime from 0.12.3 to 0.14.0

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

    Bumps sigs.k8s.io/controller-runtime from 0.12.3 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 k8s.io/client-go from 0.24.3 to 0.25.5

    Bump k8s.io/client-go from 0.24.3 to 0.25.5

    Bumps k8s.io/client-go from 0.24.3 to 0.25.5.

    Commits
    • e10d1ea Update dependencies to v0.25.5 tag
    • b2883ba Merge pull request #114320 from liggitt/net-1.25
    • fcb591b Update golang.org/x/net 1e63c2f
    • b63afdf Merge pull request #113425aimuz/automated-cherry-pick-of-#112693
    • 5aa9be7 Fixed (CVE-2022-27664) Bump golang.org/x/net to v0.1.1-0.20221027164007-c6301...
    • 166ab05 Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 4b5a638 Updated vendor to the new preferred versions.
    • 1904631 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 8f4eb75 Merge pull request #112336enj/automated-cherry-pick-of-#112017
    • e278668 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 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 k8s.io/apimachinery from 0.24.3 to 0.25.5

    Bump k8s.io/apimachinery from 0.24.3 to 0.25.5

    Bumps k8s.io/apimachinery from 0.24.3 to 0.25.5.

    Commits
    • 526d075 Merge pull request #114320 from liggitt/net-1.25
    • 9dfe992 Update golang.org/x/net 1e63c2f
    • 0cb034a Merge pull request #113425aimuz/automated-cherry-pick-of-#112693
    • 8e45274 Fixed (CVE-2022-27664) Bump golang.org/x/net to v0.1.1-0.20221027164007-c6301...
    • 4fbe8e4 Merge pull request #112218haoruan/automated-cherry-pick-of-#111936
    • cf171ba Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • cb0507f Updated vendor to the new preferred versions.
    • 478dd6e Merge pull request #112527liggitt/automated-cherry-pick-of-#112526
    • 14bc1be Limit redirect proxy handling to redirected responses
    • 8252641 Merge pull request #112330enj/automated-cherry-pick-of-#112193
    • 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 k8s.io/api from 0.24.3 to 0.25.5

    Bump k8s.io/api from 0.24.3 to 0.25.5

    Bumps k8s.io/api from 0.24.3 to 0.25.5.

    Commits
    • dc789cf Update dependencies to v0.25.5 tag
    • be0bf1d Merge pull request #114320 from liggitt/net-1.25
    • 81c9a74 Update golang.org/x/net 1e63c2f
    • 70abe33 Merge pull request #113425aimuz/automated-cherry-pick-of-#112693
    • 8bf119c Fixed (CVE-2022-27664) Bump golang.org/x/net to v0.1.1-0.20221027164007-c6301...
    • e7b469b Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 1102e6f Updated vendor to the new preferred versions.
    • fce3016 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 29513a2 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 5c4a1b1 Merge remote-tracking branch 'origin/master' into release-1.25
    • 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 k8s.io/apimachinery from 0.24.3 to 0.25.4

    Bump k8s.io/apimachinery from 0.24.3 to 0.25.4

    Bumps k8s.io/apimachinery from 0.24.3 to 0.25.4.

    Commits
    • 4fbe8e4 Merge pull request #112218haoruan/automated-cherry-pick-of-#111936
    • cf171ba Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • cb0507f Updated vendor to the new preferred versions.
    • 478dd6e Merge pull request #112527liggitt/automated-cherry-pick-of-#112526
    • 14bc1be Limit redirect proxy handling to redirected responses
    • 8252641 Merge pull request #112330enj/automated-cherry-pick-of-#112193
    • 10b456c Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 4759a80 Add an option for aggregator
    • 3296217 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • b4db414 Marshal MicroTime to json and proto at the same precision
    • 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 k8s.io/client-go from 0.24.3 to 0.25.4

    Bump k8s.io/client-go from 0.24.3 to 0.25.4

    Bumps k8s.io/client-go from 0.24.3 to 0.25.4.

    Commits
    • 7226b15 Update dependencies to v0.25.4 tag
    • 166ab05 Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 4b5a638 Updated vendor to the new preferred versions.
    • 1904631 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 8f4eb75 Merge pull request #112336enj/automated-cherry-pick-of-#112017
    • e278668 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 1874bc6 exec auth: support TLS config caching
    • db7e2d8 Merge pull request #112055aanm/automated-cherry-pick-of-#111752
    • c9008f3 client-go/rest: check if url is nil to prevent nil pointer dereference
    • 1a46dfd Revert "client-go: remove no longer used finalURLTemplate"
    • 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 k8s.io/api from 0.24.3 to 0.25.4

    Bump k8s.io/api from 0.24.3 to 0.25.4

    Bumps k8s.io/api from 0.24.3 to 0.25.4.

    Commits
    • 88912e3 Update dependencies to v0.25.4 tag
    • e7b469b Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 1102e6f Updated vendor to the new preferred versions.
    • fce3016 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 29513a2 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 5c4a1b1 Merge remote-tracking branch 'origin/master' into release-1.25
    • 714e431 Merge pull request #111657 from aojea/hc_nodeport
    • 8608211 Merge pull request #109090 from sarveshr7/multicidr-rangeallocator
    • b88698c Merge pull request #111258 from dobsonj/kep-596-ga-feature-flag
    • 2f9e588 Merge pull request #111113 from mimowo/retriable-pod-failures-job-controller
    • 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.3 to 0.13.1

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

    Bumps sigs.k8s.io/controller-runtime from 0.12.3 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

    v0.13.0

    changes since v0.12.3

    :warning: Breaking Changes

    • Do not mutate the global warning handler (#1944)
    • Add GetOptions as optional argument of client.Reader and all its implementation (#1917)

    :sparkles: New Features

    • Bump golangci lint to v1.49.0 (#1988)
    • Update k8s API to v1.25 (#1985)
    • Implement IgnoreAlreadyExists (#1965)
    • Bump k8s v0.25.0-alpha.3 (#1967)
    • webhook: add an option to recover from panics in handler (#1900)
    • Provide access to admission.Request in custom validator/defaulter (#1950)
    • komega: add EqualObject matcher (#1833)
    • fix some typos (#1924)
    • Allow TLS to be entirely configured on webhook server (#1897)

    :bug: Bug Fixes

    • Rearange EventBroadcaster log statement. (#1974)
    • Fix log depth for DelegatingLogSink (#1975)
    • Remove no-op clientgo reflector metrics (#1946)
    • Fix webhook write response error for broken HTTP connection (#1930)
    • Fix issue with starting multiple test envs (#1910)
    • don't override global log in builder (#1907)
    • skip mutation handler when received deletion verb (#1765)
    • fix loading CRDs from multiple directories in envtests (#1904)

    Thanks to all our contributors!

    Commits
    • 44c5d50 Merge pull request #2028 from k8s-infra-cherrypick-robot/cherry-pick-2023-to-...
    • 271f9e6 Add tls options to manager.Options
    • d242fe2 Merge pull request #1988 from sbueringer/pr-bump-golangci-lint
    • 4b208ab Bump golangci lint to v1.49.0
    • 02dc464 Merge pull request #1985 from Fedosin/k8s_v125
    • 0873d15 Bump k8s libs to v1.25
    • 7a5d60d Merge pull request #1983 from nakamasato/fix-reconciler-comment
    • 3ba8cf0 docs: update doc for reconcile example
    • 2d210d0 Merge pull request #1965 from rstefan1/implement-ignore-already-exists
    • c2c26e3 Implement IgnoreAlreadyExists
    • 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 k8s.io/apimachinery from 0.24.3 to 0.25.3

    Bump k8s.io/apimachinery from 0.24.3 to 0.25.3

    Bumps k8s.io/apimachinery from 0.24.3 to 0.25.3.

    Commits
    • cf171ba Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • cb0507f Updated vendor to the new preferred versions.
    • 478dd6e Merge pull request #112527liggitt/automated-cherry-pick-of-#112526
    • 14bc1be Limit redirect proxy handling to redirected responses
    • 8252641 Merge pull request #112330enj/automated-cherry-pick-of-#112193
    • 10b456c Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 4759a80 Add an option for aggregator
    • 3296217 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 117bd9b Merge pull request #111113 from mimowo/retriable-pod-failures-job-controller
    • 74deb3d Merge pull request #111696 from liggitt/go119mod
    • 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 k8s.io/api from 0.24.3 to 0.25.3

    Bump k8s.io/api from 0.24.3 to 0.25.3

    Bumps k8s.io/api from 0.24.3 to 0.25.3.

    Commits
    • 8384a1b Update dependencies to v0.25.3 tag
    • e7b469b Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 1102e6f Updated vendor to the new preferred versions.
    • fce3016 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 29513a2 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 5c4a1b1 Merge remote-tracking branch 'origin/master' into release-1.25
    • 714e431 Merge pull request #111657 from aojea/hc_nodeport
    • 8608211 Merge pull request #109090 from sarveshr7/multicidr-rangeallocator
    • b88698c Merge pull request #111258 from dobsonj/kep-596-ga-feature-flag
    • 2f9e588 Merge pull request #111113 from mimowo/retriable-pod-failures-job-controller
    • 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 k8s.io/client-go from 0.24.3 to 0.25.3

    Bump k8s.io/client-go from 0.24.3 to 0.25.3

    Bumps k8s.io/client-go from 0.24.3 to 0.25.3.

    Commits
    • 62756ee Update dependencies to v0.25.3 tag
    • 166ab05 Merge pull request #112808cheftako/automated-cherry-pick-of-#112689
    • 4b5a638 Updated vendor to the new preferred versions.
    • 1904631 Merge pull request #112161pohly/automated-cherry-pick-of-#112129
    • 8f4eb75 Merge pull request #112336enj/automated-cherry-pick-of-#112017
    • e278668 dependencies: update to ginkgo v2.1.6 and gomega v1.20.1
    • 1874bc6 exec auth: support TLS config caching
    • db7e2d8 Merge pull request #112055aanm/automated-cherry-pick-of-#111752
    • c9008f3 client-go/rest: check if url is nil to prevent nil pointer dereference
    • 1a46dfd Revert "client-go: remove no longer used finalURLTemplate"
    • 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.3 to 0.14.1

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

    Bumps sigs.k8s.io/controller-runtime from 0.12.3 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 k8s.io/api from 0.24.3 to 0.26.0

    Bump k8s.io/api from 0.24.3 to 0.26.0

    Bumps k8s.io/api from 0.24.3 to 0.26.0.

    Commits
    • 2ee9a6c Update dependencies to v0.26.0 tag
    • 07ac8fe Merge remote-tracking branch 'origin/master' into release-1.26
    • 566ee01 Update golang.org/x/net 1e63c2f
    • b966dc9 sync: update go.mod
    • 053624e Merge pull request #111023 from pohly/dynamic-resource-allocation
    • 3590eda Merge pull request #113375 from atiratree/PodHealthyPolicy-api
    • 5a4f9a5 generated
    • 5cb3202 Merge pull request #113186 from ttakahashi21/KEP-3294
    • 993c43c api: add UnhealthyPodEvictionPolicy for PDBs
    • dfd6ea2 Generate code
    • 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 k8s.io/apimachinery from 0.24.3 to 0.26.0

    Bump k8s.io/apimachinery from 0.24.3 to 0.26.0

    Bumps k8s.io/apimachinery from 0.24.3 to 0.26.0.

    Commits
    • 5d4cdd2 Merge remote-tracking branch 'origin/master' into release-1.26
    • 6cbc4a3 Update golang.org/x/net 1e63c2f
    • 6561235 Merge pull request #113699 from liggitt/manjusaka/fix-107415
    • dad8cd8 Update workload selector validation
    • fe82462 Add extra value validation for matchExpression field in LabelSelector
    • 067949d update k8s.io/utils to fix util tracing panic
    • 0ceff90 Merge pull request #112223 from astraw99/fix-ownerRef-validate
    • 9e85d3a Merge pull request #112649 from howardjohn/set/optimize-everything-nothing
    • 88a1448 Rename and comment on why sharing is safe
    • b03a432 Merge pull request #113367 from pohly/dep-ginkgo-gomega
    • 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 k8s.io/client-go from 0.24.3 to 0.26.0

    Bump k8s.io/client-go from 0.24.3 to 0.26.0

    Bumps k8s.io/client-go from 0.24.3 to 0.26.0.

    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)
  • Bump github.com/stretchr/testify from 1.8.0 to 1.8.1

    Bump github.com/stretchr/testify from 1.8.0 to 1.8.1

    Bumps github.com/stretchr/testify from 1.8.0 to 1.8.1.

    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)
  • Bump imranismail/setup-kustomize from 1 to 2

    Bump imranismail/setup-kustomize from 1 to 2

    Bumps imranismail/setup-kustomize from 1 to 2.

    Release notes

    Sourced from imranismail/setup-kustomize's releases.

    v2.0.0

    Breaking Change

    • fail-fast now defaults to true

    Full Changelog: https://github.com/imranismail/setup-kustomize/compare/v1.7.3...v2.0.0

    v1.7.3

    Full Changelog: https://github.com/imranismail/setup-kustomize/compare/v1.7.2...v1.7.3

    v1.7.2

    What's Changed

    Full Changelog: https://github.com/imranismail/setup-kustomize/compare/v1.7.1...v1.7.2

    v1.7.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/imranismail/setup-kustomize/compare/v1.7.0...v1.7.1

    v1.7.0

    Changes

    • Added fail-fast to allow failing without retry. Thanks to @​toelke

    v1.6.1

    What's Changed

    Full Changelog: https://github.com/imranismail/setup-kustomize/compare/v1...v1.6.1

    v1.6.0

    No release notes provided.

    v1.5.4

    ... (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)
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
Kubernetes operator providing CRDs to interact with NETCONF servers.

NETCONF operator This operator is meant to provide support for: RFC6241 Network Configuration Protocol (NETCONF) RFC6242 Using the NETCONF Protocol ov

Nov 17, 2021
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
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
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
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.

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

Nov 25, 2022
The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 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

Dec 19, 2022
Kubernetes Operator to sync secrets between different secret backends and Kubernetes

Vals-Operator Here at Digitalis we love vals, it's a tool we use daily to keep secrets stored securely. We also use secrets-manager on the Kubernetes

Nov 13, 2022
The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.
The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.

Dec 26, 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
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
Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install. The permissions are aggregated from the following sources:

Apr 22, 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.

May 19, 2021
Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023
Modular Kubernetes operator to manage the lifecycle of databases

Ensemble Ensemble is a simple and modular Kubernetes Operator to manage the lifecycle of a wide range of databases. Infrastructure as code with Kubern

Aug 12, 2022
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

flagger Flagger is a progressive delivery tool that automates the release process for applications running on Kubernetes. It reduces the risk of intro

Jan 5, 2023