Git Product home page Git Product logo

cert-manager-webhook-websupport's Introduction

ACME webhook for Websupport DNS

The ACME issuer type supports an optional 'webhook' solver, which can be used to implement custom DNS01 challenge solving logic. This is a implementation of such solver that supports DNS01 challenge with websupport DNS API.

More information about webhooks can be found: https://cert-manager.io/docs/configuration/acme/dns01/webhook/

Warning

Please note, that this is not official websupport cert-manager webhook, but rather community maintained one.

Note

Currently, latest release supports these Kubernetes versions: v1.22 โ†’ v1.28.

Usage

You have to have a working installation of cert-manager in your kubernetes cluster, before installing this webhook. You can follow these official instructions to install it.

Installation

This repository contains helm chart for deploying the webhook to kubernetes cluster. It is located in deploy/ directory. You can build it by running by Helm, for example

helm template \
    --set image.repository=websupport-webhook \
    --set image.tag=latest \
    --namespace=cert-manager \
    cert-manager-webhook-websupport \
    deploy/cert-manager-webhook-websupport > manifest.yaml

or with make by running

make rendered-manifest

The latter one will generated the same manifest as you would get with the helm template command and will output it to _out/ folder. Manifest can then be applied by running

kubectl apply -f _out/rendered_manifest.yaml

Or lastly you can install directly through Helm and GitHub release

helm repo add webhook-websupport https://github.com/bratislava/cert-manager-webhook-websupport/releases/download/<release-name>/
helm install cert-manager-webhook-websupport webhook-websupport/cert-manager-webhook-websupport  

This should install cert-manager into the cluster, to be able to issue certificates under it you need to create an ClusterIssuer under the cert-manager.

First you need to obtain websupport API credentials: https://www.websupport.sk/podpora/kb/api-keys/. Store them as a secret in the cluster

kubectl --namespace cert-manager create secret generic websupport-secret \
  --from-literal="ApiKey=<obtain-key>" \
  --from-literal="ApiSecret=<obtain-secret>"

and then create ClusterIssuer resource, with reference to your secret

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-dns01
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: [email protected]
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-issuer-account-key
    solvers:
    - dns01:
        webhook:
          config:
            apiKeySecretRef:
              name: websupport-secret
          groupName: cert-manager.io
          solverName: websupport-solver

Depending on the version of your kubernetes and/or your cert-manager you might need to grant additional permissions.

Issue an certificate

Just create an Certificate resource, with issuer name, that you have given to your solver in previous step (in our example it is letsencrypt-dns01).

cat <<EOF | kubectl create --edit -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: example-tls
spec:
  secretName: example-com-tls
  dnsNames:
  - example.com
  - "*.example.com"
  issuerRef:
    name: letsencrypt-dns01
    kind: ClusterIssuer
EOF

Or you can do it by annotating you ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # add an annotation indicating the issuer to use.
    cert-manager.io/cluster-issuer: letsencrypt-dns01

Running the test suite

๐Ÿ“™ Currently, we do not have automated testing, and running the test will just run the example one. But we are always looking for contribution so please feel free to contribute ๐Ÿ˜„.

All DNS providers must run the DNS01 provider conformance testing suite, else they will have undetermined behaviour when used with cert-manager.

It is essential that you configure and run the test suite when creating a DNS01 webhook.

An example Go test file has been provided in main_test.go.

You can run the test suite with:

$ TEST_ZONE_NAME=example.com. make test

The example file has a number of areas you must fill in and replace with your own options in order for tests to pass.

cert-manager-webhook-websupport's People

Contributors

sotolko avatar vidriduch avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

sotolko

cert-manager-webhook-websupport's Issues

Observed a panic: runtime error: index out of range [0] with length 0

Postupoval som podla README a deployol som websupport-webhook (Dockerfile som si vybuildovatl a pushol na softpoint/websupport-webhook ktory je public.

Potom som si nastavil DNS smerovanie pre *.test na IPcku Kubernetes gateway v MS Azure, a nasadil Cert:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: letsencrypt-ey-bpm-wildcard-cert
spec:
  secretName: wildcard.test.ey-bpm.com-tls
  dnsNames:
    - "*.test.ey-bpm.com"
  issuerRef:
    name: letsencrypt-ey-bpmn-dns01
    kind: ClusterIssuer
  renewBefore: "720h"

Vyzera to, ze ten webhook sa pokusi upravit DNS zaznam, ale potom to spadne a dostavam nasledujuci error:

I0421 11:20:17.324735       1 main.go:146] cert-manager/websupport-solver "msg"="Attempting to delete record '_acme-challenge.test.ey-bpm.com.' with content 'ccRHyd19-gk4mLdoBG2LXNJB7Dq93bL_N1IrXxopH2w'"  
E0421 11:20:17.668156       1 runtime.go:76] Observed a panic: runtime error: index out of range [0] with length 0
goroutine 632 [running]:
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:105 +0xaf
panic({0x1cc4b80, 0xc0006d6018})
	/usr/local/go/src/runtime/panic.go:838 +0x207
github.com/bratislava/cert-manager-webhook-websupport/websupport.(*WebsupportError).Error(0xc000545660?)
	/workspace/websupport/client.go:47 +0x33
github.com/jetstack/cert-manager/pkg/acme/webhook/registry/challengepayload.(*REST).callSolver(0xc0005fc760, {{0x0, 0x0}, {0xc00063ac10, 0x7}, {0xc00063ac18, 0x6}, {0xc00063ac20, 0xf}, {0xc000114f60, ...}, ...})
	/go/pkg/mod/github.com/jetstack/[email protected]/pkg/acme/webhook/registry/challengepayload/challenge_payload.go:98 +0x17a
github.com/jetstack/cert-manager/pkg/acme/webhook/registry/challengepayload.(*REST).Create(0x0?, {0xc0003fb501?, 0xc000681050?}, {0x20d76c8?, 0xc000681050}, 0x20f1fc0?, 0x20f9e88?)
	/go/pkg/mod/github.com/jetstack/[email protected]/pkg/acme/webhook/registry/challengepayload/challenge_payload.go:66 +0xe5
k8s.io/apiserver/pkg/endpoints/handlers.(*namedCreaterAdapter).Create(0x0?, {0x20f07f0?, 0xc000540750?}, {0xc000256fc0?, 0x20f1fc0?}, {0x20d76c8?, 0xc000681050?}, 0xc000734ab0?, 0x24?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:221 +0x42
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:153 +0xd8
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1.2()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:179 +0x40d
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest.func1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:117 +0x8f
created by k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:92 +0xde

goroutine 620 [running]:
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:103 +0xb0
panic({0x1a454c0, 0xc0003926d0})
	/usr/local/go/src/runtime/panic.go:838 +0x207
k8s.io/apiserver/pkg/endpoints/handlers/finisher.(*result).Return(0xc0004cb330?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:53 +0xbc
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest({0x20f07f0, 0xc000540750}, 0xc00063c1e0, 0x45d964b800, 0x1efe410)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:126 +0x174
k8s.io/apiserver/pkg/endpoints/handlers/finisher.FinishRequest(...)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:84
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1({0x20ee1e8, 0xc00000ed10}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:163 +0x1c52
k8s.io/apiserver/pkg/endpoints.restfulCreateResource.func1(0xc000680e10, 0xc0003d5260)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/installer.go:1186 +0xcb
k8s.io/apiserver/pkg/endpoints/metrics.InstrumentRouteFunc.func1(0xc000680e10, 0xc0003d5260)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/metrics/metrics.go:484 +0x2e2
github.com/emicklei/go-restful.(*Container).dispatch(0xc00074d9e0, {0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/github.com/emicklei/[email protected]+incompatible/container.go:288 +0x8c8
github.com/emicklei/go-restful.(*Container).Dispatch(...)
	/go/pkg/mod/github.com/emicklei/[email protected]+incompatible/container.go:199
k8s.io/apiserver/pkg/server.director.ServeHTTP({{0x1e072d6?, 0x0?}, 0xc00074d9e0?, 0xc000156e70?}, {0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/handler.go:146 +0x606
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0xc00055e540?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithAuthorization.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/authorization.go:64 +0x498
net/http.HandlerFunc.ServeHTTP(0xc000830990?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc000717840?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x40d7e7?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.WithPriorityAndFairness.func1.8()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/priority-and-fairness.go:247 +0xf6
k8s.io/apiserver/pkg/util/flowcontrol.(*configController).Handle.func2()
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/apf_filter.go:181 +0x1e7
k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset.(*request).Finish.func1(0xc0001f6c00?, 0xc0007c0990?, 0x40d7e7?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go:338 +0x65
k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset.(*request).Finish(0xc000058af0?, 0xc?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go:339 +0x45
k8s.io/apiserver/pkg/util/flowcontrol.(*configController).Handle(0xc0000ded80, {0x20f07f0?, 0xc0007411d0}, {0xc0005eadc0?, {0x20f0e80?, 0xc0007175c0?}, {0x0?}}, 0xc0005533e0, 0x1?, 0xc0004a6e60)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/apf_filter.go:171 +0x902
k8s.io/apiserver/pkg/server/filters.WithPriorityAndFairness.func1({0x7f4ca4a07a98?, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/priority-and-fairness.go:250 +0xd5d
net/http.HandlerFunc.ServeHTTP(0xc0008307e0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc000712d80?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1000000000000?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithImpersonation.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/impersonation.go:50 +0x21c
net/http.HandlerFunc.ServeHTTP(0xc0008306c0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc0008305a0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x20cd780?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withAuthentication.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/authentication.go:80 +0x8b9
net/http.HandlerFunc.ServeHTTP(0x20f07b8?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1800)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:88 +0x46b
net/http.HandlerFunc.ServeHTTP(0x8da0c0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0xc00081c780?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP.func1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:108 +0xa2
created by k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:94 +0x2cc

goroutine 630 [running]:
k8s.io/apimachinery/pkg/util/runtime.logPanic({0x1a454c0?, 0xc000392ce0})
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:74 +0x99
k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0xc000455070, 0x1, 0x17954a6?})
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:48 +0x75
panic({0x1a454c0, 0xc000392ce0})
	/usr/local/go/src/runtime/panic.go:838 +0x207
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP(0xc000752480, {0x20ee2a8?, 0xc000564980}, 0xdf8475800?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:114 +0x452
k8s.io/apiserver/pkg/endpoints/filters.withRequestDeadline.func1({0x20ee2a8, 0xc000564980}, 0xc0005f1700)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/request_deadline.go:101 +0x494
net/http.HandlerFunc.ServeHTTP(0x0?, {0x20ee2a8?, 0xc000564980?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.WithWaitGroup.func1({0x20ee2a8?, 0xc000564980}, 0xc0005f1700)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/waitgroup.go:59 +0x177
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20ee2a8?, 0xc000564980?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithWarningRecorder.func1({0x20ee2a8?, 0xc000564980}, 0xc0005f1600)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/warning.go:35 +0x2bb
net/http.HandlerFunc.ServeHTTP(0x1c77a80?, {0x20ee2a8?, 0xc000564980?}, 0xd?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithCacheControl.func1({0x20ee2a8, 0xc000564980}, 0x0?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/cachecontrol.go:31 +0x126
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20ee2a8?, 0xc000564980?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/httplog.WithLogging.func1({0x20e3ef8?, 0xc00000ece0}, 0xc0005f1500)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/httplog/httplog.go:103 +0x518
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20e3ef8?, 0xc00000ece0?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithRequestInfo.func1({0x20e3ef8, 0xc00000ece0}, 0xc0005f1400)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/requestinfo.go:39 +0x316
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20e3ef8?, 0xc00000ece0?}, 0x203000?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withRequestReceivedTimestampWithClock.func1({0x20e3ef8, 0xc00000ece0}, 0xc0005f1300)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/request_received_time.go:38 +0x27e
net/http.HandlerFunc.ServeHTTP(0x160?, {0x20e3ef8?, 0xc00000ece0?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.withPanicRecovery.func1({0x20e3ef8?, 0xc00000ece0?}, 0xc000764b00?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/wrap.go:74 +0xb1
net/http.HandlerFunc.ServeHTTP(0x1c77a80?, {0x20e3ef8?, 0xc00000ece0?}, 0x8?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withAuditID.func1({0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/with_auditid.go:66 +0x40d
net/http.HandlerFunc.ServeHTTP(0xc00037fca0?, {0x20e3ef8?, 0xc00000ece0?}, 0x24?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server.(*APIServerHandler).ServeHTTP(0x0?, {0x20e3ef8?, 0xc00000ece0?}, 0xc0002b0fe8?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/handler.go:189 +0x2b
net/http.serverHandler.ServeHTTP({0x6f78c0?}, {0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/usr/local/go/src/net/http/server.go:2916 +0x43b
net/http.initALPNRequest.ServeHTTP({{0x20f07f0?, 0xc0007aa7b0?}, 0xc0002b0e00?, {0xc0001b6a80?}}, {0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/usr/local/go/src/net/http/server.go:3523 +0x245
golang.org/x/net/http2.(*serverConn).runHandler(0x20dfc88?, 0x3035698?, 0x0?, 0x0?)
	/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:2158 +0x78
created by golang.org/x/net/http2.(*serverConn).processHeaders
	/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:1888 +0x52b
E0421 11:20:17.668203       1 wrap.go:58] "apiserver panic'd" method="POST" URI="/apis/cert-manager.io/v1alpha1/websupport-solver" audit-ID="9eb0b550-e875-47b9-b497-ba4ec636a36b"
http2: panic serving 172.24.112.72:50126: runtime error: index out of range [0] with length 0
goroutine 632 [running]:
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:105 +0xaf
panic({0x1cc4b80, 0xc0006d6018})
	/usr/local/go/src/runtime/panic.go:838 +0x207
github.com/bratislava/cert-manager-webhook-websupport/websupport.(*WebsupportError).Error(0xc000545660?)
	/workspace/websupport/client.go:47 +0x33
github.com/jetstack/cert-manager/pkg/acme/webhook/registry/challengepayload.(*REST).callSolver(0xc0005fc760, {{0x0, 0x0}, {0xc00063ac10, 0x7}, {0xc00063ac18, 0x6}, {0xc00063ac20, 0xf}, {0xc000114f60, ...}, ...})
	/go/pkg/mod/github.com/jetstack/[email protected]/pkg/acme/webhook/registry/challengepayload/challenge_payload.go:98 +0x17a
github.com/jetstack/cert-manager/pkg/acme/webhook/registry/challengepayload.(*REST).Create(0x0?, {0xc0003fb501?, 0xc000681050?}, {0x20d76c8?, 0xc000681050}, 0x20f1fc0?, 0x20f9e88?)
	/go/pkg/mod/github.com/jetstack/[email protected]/pkg/acme/webhook/registry/challengepayload/challenge_payload.go:66 +0xe5
k8s.io/apiserver/pkg/endpoints/handlers.(*namedCreaterAdapter).Create(0x0?, {0x20f07f0?, 0xc000540750?}, {0xc000256fc0?, 0x20f1fc0?}, {0x20d76c8?, 0xc000681050?}, 0xc000734ab0?, 0x24?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:221 +0x42
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:153 +0xd8
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1.2()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:179 +0x40d
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest.func1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:117 +0x8f
created by k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:92 +0xde

goroutine 620 [running]:
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP.func1.1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:103 +0xb0
panic({0x1a454c0, 0xc0003926d0})
	/usr/local/go/src/runtime/panic.go:838 +0x207
k8s.io/apiserver/pkg/endpoints/handlers/finisher.(*result).Return(0xc0004cb330?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:53 +0xbc
k8s.io/apiserver/pkg/endpoints/handlers/finisher.finishRequest({0x20f07f0, 0xc000540750}, 0xc00063c1e0, 0x45d964b800, 0x1efe410)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:126 +0x174
k8s.io/apiserver/pkg/endpoints/handlers/finisher.FinishRequest(...)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/finisher/finisher.go:84
k8s.io/apiserver/pkg/endpoints/handlers.createHandler.func1({0x20ee1e8, 0xc00000ed10}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/handlers/create.go:163 +0x1c52
k8s.io/apiserver/pkg/endpoints.restfulCreateResource.func1(0xc000680e10, 0xc0003d5260)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/installer.go:1186 +0xcb
k8s.io/apiserver/pkg/endpoints/metrics.InstrumentRouteFunc.func1(0xc000680e10, 0xc0003d5260)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/metrics/metrics.go:484 +0x2e2
github.com/emicklei/go-restful.(*Container).dispatch(0xc00074d9e0, {0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/github.com/emicklei/[email protected]+incompatible/container.go:288 +0x8c8
github.com/emicklei/go-restful.(*Container).Dispatch(...)
	/go/pkg/mod/github.com/emicklei/[email protected]+incompatible/container.go:199
k8s.io/apiserver/pkg/server.director.ServeHTTP({{0x1e072d6?, 0x0?}, 0xc00074d9e0?, 0xc000156e70?}, {0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/handler.go:146 +0x606
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0xc00055e540?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithAuthorization.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/authorization.go:64 +0x498
net/http.HandlerFunc.ServeHTTP(0xc000830990?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc000717840?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x40d7e7?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.WithPriorityAndFairness.func1.8()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/priority-and-fairness.go:247 +0xf6
k8s.io/apiserver/pkg/util/flowcontrol.(*configController).Handle.func2()
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/apf_filter.go:181 +0x1e7
k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset.(*request).Finish.func1(0xc0001f6c00?, 0xc0007c0990?, 0x40d7e7?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go:338 +0x65
k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset.(*request).Finish(0xc000058af0?, 0xc?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go:339 +0x45
k8s.io/apiserver/pkg/util/flowcontrol.(*configController).Handle(0xc0000ded80, {0x20f07f0?, 0xc0007411d0}, {0xc0005eadc0?, {0x20f0e80?, 0xc0007175c0?}, {0x0?}}, 0xc0005533e0, 0x1?, 0xc0004a6e60)
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/flowcontrol/apf_filter.go:171 +0x902
k8s.io/apiserver/pkg/server/filters.WithPriorityAndFairness.func1({0x7f4ca4a07a98?, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/priority-and-fairness.go:250 +0xd5d
net/http.HandlerFunc.ServeHTTP(0xc0008307e0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc000712d80?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1000000000000?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithImpersonation.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/impersonation.go:50 +0x21c
net/http.HandlerFunc.ServeHTTP(0xc0008306c0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0xc0008305a0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x1?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:79 +0x178
net/http.HandlerFunc.ServeHTTP(0x0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackCompleted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:103 +0x1a5
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x20cd780?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withAuthentication.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1a00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/authentication.go:80 +0x8b9
net/http.HandlerFunc.ServeHTTP(0x20f07b8?, {0x7f4ca4a07a98?, 0xc000128688?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filterlatency.trackStarted.func1({0x7f4ca4a07a98, 0xc000128688}, 0xc0005f1800)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filterlatency/filterlatency.go:88 +0x46b
net/http.HandlerFunc.ServeHTTP(0x8da0c0?, {0x7f4ca4a07a98?, 0xc000128688?}, 0xc00081c780?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP.func1()
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:108 +0xa2
created by k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:94 +0x2cc

goroutine 630 [running]:
golang.org/x/net/http2.(*serverConn).runHandler.func1()
	/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:2151 +0x125
panic({0x1a454c0, 0xc000392ce0})
	/usr/local/go/src/runtime/panic.go:838 +0x207
k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0xc000455070, 0x1, 0x17954a6?})
	/go/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:55 +0xd8
panic({0x1a454c0, 0xc000392ce0})
	/usr/local/go/src/runtime/panic.go:838 +0x207
k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP(0xc000752480, {0x20ee2a8?, 0xc000564980}, 0xdf8475800?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/timeout.go:114 +0x452
k8s.io/apiserver/pkg/endpoints/filters.withRequestDeadline.func1({0x20ee2a8, 0xc000564980}, 0xc0005f1700)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/request_deadline.go:101 +0x494
net/http.HandlerFunc.ServeHTTP(0x0?, {0x20ee2a8?, 0xc000564980?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.WithWaitGroup.func1({0x20ee2a8?, 0xc000564980}, 0xc0005f1700)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/waitgroup.go:59 +0x177
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20ee2a8?, 0xc000564980?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithWarningRecorder.func1({0x20ee2a8?, 0xc000564980}, 0xc0005f1600)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/warning.go:35 +0x2bb
net/http.HandlerFunc.ServeHTTP(0x1c77a80?, {0x20ee2a8?, 0xc000564980?}, 0xd?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithCacheControl.func1({0x20ee2a8, 0xc000564980}, 0x0?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/cachecontrol.go:31 +0x126
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20ee2a8?, 0xc000564980?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/httplog.WithLogging.func1({0x20e3ef8?, 0xc00000ece0}, 0xc0005f1500)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/httplog/httplog.go:103 +0x518
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20e3ef8?, 0xc00000ece0?}, 0x20cd778?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.WithRequestInfo.func1({0x20e3ef8, 0xc00000ece0}, 0xc0005f1400)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/requestinfo.go:39 +0x316
net/http.HandlerFunc.ServeHTTP(0x20f07f0?, {0x20e3ef8?, 0xc00000ece0?}, 0x203000?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withRequestReceivedTimestampWithClock.func1({0x20e3ef8, 0xc00000ece0}, 0xc0005f1300)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/request_received_time.go:38 +0x27e
net/http.HandlerFunc.ServeHTTP(0x160?, {0x20e3ef8?, 0xc00000ece0?}, 0x0?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server/filters.withPanicRecovery.func1({0x20e3ef8?, 0xc00000ece0?}, 0xc000764b00?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/filters/wrap.go:74 +0xb1
net/http.HandlerFunc.ServeHTTP(0x1c77a80?, {0x20e3ef8?, 0xc00000ece0?}, 0x8?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/endpoints/filters.withAuditID.func1({0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/go/pkg/mod/k8s.io/[email protected]/pkg/endpoints/filters/with_auditid.go:66 +0x40d
net/http.HandlerFunc.ServeHTTP(0xc00037fca0?, {0x20e3ef8?, 0xc00000ece0?}, 0x24?)
	/usr/local/go/src/net/http/server.go:2084 +0x2f
k8s.io/apiserver/pkg/server.(*APIServerHandler).ServeHTTP(0x0?, {0x20e3ef8?, 0xc00000ece0?}, 0xc0002b0fe8?)
	/go/pkg/mod/k8s.io/[email protected]/pkg/server/handler.go:189 +0x2b
net/http.serverHandler.ServeHTTP({0x6f78c0?}, {0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/usr/local/go/src/net/http/server.go:2916 +0x43b
net/http.initALPNRequest.ServeHTTP({{0x20f07f0?, 0xc0007aa7b0?}, 0xc0002b0e00?, {0xc0001b6a80?}}, {0x20e3ef8, 0xc00000ece0}, 0xc0006d3f00)
	/usr/local/go/src/net/http/server.go:3523 +0x245
golang.org/x/net/http2.(*serverConn).runHandler(0x20dfc88?, 0x3035698?, 0x0?, 0x0?)
	/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:2158 +0x78
created by golang.org/x/net/http2.(*serverConn).processHeaders
	/go/pkg/mod/golang.org/x/[email protected]/http2/server.go:1888 +0x52b
W0421 11:26:43.833638       1 warnings.go:70] flowcontrol.apiserver.k8s.io/v1beta1 FlowSchema is deprecated in v1.23+, unavailable in v1.26+; use flowcontrol.apiserver.k8s.io/v1beta2 FlowSchema
W0421 11:26:47.832460       1 warnings.go:70] flowcontrol.apiserver.k8s.io/v1beta1 PriorityLevelConfiguration is deprecated in v1.23+, unavailable in v1.26+; use flowcontrol.apiserver.k8s.io/v1beta2 PriorityLevelConfiguration

Public image not available

Public docker image not available mentioned in the setup manual. Make image repo public so it can be used by anyone.

Otherwise fully working DNS solver, tested by building the image manually and hosting on a private registry.

Error presenting challenge, problem with groupName

I have issues deploying this into my kubernetes cluster. I am recieving this error

Error presenting challenge: <REDACTED> is forbidden: User "system:serviceaccount:public-ingress:cert-manager" cannot create resource "websupport-solver" in API group "cert-manager" at the cluster scope

I was trying to find something about this issue at other webhooks, and I found this
https://github.com/puzzle/cert-manager-webhook-dnsimple/issues/18

Specifically I checked this

That said, the subject of the :domain-solver ClusterRoleBinding is set according to the values of the certManager object in values.yaml.

I think this problem occurs because I have two cluster issuers, and both use same default group (cert-manager.io). Then there is clash between these two.

Compatibility with Kubernetes 1.26+

Is this repo compatible with Kubernetes 1.26+?

Running on 1.25 on MS Azure we receive following message during update to higher version of Kubernetes:

image

Will this websupport webhook work after upgrade too?

W0305 06:22:18.160127       1 warnings.go:70] flowcontrol.apiserver.k8s.io/v1beta1 PriorityLevelConfiguration is deprecated in v1.23+, unavailable in v1.26+; use flowcontrol.apiserver.k8s.io/v1beta2 PriorityLevelConfiguration
W0305 06:22:22.153118       1 warnings.go:70] flowcontrol.apiserver.k8s.io/v1beta1 FlowSchema is deprecated in v1.23+, unavailable in v1.26+; use flowcontrol.apiserver.k8s.io/v1beta2 FlowSchema

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.