diff --git a/Makefile b/Makefile index b0209c53..a5a66cbc 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ .DEFAULT_GOAL := build GO ?= go -GO_RUN_TOOLS ?= $(GO) run -modfile ./tools/go.mod -GO_TEST = $(GO_RUN_TOOLS) gotest.tools/gotestsum --format pkgname -GO_RELEASER ?= $(GO_RUN_TOOLS) github.com/goreleaser/goreleaser -GO_MOD ?= $(shell ${GO} list -m) +GO_RUN_TOOLS ?= $(GO) run -modfile ./tools/go.mod +GO_TEST ?= $(GO_RUN_TOOLS) gotest.tools/gotestsum --format pkgname +GO_RELEASER ?= $(GO_RUN_TOOLS) github.com/goreleaser/goreleaser +GO_KO ?= $(GO_RUN_TOOLS) github.com/google/ko +GO_MOD ?= $(shell ${GO} list -m) +BASE_DIR ?= $(CURDIR) .PHONY: build build: ## Build the binary file. @@ -40,6 +42,10 @@ clean: ## Remove previous build. find . -type f -name '*.gen.go' -exec rm {} + git checkout go.mod +.PHONY: deploy +deploy: ## Deploy the application. + $(GO_KO) resolve -f $(BASE_DIR)/config > $(BASE_DIR)/typhoon.yaml + .PHONY: help help: ## Display this help screen. @grep -E '^[a-z.A-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/cmd/cloudeventssource-adapter/main.go b/cmd/cloudeventssource-adapter/main.go new file mode 100644 index 00000000..0e39e4db --- /dev/null +++ b/cmd/cloudeventssource-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/sources/adapter/cloudeventssource" +) + +func main() { + adapter.Main("cloudevents", cloudeventssource.NewEnvConfig, cloudeventssource.NewAdapter) +} diff --git a/cmd/cloudeventstarget-adapter/main.go b/cmd/cloudeventstarget-adapter/main.go new file mode 100644 index 00000000..ce1b5233 --- /dev/null +++ b/cmd/cloudeventstarget-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + pkgadapter "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/targets/adapter/cloudeventstarget" +) + +func main() { + pkgadapter.Main("cloudeventstarget", cloudeventstarget.EnvAccessorCtor, cloudeventstarget.NewTarget) +} diff --git a/cmd/filter-adapter/main.go b/cmd/filter-adapter/main.go new file mode 100644 index 00000000..143b7980 --- /dev/null +++ b/cmd/filter-adapter/main.go @@ -0,0 +1,10 @@ +package main + +import ( + "github.com/zeiss/typhoon/pkg/routing/adapter/common/sharedmain" + "github.com/zeiss/typhoon/pkg/routing/adapter/filter" +) + +func main() { + sharedmain.MainWithController(filter.NewEnvConfig, filter.NewController, filter.NewAdapter) +} diff --git a/cmd/httppollersource-adapter/main.go b/cmd/httppollersource-adapter/main.go new file mode 100644 index 00000000..ecbf575b --- /dev/null +++ b/cmd/httppollersource-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/sources/adapter/httppollersource" +) + +func main() { + adapter.Main("httppoller", httppollersource.NewEnvConfig, httppollersource.NewAdapter) +} diff --git a/cmd/httptarget-adapter/main.go b/cmd/httptarget-adapter/main.go new file mode 100644 index 00000000..94a6cefc --- /dev/null +++ b/cmd/httptarget-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + pkgadapter "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/targets/adapter/httptarget" +) + +func main() { + pkgadapter.Main("httptarget", httptarget.EnvAccessorCtor, httptarget.NewTarget) +} diff --git a/cmd/jqtransformation-adapter/main.go b/cmd/jqtransformation-adapter/main.go new file mode 100644 index 00000000..e75a817f --- /dev/null +++ b/cmd/jqtransformation-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + pkgadapter "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/flow/adapter/jqtransformation" +) + +func main() { + pkgadapter.Main("jqtransformation", jqtransformation.EnvAccessorCtor, jqtransformation.NewAdapter) +} diff --git a/cmd/kafkasource-adapter/main.go b/cmd/kafkasource-adapter/main.go new file mode 100644 index 00000000..6497f6cc --- /dev/null +++ b/cmd/kafkasource-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/sources/adapter/kafkasource" +) + +func main() { + adapter.Main("kafkasource", kafkasource.NewEnvConfig, kafkasource.NewAdapter) +} diff --git a/cmd/logztarget-adapter/main.go b/cmd/logztarget-adapter/main.go new file mode 100644 index 00000000..284661eb --- /dev/null +++ b/cmd/logztarget-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + pkgadapter "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/targets/adapter/logztarget" +) + +func main() { + pkgadapter.Main("logztarget", logztarget.EnvAccessorCtor, logztarget.NewTarget) +} diff --git a/cmd/splitter-adapter/main.go b/cmd/splitter-adapter/main.go new file mode 100644 index 00000000..09984242 --- /dev/null +++ b/cmd/splitter-adapter/main.go @@ -0,0 +1,10 @@ +package main + +import ( + "github.com/zeiss/typhoon/pkg/routing/adapter/common/sharedmain" + "github.com/zeiss/typhoon/pkg/routing/adapter/splitter" +) + +func main() { + sharedmain.MainWithController(splitter.NewEnvConfig, splitter.NewController, splitter.NewAdapter) +} diff --git a/cmd/synchronizer-adapter/main.go b/cmd/synchronizer-adapter/main.go new file mode 100644 index 00000000..4bca5945 --- /dev/null +++ b/cmd/synchronizer-adapter/main.go @@ -0,0 +1,10 @@ +package main + +import ( + "github.com/zeiss/typhoon/pkg/flow/adapter/synchronizer" + pkgadapter "knative.dev/eventing/pkg/adapter/v2" +) + +func main() { + pkgadapter.Main("synchronizer", synchronizer.EnvAccessorCtor, synchronizer.NewAdapter) +} diff --git a/cmd/transformation-adapter/main.go b/cmd/transformation-adapter/main.go new file mode 100644 index 00000000..c0091f32 --- /dev/null +++ b/cmd/transformation-adapter/main.go @@ -0,0 +1,10 @@ +package main + +import ( + "github.com/zeiss/typhoon/pkg/flow/adapter/transformation" + pkgadapter "knative.dev/eventing/pkg/adapter/v2" +) + +func main() { + pkgadapter.Main("transformation", transformation.NewEnvConfig, transformation.NewAdapter) +} diff --git a/cmd/webhook/main.go b/cmd/webhook/main.go new file mode 100644 index 00000000..9a7d4c69 --- /dev/null +++ b/cmd/webhook/main.go @@ -0,0 +1,110 @@ +package main + +import ( + "context" + "reflect" + + "k8s.io/apimachinery/pkg/runtime/schema" + "knative.dev/pkg/configmap" + "knative.dev/pkg/controller" + "knative.dev/pkg/injection/sharedmain" + "knative.dev/pkg/signals" + "knative.dev/pkg/webhook" + "knative.dev/pkg/webhook/certificates" + "knative.dev/pkg/webhook/resourcesemantics" + "knative.dev/pkg/webhook/resourcesemantics/defaulting" + "knative.dev/pkg/webhook/resourcesemantics/validation" + + "github.com/zeiss/typhoon/pkg/apis/common/v1alpha1" + extensionsv1alpha1 "github.com/zeiss/typhoon/pkg/apis/extensions/v1alpha1" + flowv1alpha1 "github.com/zeiss/typhoon/pkg/apis/flow/v1alpha1" + routingv1alpha1 "github.com/zeiss/typhoon/pkg/apis/routing/v1alpha1" + sourcesv1alpha1 "github.com/zeiss/typhoon/pkg/apis/sources/v1alpha1" + targetsv1alpha1 "github.com/zeiss/typhoon/pkg/apis/targets/v1alpha1" +) + +var ( + validationTypes = map[schema.GroupVersionKind]resourcesemantics.GenericCRD{} + defaultingTypes = map[schema.GroupVersionKind]resourcesemantics.GenericCRD{ + sourcesv1alpha1.SchemeGroupVersion.WithKind("CloudEventsSource"): &sourcesv1alpha1.CloudEventsSource{}, + routingv1alpha1.SchemeGroupVersion.WithKind("Filter"): &routingv1alpha1.Filter{}, + flowv1alpha1.SchemeGroupVersion.WithKind("XSLTTransformation"): &flowv1alpha1.XSLTTransformation{}, + } +) + +// NewDefaultingAdmissionController returns defaulting webhook controller implementation. +func NewDefaultingAdmissionController(ctx context.Context, cmw configmap.Watcher) *controller.Impl { + return defaulting.NewAdmissionController(ctx, + // Name of the resource webhook. + "defaulting.webhook.typhoon.zeiss.com", + + // The path on which to serve the webhook. + "/defaulting", + + // The resources to default. + defaultingTypes, + + // A function that infuses the context passed to Validate/SetDefaults with custom metadata. + func(ctx context.Context) context.Context { + return ctx + }, + + // Whether to disallow unknown fields. + true, + ) +} + +// NewValidationAdmissionController returns validation webhook controller implementation. +func NewValidationAdmissionController(ctx context.Context, cmw configmap.Watcher) *controller.Impl { + return validation.NewAdmissionController(ctx, + // Name of the resource webhook. + "validation.webhook.typhoon.zeiss.com", + + // The path on which to serve the webhook. + "/validation", + + // The resources to validate. + validationTypes, + + // A function that infuses the context passed to Validate/SetDefaults with custom metadata. + func(ctx context.Context) context.Context { + return ctx + }, + + // Whether to disallow unknown fields. + true, + ) +} + +func main() { + webhookName := webhook.NameFromEnv() + + // Set up a signal context with our webhook options + ctx := webhook.WithOptions(signals.NewContext(), webhook.Options{ + ServiceName: webhookName, + Port: webhook.PortFromEnv(8443), + SecretName: webhookName + "-certs", + }) + + registerValidationType(sourcesv1alpha1.SchemeGroupVersion, sourcesv1alpha1.AllTypes) + registerValidationType(targetsv1alpha1.SchemeGroupVersion, targetsv1alpha1.AllTypes) + registerValidationType(flowv1alpha1.SchemeGroupVersion, flowv1alpha1.AllTypes) + registerValidationType(extensionsv1alpha1.SchemeGroupVersion, extensionsv1alpha1.AllTypes) + registerValidationType(routingv1alpha1.SchemeGroupVersion, routingv1alpha1.AllTypes) + + sharedmain.MainWithContext(ctx, webhookName, + certificates.NewController, + NewDefaultingAdmissionController, + NewValidationAdmissionController, + ) +} + +// registerValidationType registers components in the validation controller. +func registerValidationType(gv schema.GroupVersion, objects []v1alpha1.GroupObject) { + for _, object := range objects { + t := reflect.TypeOf(object.Single) + if admissible, ok := object.Single.(resourcesemantics.GenericCRD); ok { + validationTypes[gv.WithKind(t.Elem().Name())] = admissible + } + } +} diff --git a/cmd/webhooksource-adapter/main.go b/cmd/webhooksource-adapter/main.go new file mode 100644 index 00000000..7d473d06 --- /dev/null +++ b/cmd/webhooksource-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/sources/adapter/webhooksource" +) + +func main() { + adapter.Main("webhook", webhooksource.NewEnvConfig, webhooksource.NewAdapter) +} diff --git a/cmd/xmltojsontransformation-adapter/main.go b/cmd/xmltojsontransformation-adapter/main.go new file mode 100644 index 00000000..955cadbc --- /dev/null +++ b/cmd/xmltojsontransformation-adapter/main.go @@ -0,0 +1,11 @@ +package main + +import ( + pkgadapter "knative.dev/eventing/pkg/adapter/v2" + + "github.com/zeiss/typhoon/pkg/flow/adapter/xmltojsontransformation" +) + +func main() { + pkgadapter.Main("xmltojsontransformation", xmltojsontransformation.EnvAccessorCtor, xmltojsontransformation.NewAdapter) +} diff --git a/cmd/xslttransformation-adapter/Dockerfile b/cmd/xslttransformation-adapter/Dockerfile new file mode 100644 index 00000000..e689c975 --- /dev/null +++ b/cmd/xslttransformation-adapter/Dockerfile @@ -0,0 +1,59 @@ +# (!) Debian 11 'bullseye' must be used in both the builder and final image to +# ensure the compatibility of the GNU libc. +FROM golang:1.20-bullseye as builder + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends libxml2-dev libxslt1-dev liblzma-dev zlib1g-dev + + +WORKDIR /go/triggermesh + +COPY . . +RUN go build -o /xslttransformation-adapter ./cmd/xslttransformation-adapter +# ldd /xslttransformation-adapter +# (i) Entries marked with a '*' are not included in the 'distroless:base' image. +# linux-vdso.so.1 +# * libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 +# * libxslt.so.1 => /usr/lib/x86_64-linux-gnu/libxslt.so.1 +# * libexslt.so.0 => /usr/lib/x86_64-linux-gnu/libexslt.so.0 +# libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 +# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 +# libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 +# * libicuuc.so.67 => /usr/lib/x86_64-linux-gnu/libicuuc.so.67 +# * libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 +# * liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 +# libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 +# * libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 +# /lib64/ld-linux-x86-64.so.2 +# * libicudata.so.67 => /usr/lib/x86_64-linux-gnu/libicudata.so.67 +# * libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 +# * libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 +# * libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 + + +FROM gcr.io/distroless/base-debian11:nonroot + +# Ensure the /kodata entries used by Knative to augment the logger with the +# current VCS revision are present. +COPY --from=builder /go/triggermesh/.git/HEAD /go/triggermesh/.git/refs/ /kodata/ +ENV KO_DATA_PATH=/kodata + +# (!) COPY follows symlinks +COPY --from=builder \ + /usr/lib/x86_64-linux-gnu/libxml2.so.2 \ + /usr/lib/x86_64-linux-gnu/libxslt.so.1 \ + /usr/lib/x86_64-linux-gnu/libexslt.so.0 \ + /usr/lib/x86_64-linux-gnu/libicuuc.so.67 \ + /lib/x86_64-linux-gnu/libz.so.1 \ + /lib/x86_64-linux-gnu/liblzma.so.5 \ + /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 \ + /usr/lib/x86_64-linux-gnu/libicudata.so.67 \ + /usr/lib/x86_64-linux-gnu/libstdc++.so.6 \ + /lib/x86_64-linux-gnu/libgcc_s.so.1 \ + /lib/x86_64-linux-gnu/libgpg-error.so.0 \ + /usr/lib/x86_64-linux-gnu/ + +COPY --from=builder /xslttransformation-adapter / + +ENTRYPOINT ["/xslttransformation-adapter"] diff --git a/cmd/xslttransformation-adapter/Makefile b/cmd/xslttransformation-adapter/Makefile new file mode 100644 index 00000000..474d3d71 --- /dev/null +++ b/cmd/xslttransformation-adapter/Makefile @@ -0,0 +1,18 @@ +DOCKER ?= docker +PLATFORM ?= linux/amd64 +GOALS := build tag push test + +.PHONY: $(GOALS) + +build: + $(DOCKER) build -t $(IMAGE_TAG) -f Dockerfile $(CONTEXT) --platform $(PLATFORM) + +tag: + $(DOCKER) tag $(IMAGE_TAG) $(TAGS) + +push: + $(DOCKER) push --all-tags $(IMAGE_TAG) + +test: + +.SILENT: diff --git a/cmd/xslttransformation-adapter/main.go b/cmd/xslttransformation-adapter/main.go new file mode 100644 index 00000000..ab7647e4 --- /dev/null +++ b/cmd/xslttransformation-adapter/main.go @@ -0,0 +1,12 @@ +//go:build !noclibs + +package main + +import ( + "github.com/zeiss/typhoon/pkg/flow/adapter/xslttransformation" + pkgadapter "knative.dev/eventing/pkg/adapter/v2" +) + +func main() { + pkgadapter.Main("xslttransformation", xslttransformation.EnvAccessorCtor, xslttransformation.NewTarget) +} diff --git a/config/300-ocimetricssource.yaml b/config/300-ocimetricssource.yaml index 5d07639c..f2675d49 100644 --- a/config/300-ocimetricssource.yaml +++ b/config/300-ocimetricssource.yaml @@ -12,7 +12,7 @@ metadata: [ { "type": "com.oracle.cloud.monitoring", - "schema": "https://raw.githubusercontent.com/typhoon/typhoon/main/schemas/com.oracle.cloud.monitoring.json", + "schema": "https://raw.githubusercontent.com/zeiss/typhoon/main/schemas/com.oracle.cloud.monitoring.json", "description": "" } ] diff --git a/config/301-httptarget.yaml b/config/301-httptarget.yaml index 205fcc27..5ffb0dbb 100644 --- a/config/301-httptarget.yaml +++ b/config/301-httptarget.yaml @@ -11,7 +11,7 @@ metadata: [ { "type": "io.typhoon.http.request", - "schema": "https://raw.githubusercontent.com/typhoon/typhoon/main/schemas/io.typhoon.http.request.json" + "schema": "https://raw.githubusercontent.com/zeiss/typhoon/main/schemas/io.typhoon.http.request.json" }, { "type": "*" } ] diff --git a/config/500-controller.yaml b/config/500-controller.yaml index ca593d89..4c7d52f0 100644 --- a/config/500-controller.yaml +++ b/config/500-controller.yaml @@ -23,7 +23,7 @@ spec: containers: - name: controller terminationMessagePolicy: FallbackToLogsOnError - image: ko://github.com/typhoon/typhoon/cmd/typhoon-controller + image: ko://github.com/zeiss/typhoon/cmd/controller resources: requests: @@ -46,37 +46,35 @@ spec: - name: METRICS_DOMAIN value: typhoon.zeiss.com - name: HTTPPOLLERSOURCE_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/httppollersource-adapter - - name: OCIMETRICSSOURCE_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/ocimetricssource-adapter + value: ko://github.com/zeiss/typhoon/cmd/httppollersource-adapter - name: KAFKASOURCE_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/kafkasource-adapter + value: ko://github.com/zeiss/typhoon/cmd/kafkasource-adapter - name: WEBHOOKSOURCE_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/webhooksource-adapter + value: ko://github.com/zeiss/typhoon/cmd/webhooksource-adapter - name: CLOUDEVENTSTARGET_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/cloudeventstarget-adapter + value: ko://github.com/zeiss/typhoon/cmd/cloudeventstarget-adapter - name: HTTPTARGET_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/httptarget-adapter + value: ko://github.com/zeiss/typhoon/cmd/httptarget-adapter - name: KAFKATARGET_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/kafkatarget-adapter + value: ko://github.com/zeiss/typhoon/cmd/kafkatarget-adapter - name: LOGZTARGET_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/logztarget-adapter + value: ko://github.com/zeiss/typhoon/cmd/logztarget-adapter - name: OPENTELEMETRYTARGET_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/opentelemetrytarget-adapter + value: ko://github.com/zeiss/typhoon/cmd/opentelemetrytarget-adapter # Flow adapters - name: JQTRANSFORMATION_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/jqtransformation-adapter + value: ko://github.com/zeiss/typhoon/cmd/jqtransformation-adapter - name: SYNCHRONIZER_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/synchronizer-adapter + value: ko://github.com/zeiss/typhoon/cmd/synchronizer-adapter - name: TRANSFORMATION_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/transformation-adapter + value: ko://github.com/zeiss/typhoon/cmd/transformation-adapter - name: XMLTOJSONTRANSFORMATION_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/xmltojsontransformation-adapter + value: ko://github.com/zeiss/typhoon/cmd/xmltojsontransformation-adapter # Routing adapters - name: FILTER_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/filter-adapter + value: ko://github.com/zeiss/typhoon/cmd/filter-adapter - name: SPLITTER_IMAGE - value: ko://github.com/typhoon/typhoon/cmd/splitter-adapter + value: ko://github.com/zeiss/typhoon/cmd/splitter-adapter # Function Runtimes - name: RUNTIME_KLR_PYTHON value: gcr.io/typhoon/knative-lambda-python310:v1.26.0 diff --git a/config/500-webhook.yaml b/config/500-webhook.yaml index 82ac47a5..417f80a9 100644 --- a/config/500-webhook.yaml +++ b/config/500-webhook.yaml @@ -24,7 +24,7 @@ spec: containers: - name: webhook terminationMessagePolicy: FallbackToLogsOnError - image: ko://github.com/typhoon/typhoon/cmd/typhoon-webhook + image: ko://github.com/zeiss/typhoon/cmd/webhook env: - name: SYSTEM_NAMESPACE valueFrom: diff --git a/go.mod b/go.mod index ef02f3f5..3cbbcf72 100644 --- a/go.mod +++ b/go.mod @@ -120,6 +120,7 @@ require ( github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/gobuffalo/flect v1.0.2 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/go.sum b/go.sum index 9ac77e81..40128a47 100644 --- a/go.sum +++ b/go.sum @@ -397,6 +397,8 @@ github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCs github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobuffalo/flect v0.2.4/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= +github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= +github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= diff --git a/tools/go.mod b/tools/go.mod index 7dd9eb92..2c6c4dc5 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -6,6 +6,7 @@ require ( github.com/deepmap/oapi-codegen/v2 v2.1.0 github.com/golang/mock v1.6.0 github.com/golangci/golangci-lint v1.55.2 + github.com/google/ko v0.15.0 github.com/goreleaser/goreleaser v1.22.1 gotest.tools/gotestsum v1.11.0 k8s.io/code-generator v0.29.2 @@ -144,6 +145,7 @@ require ( github.com/docker/docker-credential-helpers v0.8.0 // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 // indirect github.com/elliotchance/orderedmap/v2 v2.2.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -206,7 +208,6 @@ require ( github.com/google/go-github/v56 v56.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/ko v0.15.0 // indirect github.com/google/rpmpack v0.5.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect @@ -413,9 +414,11 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/tools v0.4.6 // indirect + k8s.io/apimachinery v0.28.5 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect k8s.io/klog/v2 v2.110.1 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect diff --git a/tools/go.sum b/tools/go.sum index 2019cca1..fa32d8d2 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -396,6 +396,8 @@ github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQ github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 h1:PRxIJD8XjimM5aTknUK9w6DHLDox2r2M3DI4i2pnd3w= +github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936/go.mod h1:ttYvX5qlB+mlV1okblJqcSMtR4c52UKxDiX9GRBS8+Q= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elliotchance/orderedmap/v2 v2.2.0 h1:7/2iwO98kYT4XkOjA9mBEIwvi4KpGB4cyHeOFOnj4Vk= @@ -429,6 +431,8 @@ github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phm github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= @@ -508,6 +512,7 @@ github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+ github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU= @@ -679,6 +684,7 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -756,6 +762,7 @@ github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31 github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -943,12 +950,24 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.14.1 h1:khx0CqR5U4ghsscjJ+lZVthp3zjIFytRXPTaQ/TMiyA= github.com/nunnatsa/ginkgolinter v0.14.1/go.mod h1:nY0pafUSst7v7F637e7fymaMlQqI9c0Wka2fGsDkzWg= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -1332,6 +1351,7 @@ golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1354,6 +1374,7 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1366,9 +1387,11 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= @@ -1410,6 +1433,7 @@ golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1423,8 +1447,11 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1448,6 +1475,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1462,6 +1490,7 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1573,6 +1602,7 @@ golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1713,12 +1743,15 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-jose/go-jose.v2 v2.6.1 h1:qEzJlIDmG9q5VO0M/o8tGS65QMHMS1w01TQJB1VPJ4U= gopkg.in/go-jose/go-jose.v2 v2.6.1/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1729,6 +1762,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -1749,6 +1783,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +k8s.io/apimachinery v0.28.5 h1:EEj2q1qdTcv2p5wl88KavAn3VlFRjREgRu8Sm/EuMPY= +k8s.io/apimachinery v0.28.5/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= k8s.io/code-generator v0.29.2 h1:c9/iw2KnNpw2IRV+wwuG/Wns2TjPSgjWzbbjTevyiHI= k8s.io/code-generator v0.29.2/go.mod h1:FwFi3C9jCrmbPjekhaCYcYG1n07CYiW1+PAPCockaos= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= @@ -1758,6 +1794,8 @@ k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= knative.dev/pkg v0.0.0-20240219120257-9227ebb57a4e h1:TD0WhK+DDFqcDrxukIUZWYwy1140eQzCYNinHZZZhHs= knative.dev/pkg v0.0.0-20240219120257-9227ebb57a4e/go.mod h1:nCYpiIXemsTvpmuVNfJEAXcSXTGSduE2uwU0HH4BvUI= mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= diff --git a/tools/tools.go b/tools/tools.go index 6ec8f8d9..f79a0b74 100644 --- a/tools/tools.go +++ b/tools/tools.go @@ -7,6 +7,7 @@ import ( _ "github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen" _ "github.com/golang/mock/mockgen/model" _ "github.com/golangci/golangci-lint/cmd/golangci-lint" + _ "github.com/google/ko" _ "github.com/goreleaser/goreleaser" _ "gotest.tools/gotestsum" _ "k8s.io/code-generator" diff --git a/typhoon.yaml b/typhoon.yaml new file mode 100644 index 00000000..f70335b3 --- /dev/null +++ b/typhoon.yaml @@ -0,0 +1,6138 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: typhoon-namespaced-admin + labels: + rbac.authorization.k8s.io/aggregate-to-admin: "true" + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - flow.typhoon.zeiss.com + - routing.typhoon.zeiss.com + - sources.typhoon.zeiss.com + - targets.typhoon.zeiss.com + resources: ["*"] + verbs: ["*"] +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: typhoon-namespaced-edit + labels: + rbac.authorization.k8s.io/aggregate-to-edit: "true" + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - flow.typhoon.zeiss.com + - routing.typhoon.zeiss.com + - sources.typhoon.zeiss.com + - targets.typhoon.zeiss.com + resources: ["*"] + verbs: + - create + - update + - patch + - delete +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: typhoon-namespaced-view + labels: + rbac.authorization.k8s.io/aggregate-to-view: "true" + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - flow.typhoon.zeiss.com + - routing.typhoon.zeiss.com + - sources.typhoon.zeiss.com + - targets.typhoon.zeiss.com + resources: ["*"] + verbs: + - get + - list + - watch + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: typhoon-webhook + labels: + app.kubernetes.io/part-of: typhoon +rules: + # Routing admin + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters + - splitters + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + # Routing statuses update + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - splitters/status + - filters/status + verbs: + - update + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - xslttransformations + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - xslttransformations/status + verbs: + - update + # Events admin + - apiGroups: + - '' + resources: + - events + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + # For manipulating certs into secrets. + - apiGroups: + - '' + resources: + - secrets + verbs: + - get + - create + - update + - list + - watch + # Validation webhook gets system namespace to use it as an owner. + - apiGroups: + - '' + resources: + - namespaces + verbs: + - get + # For actually registering our webhook. + - apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + - validatingwebhookconfigurations + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + # Acquire leases for leader election + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: typhoon-controller + labels: + app.kubernetes.io/part-of: typhoon +rules: + # Record Kubernetes events + - apiGroups: + - '' + resources: + - events + verbs: + - create + - patch + - update + # Manage receive-adapters + - apiGroups: + - apps + resources: + - deployments + verbs: + - get + - list + - watch + - create + - update + - delete + - patch + - apiGroups: + - serving.knative.dev + resources: + - services + verbs: + - get + - list + - watch + - create + - update + - delete + - patch + # Read reconciled typhoon resources and update their statuses + # +rbac-check + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awscloudwatchlogssources + - awscloudwatchsources + - awscodecommitsources + - awscognitoidentitysources + - awscognitouserpoolsources + - awsdynamodbsources + - awseventbridgesources + - awskinesissources + - awsperformanceinsightssources + - awss3sources + - awssnssources + - awssqssources + - azureactivitylogssources + - azureblobstoragesources + - azureeventgridsources + - azureeventhubssources + - azureiothubsources + - azurequeuestoragesources + - azureservicebusqueuesources + - azureservicebussources + - azureservicebustopicsources + - cloudeventssources + - googlecloudauditlogssources + - googlecloudbillingsources + - googlecloudpubsubsources + - googlecloudsourcerepositoriessources + - googlecloudstoragesources + - httppollersources + - ibmmqsources + - kafkasources + - mongodbsources + - ocimetricssources + - salesforcesources + - slacksources + - solacesources + - twiliosources + - webhooksources + - zendesksources + verbs: + - list + - watch + - get + # +rbac-check:subresource=status + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awscloudwatchlogssources/status + - awscloudwatchsources/status + - awscodecommitsources/status + - awscognitoidentitysources/status + - awscognitouserpoolsources/status + - awsdynamodbsources/status + - awseventbridgesources/status + - awskinesissources/status + - awsperformanceinsightssources/status + - awss3sources/status + - awssnssources/status + - awssqssources/status + - azureactivitylogssources/status + - azureblobstoragesources/status + - azureeventgridsources/status + - azureeventhubssources/status + - azureiothubsources/status + - azurequeuestoragesources/status + - azureservicebusqueuesources/status + - azureservicebussources/status + - azureservicebustopicsources/status + - cloudeventssources/status + - googlecloudauditlogssources/status + - googlecloudbillingsources/status + - googlecloudpubsubsources/status + - googlecloudsourcerepositoriessources/status + - googlecloudstoragesources/status + - httppollersources/status + - ibmmqsources/status + - kafkasources/status + - mongodbsources/status + - ocimetricssources/status + - salesforcesources/status + - slacksources/status + - solacesources/status + - twiliosources/status + - webhooksources/status + - zendesksources/status + verbs: + - update + # +rbac-check + - apiGroups: + - targets.typhoon.zeiss.com + resources: + - awscomprehendtargets + - awsdynamodbtargets + - awseventbridgetargets + - awskinesistargets + - awslambdatargets + - awss3targets + - awssnstargets + - awssqstargets + - azureeventhubstargets + - azuresentineltargets + - azureservicebustargets + - cloudeventstargets + - datadogtargets + - elasticsearchtargets + - googlecloudfirestoretargets + - googlecloudpubsubtargets + - googlecloudstoragetargets + - googlecloudworkflowstargets + - googlesheettargets + - httptargets + - ibmmqtargets + - jiratargets + - kafkatargets + - logzmetricstargets + - logztargets + - mongodbtargets + - oracletargets + - salesforcetargets + - sendgridtargets + - slacktargets + - solacetargets + - splunktargets + - twiliotargets + - zendesktargets + verbs: + - list + - watch + - get + # +rbac-check:subresource=status + - apiGroups: + - targets.typhoon.zeiss.com + resources: + - awscomprehendtargets/status + - awsdynamodbtargets/status + - awseventbridgetargets/status + - awskinesistargets/status + - awslambdatargets/status + - awss3targets/status + - awssnstargets/status + - awssqstargets/status + - azureeventhubstargets/status + - azuresentineltargets/status + - azureservicebustargets/status + - cloudeventstargets/status + - datadogtargets/status + - elasticsearchtargets/status + - googlecloudfirestoretargets/status + - googlecloudpubsubtargets/status + - googlecloudstoragetargets/status + - googlecloudworkflowstargets/status + - googlesheettargets/status + - httptargets/status + - ibmmqtargets/status + - jiratargets/status + - kafkatargets/status + - logzmetricstargets/status + - logztargets/status + - mongodbtargets/status + - oracletargets/status + - salesforcetargets/status + - sendgridtargets/status + - slacktargets/status + - solacetargets/status + - splunktargets/status + - twiliotargets/status + - zendesktargets/status + verbs: + - update + # +rbac-check + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - jqtransformations + - synchronizers + - transformations + - xmltojsontransformations + - xslttransformations + verbs: + - list + - watch + - get + # +rbac-check:subresource=status + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - jqtransformations/status + - synchronizers/status + - transformations/status + - xmltojsontransformations/status + - xslttransformations/status + verbs: + - update + # +rbac-check + - apiGroups: + - extensions.typhoon.zeiss.com + resources: + - functions + verbs: + - list + - watch + - get + # +rbac-check:subresource=status + - apiGroups: + - extensions.typhoon.zeiss.com + resources: + - functions/status + verbs: + - update + # +rbac-check + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters + - splitters + verbs: + - list + - watch + - get + # +rbac-check:subresource=status + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters/status + - splitters/status + verbs: + - update + # Ensure compatibility with the OwnerReferencesPermissionEnforcement Admission Controller + # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement + # +rbac-check:subresource=finalizers + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awscloudwatchlogssources/finalizers + - awscloudwatchsources/finalizers + - awscodecommitsources/finalizers + - awscognitoidentitysources/finalizers + - awscognitouserpoolsources/finalizers + - awsdynamodbsources/finalizers + - awseventbridgesources/finalizers + - awskinesissources/finalizers + - awsperformanceinsightssources/finalizers + - awss3sources/finalizers + - awssnssources/finalizers + - awssqssources/finalizers + - azureactivitylogssources/finalizers + - azureblobstoragesources/finalizers + - azureeventgridsources/finalizers + - azureeventhubssources/finalizers + - azureiothubsources/finalizers + - azurequeuestoragesources/finalizers + - azureservicebusqueuesources/finalizers + - azureservicebussources/finalizers + - azureservicebustopicsources/finalizers + - cloudeventssources/finalizers + - googlecloudauditlogssources/finalizers + - googlecloudbillingsources/finalizers + - googlecloudpubsubsources/finalizers + - googlecloudsourcerepositoriessources/finalizers + - googlecloudstoragesources/finalizers + - httppollersources/finalizers + - ibmmqsources/finalizers + - kafkasources/finalizers + - mongodbsources/finalizers + - ocimetricssources/finalizers + - salesforcesources/finalizers + - slacksources/finalizers + - solacesources/finalizers + - twiliosources/finalizers + - webhooksources/finalizers + - zendesksources/finalizers + verbs: + - update + # +rbac-check:subresource=finalizers + - apiGroups: + - targets.typhoon.zeiss.com + resources: + - awscomprehendtargets/finalizers + - awsdynamodbtargets/finalizers + - awseventbridgetargets/finalizers + - awskinesistargets/finalizers + - awslambdatargets/finalizers + - awss3targets/finalizers + - awssnstargets/finalizers + - awssqstargets/finalizers + - azureeventhubstargets/finalizers + - azuresentineltargets/finalizers + - azureservicebustargets/finalizers + - cloudeventstargets/finalizers + - datadogtargets/finalizers + - elasticsearchtargets/finalizers + - googlecloudfirestoretargets/finalizers + - googlecloudpubsubtargets/finalizers + - googlecloudstoragetargets/finalizers + - googlecloudworkflowstargets/finalizers + - googlesheettargets/finalizers + - httptargets/finalizers + - ibmmqtargets/finalizers + - jiratargets/finalizers + - kafkatargets/finalizers + - logzmetricstargets/finalizers + - logztargets/finalizers + - mongodbtargets/finalizers + - oracletargets/finalizers + - salesforcetargets/finalizers + - sendgridtargets/finalizers + - slacktargets/finalizers + - solacetargets/finalizers + - splunktargets/finalizers + - twiliotargets/finalizers + - zendesktargets/finalizers + verbs: + - update + # +rbac-check:subresource=finalizers + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - jqtransformations/finalizers + - synchronizers/finalizers + - transformations/finalizers + - xmltojsontransformations/finalizers + - xslttransformations/finalizers + verbs: + - update + # +rbac-check:subresource=finalizers + - apiGroups: + - extensions.typhoon.zeiss.com + resources: + - functions/finalizers + verbs: + - update + # +rbac-check:subresource=finalizers + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters/finalizers + - splitters/finalizers + verbs: + - update + # Set finalizers + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awseventbridgesources + - awss3sources + - awssnssources + - azureactivitylogssources + - azureblobstoragesources + - azureeventgridsources + - azureservicebusqueuesources + - azureservicebussources + - azureservicebustopicsources + - googlecloudauditlogssources + - googlecloudbillingsources + - googlecloudpubsubsources + - googlecloudsourcerepositoriessources + - googlecloudstoragesources + - zendesksources + verbs: + - patch + # Manage resource-specific ServiceAccounts and RoleBindings + - apiGroups: + - '' + resources: + - serviceaccounts + - serviceaccounts/finalizers + verbs: + - list + - watch + - create + - update + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + verbs: + - list + - watch + - create + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + # Only multi-tenant components receive permissions via RoleBindings to + # interact with the Kubernetes API. + resourceNames: + - awssnssource-adapter + - zendesksource-adapter + - filter-adapter + - splitter-adapter + verbs: + - update + # Read credentials + - apiGroups: + - '' + resources: + - secrets + verbs: + - get + # Required by Function controller to store, and mount user's code + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - create + - update + - delete + - patch + - watch + # Read controller configurations + - apiGroups: + - '' + resources: + - configmaps + verbs: + - list + - watch + - apiGroups: + - '' + resources: + - configmaps + resourceNames: + - config-logging + - config-observability + - config-leader-election + verbs: + - get + # Acquire leases for leader election + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update + # Observe status of Pods and their ancestors + - apiGroups: + - '' + resources: + - pods + verbs: + - list + - watch + - apiGroups: + - apps + resources: + - replicasets + verbs: + - list + - watch +--- +# This role is used to grant receive adapters read-only access to per-component +# configurations such as logging, observability and tracing. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: typhoon-config-watcher + labels: + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - '' + resources: + - configmaps + verbs: + - list + - watch + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: awssnssource-adapter + labels: + app.kubernetes.io/part-of: typhoon +rules: + # Record Kubernetes events + - apiGroups: + - '' + resources: + - events + verbs: + - create + - patch + - update + # Read Source resources and update their statuses + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awssnssources + verbs: + - list + - watch + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awssnssources/status + verbs: + - patch + # Read credentials + - apiGroups: + - '' + resources: + - secrets + verbs: + - get + # Acquire leases for leader election + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: zendesksource-adapter + labels: + app.kubernetes.io/part-of: typhoon +rules: + # Record Kubernetes events + - apiGroups: + - '' + resources: + - events + verbs: + - create + - patch + - update + # Read Source resources + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - zendesksources + verbs: + - list + - watch + # Read credentials + - apiGroups: + - '' + resources: + - secrets + verbs: + - get + # Acquire leases for leader election + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: filter-adapter + labels: + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - '' + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: splitter-adapter + labels: + app.kubernetes.io/part-of: typhoon +rules: + - apiGroups: + - '' + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - '' + resources: + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - splitters + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update +--- +# This role provides readonly access to "Source" duck types. +# All the rules it contains get aggregated into the "source-observer" ClusterRole provided by Knative Eventing. +# see https://github.com/knative/eventing/blob/release-0.26/docs/spec/sources.md#source-rbac +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: typhoon-source-observer + labels: + app.kubernetes.io/part-of: typhoon + duck.knative.dev/source: 'true' +rules: + # +rbac-check + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awscloudwatchlogssources + - awscloudwatchsources + - awscodecommitsources + - awscognitoidentitysources + - awscognitouserpoolsources + - awsdynamodbsources + - awseventbridgesources + - awskinesissources + - awsperformanceinsightssources + - awss3sources + - awssnssources + - awssqssources + - azureactivitylogssources + - azureblobstoragesources + - azureeventgridsources + - azureeventhubssources + - azureiothubsources + - azurequeuestoragesources + - azureservicebusqueuesources + - azureservicebussources + - azureservicebustopicsources + - cloudeventssources + - googlecloudauditlogssources + - googlecloudbillingsources + - googlecloudpubsubsources + - googlecloudsourcerepositoriessources + - googlecloudstoragesources + - httppollersources + - ibmmqsources + - kafkasources + - mongodbsources + - ocimetricssources + - salesforcesources + - slacksources + - solacesources + - twiliosources + - webhooksources + - zendesksources + verbs: + - get + - list + - watch + - apiGroups: + - sources.typhoon.zeiss.com + resources: + - awscloudwatchlogssources/finalizers + - awscloudwatchsources/finalizers + - awscodecommitsources/finalizers + - awscognitoidentitysources/finalizers + - awscognitouserpoolsources/finalizers + - awsdynamodbsources/finalizers + - awskinesissources/finalizers + - awsperformanceinsightssources/finalizers + - awss3sources/finalizers + - awssnssources/finalizers + - awssqssources/finalizers + - azureactivitylogssources/finalizers + - azureblobstoragesources/finalizers + - azureeventgridsources/finalizers + - azureeventhubssources/finalizers + - azureiothubsources/finalizers + - azurequeuestoragesources/finalizers + - azureservicebusqueuesources/finalizers + - azureservicebussources/finalizers + - azureservicebustopicsources/finalizers + - googlecloudauditlogssources/finalizers + - googlecloudbillingsources/finalizers + - googlecloudpubsubsources/finalizers + - googlecloudsourcerepositoriessources/finalizers + - googlecloudstoragesources/finalizers + verbs: + - update +--- +# This aggregated role grants read-only access to Addressables. +# It is intended mainly to allow sink resolvers to resolve URLs from object references. +# +# NOTE: This same role can also be found in Knative Eventing. It is duplicated here to allow running typhoon in a +# cluster which doesn't have Knative Eventing deployed. +# Source: +# https://github.com/knative/eventing/blob/knative-v1.1.0/config/core/roles/addressable-resolvers-clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: addressable-resolver + labels: + app.kubernetes.io/part-of: typhoon +aggregationRule: + clusterRoleSelectors: + - matchLabels: + duck.knative.dev/addressable: 'true' +rules: [] # Rules are automatically filled in by the Kubernetes controller manager. +--- +# This role provides readonly access to "Addressable" duck types. +# All the rules it contains get aggregated into the "addressable-resolver" ClusterRole. +# https://github.com/knative/eventing/blob/release-0.26/config/core/roles/addressable-resolvers-clusterrole.yaml#L15-L28 +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: typhoon-addressable-resolver + labels: + app.kubernetes.io/part-of: typhoon + duck.knative.dev/addressable: 'true' +rules: + # +rbac-check + - apiGroups: + - targets.typhoon.zeiss.com + resources: + - awscomprehendtargets + - awsdynamodbtargets + - awseventbridgetargets + - awskinesistargets + - awslambdatargets + - awss3targets + - awssnstargets + - awssqstargets + - azureeventhubstargets + - azuresentineltargets + - azureservicebustargets + - cloudeventstargets + - datadogtargets + - elasticsearchtargets + - googlecloudfirestoretargets + - googlecloudpubsubtargets + - googlecloudstoragetargets + - googlecloudworkflowstargets + - googlesheettargets + - httptargets + - ibmmqtargets + - jiratargets + - kafkatargets + - logzmetricstargets + - logztargets + - mongodbtargets + - oracletargets + - salesforcetargets + - sendgridtargets + - slacktargets + - solacetargets + - splunktargets + - twiliotargets + - zendesktargets + verbs: + - get + - list + - watch + # +rbac-check + - apiGroups: + - flow.typhoon.zeiss.com + resources: + - jqtransformations + - synchronizers + - transformations + - xmltojsontransformations + - xslttransformations + verbs: + - get + - list + - watch + # +rbac-check + - apiGroups: + - extensions.typhoon.zeiss.com + resources: + - functions + verbs: + - get + - list + - watch + # +rbac-check + - apiGroups: + - routing.typhoon.zeiss.com + resources: + - filters + - splitters + verbs: + - get + - list + - watch + # Allow resolving URLs of a few additional common types which are not supplied by typhoon. + - apiGroups: + - '' + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - serving.knative.dev + resources: + - routes + - services + verbs: + - get + - list + - watch + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: typhoon-controller + namespace: typhoon + labels: + app.kubernetes.io/part-of: typhoon +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: typhoon-webhook + namespace: typhoon + labels: + app.kubernetes.io/part-of: typhoon + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: typhoon-webhook + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-webhook + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: typhoon-webhook + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: typhoon-controller + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: typhoon-controller +--- +# Permissions not required by controllers directly, but granted to +# receive-adapters via RoleBindings. +# +# Without them, the following error is thrown: +# "attempting to grant RBAC permissions not currently held" +# +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: awssnssource-adapter + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: awssnssource-adapter +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: zendesksource-adapter + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: zendesksource-adapter +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: filter-adapter + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: filter-adapter +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: splitter-adapter + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: splitter-adapter +--- +# Resolve sink URIs when Knative is installed +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: typhoon-controller-addressable-resolver-from-knative + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: addressable-resolver +--- +# Resolve sink URIs when typhoon Core is installed +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: typhoon-controller-addressable-resolver-from-typhoon + labels: + app.kubernetes.io/part-of: typhoon +subjects: + - kind: ServiceAccount + name: typhoon-controller + namespace: typhoon +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: addressable-resolver-typhoon + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: cloudeventssources.sources.typhoon.zeiss.com + labels: + eventing.knative.dev/source: 'true' + duck.knative.dev/source: 'true' + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' +spec: + group: sources.typhoon.zeiss.com + scope: Namespaced + names: + kind: CloudEventsSource + plural: cloudeventssources + categories: + - all + - knative + - eventing + - sources + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon event source for receiving arbitrary CloudEvents over HTTP. + type: object + properties: + spec: + description: Specification for the CloudEvents source. + type: object + properties: + credentials: + description: Optional credentials specification for incoming requests. + type: object + properties: + basicAuths: + description: Array of HTTP basic authentication parameters, all present usernames and passwords are considered valid. + type: array + items: + type: object + properties: + username: + description: User name for HTTP Basic authentication. + type: string + password: + description: Password for HTTP Basic authentication. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + description: Name of the Secret object. + type: string + key: + description: Key from the Secret object. + type: string + required: + - name + - key + required: [valueFromSecret] + required: + - username + - password + required: [basicAuths] + path: + description: Path where incoming CloudEvents will be accepted. + type: string + rateLimiter: + description: Rate limiter provides a mechanism to reject incoming requests when a threshold is trespassed, informing the caller to retry later. + type: object + properties: + requestsPerSecond: + description: Number of requests accepted per time duration. + type: integer + required: + - requestsPerSecond + ceOverrides: + description: Defines overrides/additions to incoming CloudEvents attributes. + type: object + properties: + extensions: + type: object + properties: + type: + type: string + source: + type: string + subject: + type: string + required: + - extensions + sink: + description: The destination of events generated from requests to the source. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - sink + status: + description: Reported status of the event source. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Public address of the HTTP/S endpoint exposing the source. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: URL + type: string + jsonPath: .status.address.url + - name: Sink + type: string + jsonPath: .status.sinkUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: httppollersources.sources.typhoon.zeiss.com + labels: + eventing.knative.dev/source: 'true' + duck.knative.dev/source: 'true' + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' +spec: + group: sources.typhoon.zeiss.com + scope: Namespaced + names: + kind: HTTPPollerSource + plural: httppollersources + categories: + - all + - knative + - eventing + - sources + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon event source for sourcing events by polling HTTP/S endpoints. + type: object + properties: + spec: + description: Desired state of the event source. + type: object + properties: + eventType: + description: "Value of the CloudEvents 'type' attribute to set on ingested events. Describes the type of event related to the originating occurrence. Please refer to the CloudEvents specification for more details: https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#type" + type: string + eventSource: + description: "Value of the CloudEvents 'source' attribute to set on ingested events. Identifies the context in which an event happened. Must be expressed as a URI-reference. Please refer to the CloudEvents specification for more details: https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#source-1" + type: string + endpoint: + description: HTTP/S URL of the endpoint to poll data from. + type: string + format: url + pattern: ^https?:\/\/.+$ + method: + description: HTTP request method to use in requests to the specified 'endpoint'. + type: string + enum: [GET, POST, PUT, PATCH, DELETE] + skipVerify: + description: Controls whether the HTTP client verifies the server's certificate chain and host name when communicating over TLS. + type: boolean + caCertificate: + description: CA certificate in X.509 format the HTTP client should use to verify the identity of remote servers when communicating over TLS. + type: string + basicAuthUsername: + description: User name to set in HTTP requests that require HTTP Basic authentication. + type: string + basicAuthPassword: + description: Password to set in HTTP requests that require HTTP Basic authentication. + type: object + properties: + value: + description: Literal value of the password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + description: Name of the Secret object. + type: string + key: + description: Key from the Secret object. + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + headers: + description: HTTP headers to include in HTTP requests sent to the endpoint. + type: object + additionalProperties: + type: string + interval: + description: Duration which defines how often the HTTP/S endpoint should be polled. Expressed as a duration string, which format is documented at https://pkg.go.dev/time#ParseDuration. + type: string + sink: + description: The destination of events generated by polling the HTTP/S endpoint. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - eventType + - method + - endpoint + - interval + - sink + status: + description: Reported status of the event source. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + additionalPrinterColumns: + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Sink + type: string + jsonPath: .status.sinkUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: kafkasources.sources.typhoon.zeiss.com + labels: + eventing.knative.dev/source: 'true' + duck.knative.dev/source: 'true' + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.knative.dev/eventTypes: | + [ + { "type": "io.typhoon.kafka.event" } + ] +spec: + group: sources.typhoon.zeiss.com + scope: Namespaced + names: + kind: KafkaSource + plural: kafkasources + categories: + - all + - knative + - eventing + - sources + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon event source for Kafka. + type: object + properties: + spec: + description: Desired state of the event source. + type: object + properties: + topic: + description: Topic name to stream the target events to. + type: string + bootstrapServers: + description: Array of Kafka servers used to bootstrap the connection. + type: array + items: + type: string + minLength: 1 + groupID: + description: The ID of the kafka group. + type: string + auth: + description: Authentication method used to interact with Kafka. + type: object + properties: + saslEnable: + description: Boolean to indicate if SASL is enabled. + type: boolean + tlsEnable: + description: Boolean to indicate if TLS is enabled. + type: boolean + securityMechanism: + description: securityMechanism attribute indicate which mechanism to use. + type: string + enum: [GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512] + username: + description: Kafka account username. + type: string + password: + description: Kafka account password. + type: object + properties: + value: + description: Plain text password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + kerberos: + description: Kerberos Authentication method to interact with Kafka. + type: object + properties: + realm: + description: The name of the Kerberos Realm. + type: string + serviceName: + description: The primary name of the Kafka server configured. + type: string + username: + description: Kerberos username or Kerberos Principal Name. The Username or the Principal doesn't require the Realm in it. + type: string + password: + description: Kerberos Password. + type: object + properties: + value: + description: Plain text password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + config: + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the kerberos configuration file (krb5.conf). + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + keytab: + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the kerberos keytab file contents. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + tls: + description: TLS Authentication method to interact with Kafka. + type: object + properties: + ca: + description: The value to the configured CA. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the CA content. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + clientCert: + description: The value of the Client Cert. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the Client Cert content. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + clientKey: + description: The value of the Client Key. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the Client Key content. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + skipVerify: + description: SkipVerify controls whether a client verifies the server's certificate chain and host name. If skipVerify is true, crypto/tls accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to machine-in-the-middle attacks unless custom verification is used. This should be used only for testing. + type: boolean + required: + - saslEnable + sink: + description: The destination of events sourced from Kafka Kafka. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - bootstrapServers + - topic + - groupID + - sink + status: + description: Reported status of the event source. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Public address of the HTTP/S endpoint exposing the source. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: URL + type: string + jsonPath: .status.address.url + - name: Sink + type: string + jsonPath: .status.sinkUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: ocimetricssources.sources.typhoon.zeiss.com + labels: + eventing.knative.dev/source: 'true' + duck.knative.dev/source: 'true' + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.knative.dev/eventTypes: | + [ + { + "type": "com.oracle.cloud.monitoring", + "schema": "https://raw.githubusercontent.com/zeiss/typhoon/main/schemas/com.oracle.cloud.monitoring.json", + "description": "" + } + ] +spec: + group: sources.typhoon.zeiss.com + scope: Namespaced + names: + kind: OCIMetricsSource + plural: ocimetricssources + categories: + - all + - knative + - eventing + - sources + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon event source for Oracle Cloud Infrastructure (OCI) Metrics. + type: object + properties: + spec: + description: Desired state of the event source. + type: object + properties: + oracleApiPrivateKey: + description: PEM encoded API private key that has access to the OCI metrics API. + type: object + properties: + value: + description: Literal value of the private key. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret containing the private key. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + oracleApiPrivateKeyPassphrase: + description: Passphrase to unlock the 'oracleApiPrivateKey'. + type: object + properties: + value: + description: Literal value of the passphrase. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret containing the passphrase. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + oracleApiPrivateKeyFingerprint: + description: MD5 fingerprint of 'oracleApiPrivateKey'. + type: object + properties: + value: + description: Literal value of the fingerprint. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret containing the fingerprint. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + oracleTenancy: + description: OCID of the target tenancy. + type: string + oracleUser: + description: OCID of the target user associated with the 'oracleApiPrivateKey'. + type: string + oracleRegion: + description: OCI target region. + type: string + metricsPollingFrequency: + description: Polling frequency of the OCI API for metrics details (supported values 1m-60m, 1h-24h, 1d). + type: string + metrics: + description: Array of metrics to poll for. + type: array + items: + type: object + properties: + name: + description: Used as the event source for the metric. + type: string + metricsNamespace: + description: Type of metrics to pull from such as oci_computeagent, oci_apigateway, oci_vnc, or oci_compute_infrastructure_health. + type: string + metricsQuery: + description: Metrics query to send based off of OCI Monitoring Query Language. + type: string + oracleCompartment: + description: OCID of the target compartment (if not specified, default to the value of 'oracleTenancy'). + type: string + required: + - name + - metricsNamespace + - metricsQuery + sink: + description: The destination of events sourced from OCI metrics. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - oracleApiPrivateKey + - oracleApiPrivateKeyPassphrase + - oracleApiPrivateKeyFingerprint + - oracleTenancy + - oracleUser + - oracleRegion + - metrics + - sink + status: + description: Reported status of the event source. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + additionalPrinterColumns: + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: URL + type: string + jsonPath: .status.address.url + - name: Sink + type: string + jsonPath: .status.sinkUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: webhooksources.sources.typhoon.zeiss.com + labels: + eventing.knative.dev/source: 'true' + duck.knative.dev/source: 'true' + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' +spec: + group: sources.typhoon.zeiss.com + scope: Namespaced + names: + kind: WebhookSource + plural: webhooksources + categories: + - all + - knative + - eventing + - sources + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon event source for receiving arbitrary events over a HTTP/S webhook. + type: object + properties: + spec: + description: Desired state of the event source. + type: object + properties: + eventType: + description: "Value of the CloudEvents 'type' attribute to set on ingested events. Describes the type of event related to the originating occurrence. Please refer to the CloudEvents specification for more details: https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#type" + type: string + eventSource: + description: "Value of the CloudEvents 'source' attribute to set on ingested events. Identifies the context in which an event happened. Must be expressed as a URI-reference. Please refer to the CloudEvents specification for more details: https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#source-1" + type: string + eventExtensionAttributes: + description: CloudEvents extension attributes to be added based on HTTP request fields. + type: object + properties: + from: + description: Source elements to create attributes from. Elements that might contain multiple values (headers, queries) will convert all of them into extension attributes + type: array + items: + type: string + enum: + - method + - path + - host + - queries + - headers + required: + - from + corsAllowOrigin: + description: Value of the CORS 'Access-Control-Allow-Origin' header to set on ingested requests. + type: string + basicAuthUsername: + description: User name HTTP clients must set to authenticate with the webhook using HTTP Basic authentication. + type: string + basicAuthPassword: + description: Password HTTP clients must set to authenticate with the webhook using HTTP Basic authentication. + type: object + properties: + value: + description: Literal value of the password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + description: Name of the Secret object. + type: string + key: + description: Key from the Secret object. + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + sink: + description: The destination of events generated from requests to the webhook. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - eventType + - sink + status: + description: Reported status of the event source. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Public address of the HTTP/S endpoint exposing the webhook. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: URL + type: string + jsonPath: .status.address.url + - name: Sink + type: string + jsonPath: .status.sinkUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: cloudeventstargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: targets.typhoon.zeiss.com + names: + kind: CloudEventsTarget + plural: cloudeventstargets + categories: + - all + - knative + - eventing + - targets + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: typhoon event target that acts as a gateway for outgoing CloudEvents. + properties: + spec: + type: object + description: Desired state of event target. + properties: + endpoint: + description: An HTTP CloudEvents endpoint to stream events to. + type: string + format: url + pattern: ^https?:\/\/.+$ + path: + description: Path at the remote endpoint under which requests are accepted. + type: string + credentials: + description: Optional credentials specification for remote CloudEvents endpoint. + type: object + properties: + basicAuth: + description: HTTP basic authentication parameters. + type: object + properties: + username: + description: User name for HTTP Basic authentication. + type: string + password: + description: Password for HTTP Basic authentication. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + description: Name of the Secret object. + type: string + key: + description: Key from the Secret object. + type: string + required: + - name + - key + required: [valueFromSecret] + required: + - username + - password + required: [basicAuth] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - endpoint + status: + type: object + description: Reported status of the event target. + properties: + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: httptargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { + "type": "io.typhoon.http.request", + "schema": "https://raw.githubusercontent.com/zeiss/typhoon/main/schemas/io.typhoon.http.request.json" + }, + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: targets.typhoon.zeiss.com + names: + kind: HTTPTarget + plural: httptargets + categories: + - all + - knative + - eventing + - targets + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: typhoon event target for generic HTTP endpoints. + properties: + spec: + type: object + description: Desired state of event target. + properties: + response: + description: HTTP target response event attributes. + type: object + properties: + eventType: + description: EventType is required to set the Type for the ingested event. + type: string + minLength: 1 + eventSource: + description: EventSource is an optional but recommended field for identifying the instance producing the events. + type: string + required: + - eventType + endpoint: + description: An HTTP based REST endpoint to stream events to. + type: string + format: url + pattern: ^https?:\/\/.+$ + method: + description: The HTTP method to use for the request. + type: string + enum: [GET, POST, PUT, PATCH, DELETE] + skipVerify: + description: Skip validation and verification of the SSL/TLS certificate. + type: boolean + default: false + caCertificate: + description: The CA certificate used to sign the certificated used by the target server. + type: string + basicAuthUsername: + description: When using HTTP Basic authentication, the username to connect to the target service. + type: string + basicAuthPassword: + description: When using HTTP Basic authentication, the password to connect to the target service. + type: object + properties: + secretKeyRef: + type: object + properties: + key: + type: string + name: + type: string + oauthClientID: + description: When using OAuth, the client id used to authenticate against the target service. + type: string + oauthClientSecret: + description: When using OAuth, the client secret used to authenticate against the target service + type: object + properties: + secretKeyRef: + type: object + properties: + key: + type: string + name: + type: string + oauthTokenURL: + description: When using OAuth, the Token URL used to sign the request against. + type: string + oauthScopes: + description: When using OAuth, the scopes required by the target to use the service. + type: array + items: + type: string + headers: + description: Additional headers required to be set when communicating wiht the target service. + type: object + additionalProperties: + type: string + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - endpoint + - method + status: + type: object + description: Reported status of the event target. + properties: + observedGeneration: + type: integer + format: int64 + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: kafkatargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] +spec: + group: targets.typhoon.zeiss.com + names: + kind: KafkaTarget + plural: kafkatargets + categories: + - all + - knative + - eventing + - targets + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: typhoon event target for Kafka. + properties: + spec: + description: Desired state of event target. + type: object + properties: + topic: + description: Topic name to stream the target events to. + type: string + minLength: 1 + topicReplicationFactor: + description: The number of replicas required to stream to the topic. + type: integer + minimum: 1 + maximum: 32767 + topicPartitions: + description: The number of partitions used by the topic to stream an event to. + type: integer + minimum: 1 + maximum: 2147483647 + bootstrapServers: + description: Array of Kafka servers used to bootstrap the connection. + type: array + items: + type: string + minLength: 1 + auth: + description: Authentication method used to interact with Kafka. + type: object + properties: + saslEnable: + description: Boolean to indicate if SASL is enabled. + type: boolean + tlsEnable: + description: Boolean to indicate if TLS is enabled. + type: boolean + securityMechanism: + description: securityMechanism attribute indicate which mechanism to use. + type: string + enum: [GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512] + username: + description: Kafka account username when using SASL. + type: string + password: + description: Kafka account password when using SASL. + type: object + properties: + value: + description: Plain text password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + kerberos: + description: Kerberos Authentication method to interact with Kafka. + type: object + properties: + realm: + description: Name of the Kerberos Realm. + type: string + serviceName: + description: The primary name of the Kafka server configured. + type: string + username: + description: Kerberos username or Kerberos Principal Name. The Username or the Principal doesn't require the Realm in it. + type: string + password: + description: Kerberos Password. + type: object + properties: + value: + description: Plain text password. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the password. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + config: + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the kerberos configuration file (krb5.conf). + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + keytab: + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the kerberos keytab file contents. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + tls: + description: TLS Authentication method to interact with Kafka. + type: object + properties: + ca: + description: The value to the configured CA. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the value. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + clientCert: + description: The value of the SSL Client Cert. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the Client Cert content. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + clientKey: + description: The value of the SSL Client Key. + type: object + properties: + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the Client Key content. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + required: + - valueFromSecret + skipVerify: + description: SkipVerify controls whether a client verifies the server's certificate chain and host name. If skipVerify is true, crypto/tls accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to machine-in-the-middle attacks unless custom verification is used. This should be used only for testing. + type: boolean + required: + - saslEnable + discardCloudEventContext: + description: Whether to omit CloudEvent context attributes in messages sent to Kafka. When this property is false (default), the entire CloudEvent payload is included. When this property is true, only the CloudEvent data is included. + type: boolean + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - bootstrapServers + - topic + status: + type: object + description: Reported status of the event target. + properties: + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: logzmetricstargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type" : "io.typhoon.opentelemetry.metrics.push" } + ] +spec: + group: targets.typhoon.zeiss.com + names: + kind: LogzMetricsTarget + plural: logzmetricstargets + categories: + - all + - knative + - eventing + - targets + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: The OpenTelemetry metrics target pushes metrics to a range of backends. + properties: + spec: + type: object + description: The OpenTelemetry target exposes a common interface to a range of metrics backends. + properties: + connection: + type: object + description: Connection information for LogzMetrics. + properties: + listenerURL: + type: string + description: Listener URL for pushing metrics. + token: + type: object + description: Token for connecting to Logz metrics listener. + properties: + secretKeyRef: + type: object + properties: + key: + type: string + name: + type: string + instruments: + type: array + description: Instruments configured for pushing metrics. It is mandatory that all metrics pushed by using this target are pre-registered using this list. + items: + type: object + minLength: 1 + properties: + name: + type: string + description: Name for the Instrument. + description: + type: string + description: Description for the Instrument. + instrument: + type: string + enum: [Histogram, Counter, UpDownCounter] + description: "Instrument Kind as defined by OpenTelemetry. Supported values are\n- Histogram, for absolute values that can be aggregated. - Counter, for delta values that increase monotonically. - UpDownCounter, for delta values that can increase and decrease." + number: + type: string + enum: [Int64, Float64] + description: "Number Kind as defined by OpenTelemetry. Defines the measure data type accepted by the Instrument. Supported values are\n- Int64 - Float64" + required: + - name + - instrument + - number + eventOptions: + type: object + description: Event replies options. + properties: + payloadPolicy: + description: "Whether this target should generate response events. Possible values are\n- always, if a response is available it will be sent. - error, only responses categorized as errors will be sent. - never, no responses will be sent." + type: string + enum: [always, error, never] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - connection + - instruments + status: + type: object + properties: + acceptedEventTypes: + type: array + items: + type: string + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: logztargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "io.typhoon.logz.ship.response" } + ] +spec: + group: targets.typhoon.zeiss.com + names: + kind: LogzTarget + plural: logztargets + categories: + - all + - knative + - eventing + - targets + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: typhoon event target for Logz. + properties: + spec: + description: Desired state of event target. + type: object + properties: + shippingToken: + description: API token used to authenticate the event being streamed. + type: object + properties: + secretKeyRef: + type: object + properties: + key: + type: string + name: + type: string + eventOptions: + type: object + description: 'When should this target generate a response event for processing: always, on error, or never.' + properties: + payloadPolicy: + type: string + enum: [always, error, never] + logsListenerURL: + type: string + description: Logz listener host to stream events to. + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - shippingToken + - logsListenerURL + status: + type: object + description: Reported status of the event target. + properties: + acceptedEventTypes: + type: array + items: + type: string + ceAttributes: + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + required: + - type + - source + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: splunktargets.targets.typhoon.zeiss.com + labels: + knative.dev/crd-install: 'true' + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] +spec: + group: targets.typhoon.zeiss.com + scope: Namespaced + names: + kind: SplunkTarget + plural: splunktargets + categories: + - all + - knative + - eventing + - targets + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + description: typhoon event target for Splunk. + properties: + spec: + type: object + properties: + endpoint: + type: string + description: URL of the HTTP Event Collector (HEC). Only the scheme, hostname, and port (optionally) are evaluated. When the URL path is not present, the one documented at Splunk is automatically used. See https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector#Enable_HTTP_Event_Collector. + format: url + pattern: ^https?:\/\/.+$ + token: + type: object + description: Token for authenticating requests against the HEC. See https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector#About_Event_Collector_tokens. + properties: + value: + type: string + format: guid + pattern: ^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$ + valueFromSecret: + type: object + properties: + name: + type: string + key: + type: string + oneOf: + - required: [value] + - required: [valueFromSecret] + index: + type: string + description: Name of the index to send events to. When undefined, events are sent to the default index defined in the HEC token's configuration. + pattern: ^[\w-]+$ + skipTLSVerify: + description: Control whether the target should verify the SSL/TLS certificate used by the event collector. + type: boolean + discardCloudEventContext: + description: Whether to omit CloudEvent context attributes in messages sent to Splunk. When this property is false (default), the entire CloudEvent payload is included. When this property is true, only the CloudEvent data is included. + type: boolean + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - endpoint + - token + status: + type: object + description: Reported status of the event target. + properties: + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: filters.routing.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: routing.typhoon.zeiss.com + scope: Namespaced + names: + kind: Filter + plural: filters + singular: filter + categories: + - all + - typhoon + - routing + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon content-based events filter. + type: object + properties: + spec: + description: Desired state of the filter. + type: object + required: + - expression + - sink + properties: + expression: + description: Google CEL-like expression string. + type: string + sink: + description: Sink is a reference to an object that will resolve to a uri to use as the sink. + type: object + anyOf: + - required: [ref] + - required: [uri] + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + properties: + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: splitters.routing.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: routing.typhoon.zeiss.com + scope: Namespaced + names: + kind: Splitter + plural: splitters + singular: splitter + categories: + - all + - typhoon + - routing + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon content-based events splitter. + type: object + properties: + spec: + description: Desired state of the splitter. + type: object + required: + - ceContext + - sink + properties: + path: + type: string + description: JSONPath expression representing the key containing the data array to split. Defaults to the root. + ceContext: + type: object + required: + - type + - source + description: Context attributes to set on produced CloudEvents. + properties: + type: + type: string + description: CloudEvent "type" context attribute. + source: + type: string + description: CloudEvent "source" context attribute. Accepts a JSONPath expressions in brackets (e.g. "user/{.name}"). + extensions: + type: object + description: Additional context extensions to set on produced CloudEvents. + additionalProperties: + type: string + sink: + description: Sink is a reference to an object that will resolve to a uri to use as the sink. + type: object + anyOf: + - required: [ref] + - required: [uri] + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + properties: + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: functions.extensions.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: extensions.typhoon.zeiss.com + scope: Namespaced + names: + kind: Function + plural: functions + singular: function + categories: + - all + - typhoon + - extensions + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon Function. + type: object + properties: + spec: + description: Desired state of the function. + type: object + required: + - runtime + - entrypoint + - code + properties: + runtime: + description: Function runtime name. Python, Ruby or Node runtimes are currently supported. + type: string + enum: [python, ruby, node] + code: + description: Function code. + type: string + entrypoint: + description: Function name to use as an entrypoint. + type: string + responseIsEvent: + description: Whether function responds with CE payload only or with full event. + type: boolean + eventStore: + description: EventStore service connection string. + type: object + properties: + uri: + type: string + required: + - uri + ceOverrides: + type: object + description: Defines overrides to control modifications of the event attributes. + properties: + extensions: + type: object + properties: + type: + type: string + source: + type: string + subject: + type: string + required: + - extensions + sink: + description: The destination of events emitted by the component. If left empty, the events will be sent back to the sender. + type: object + anyOf: + - required: [ref] + - required: [uri] + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + properties: + configMap: + description: Identity of the ConfigMap containing the code of the Function. + type: object + properties: + name: + description: Name of the ConfigMap. + type: string + resourceVersion: + description: Observed revision of the ConfigMap. + type: string + required: + - name + - resourceVersion + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: jqtransformations.flow.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "io.typhoon.jqtransformation.error" }, + { "type": "*" } + ] +spec: + group: flow.typhoon.zeiss.com + scope: Namespaced + names: + kind: JQTransformation + plural: jqtransformations + categories: + - all + - knative + - eventing + - typhoon + - transformations + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon CloudEvents JSON Query Transformation engine. + type: object + properties: + spec: + description: Desired state of the transformer. + type: object + properties: + query: + description: The JSON Query to perform on the incoming event + type: string + sink: + description: The destination of events emitted by the component. If left empty, the events will be sent back to the sender. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Reported status of the transformer. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + description: CloudEvents context attributes overrides. + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Address of the HTTP/S endpoint where the transformer is serving incoming CloudEvents. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: synchronizers.flow.typhoon.zeiss.com + labels: + duck.knative.dev/addressable: 'true' + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] +spec: + group: flow.typhoon.zeiss.com + names: + kind: Synchronizer + plural: synchronizers + categories: + - all + - knative + - eventing + - flow + scope: Namespaced + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + properties: + spec: + description: Desired state of the event synchronizer. + type: object + properties: + correlationKey: + description: Events correlation parameters. + type: object + properties: + attribute: + description: The name of the correlation key that will be injected into the CloudEvents context. Events without this attribute are forwarded to the Sink as the client requests while client connections are held open. Events, which context already has the correlation key, are sent back to the open client connections. + type: string + length: + description: The length of the correlation key to generate. The default value is 24. + type: integer + minimum: 1 + maximum: 64 + default: 24 + required: + - attribute + response: + description: Responses handling configuration. + type: object + properties: + timeout: + description: The time during which the synchronizer will block the client and wait for the response. Expressed as a duration string, which format is documented at https://pkg.go.dev/time#ParseDuration. + type: string + required: + - timeout + sink: + description: The destination where the synchronizer will forward incoming requests from the clients. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - correlationKey + - response + - sink + status: + type: object + description: Reported status of the event synchronizer. + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: transformations.flow.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "*" } + ] +spec: + group: flow.typhoon.zeiss.com + scope: Namespaced + names: + kind: Transformation + plural: transformations + categories: + - all + - knative + - eventing + - transformations + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon CloudEvents transformation engine. Allows to declaratively perform data transformations on CloudEvents. + type: object + properties: + spec: + description: Desired state of the transformation object. + type: object + properties: + context: + description: CloudEvents Context attributes transformation spec. + type: array + items: + description: The list of transformation operations executed on the event context sequentially. + type: object + properties: + operation: + description: Name of the transformation operation. + type: string + enum: [add, delete, shift, store, parse] + paths: + description: Key-value event pairs to apply the transformations on. + type: array + items: + type: object + properties: + key: + description: JSON path or variable name. Depends on the operation type. + nullable: true + type: string + value: + description: JSON path or variable name. Depends on the operation type. + nullable: true + type: string + separator: + description: JSON path separator symbol. "." is used by default. + nullable: true + type: string + required: + - operation + data: + description: CloudEvents Data transformation spec. + type: array + items: + description: The list of transformation operations executed on the event data sequentially. + type: object + properties: + operation: + description: Name of the transformation operation. + type: string + enum: [add, delete, shift, store, parse] + paths: + description: Key-value event pairs to apply the transformations on. + type: array + items: + type: object + properties: + key: + description: JSON path or variable name. Depends on the operation type. + nullable: true + type: string + value: + description: JSON path or variable name. Depends on the operation type. + nullable: true + type: string + separator: + description: JSON path separator symbol. "." is used by default. + nullable: true + type: string + required: + - operation + sink: + description: The destination of events emitted by the component. If left empty, the events will be sent back to the sender. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Reported status of Transformation. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + description: CloudEvents context attributes overrides. + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Address of the HTTP/S endpoint where Transformation is serving incoming CloudEvents. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: xmltojsontransformations.flow.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + duck.knative.dev/addressable: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "io.typhoon.xmltojsontransformation.error" }, + { "type": "*" } + ] +spec: + group: flow.typhoon.zeiss.com + scope: Namespaced + names: + kind: XMLToJSONTransformation + plural: xmltojsontransformations + categories: + - all + - knative + - eventing + - typhoon + - transformations + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon CloudEvents XML to JSON Transformation engine. + type: object + properties: + spec: + description: Desired state of the transformer. + type: object + properties: + sink: + description: The destination of events emitted by the component. If left empty, the events will be sent back to the sender. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Reported status of the transformer. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + ceAttributes: + description: CloudEvents context attributes overrides. + type: array + items: + type: object + properties: + type: + type: string + source: + type: string + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Address of the HTTP/S endpoint where the transformer is serving incoming CloudEvents. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: xslttransformations.flow.typhoon.zeiss.com + labels: + typhoon.zeiss.com/crd-install: 'true' + annotations: + registry.typhoon.zeiss.com/acceptedEventTypes: | + [ + { "type": "*" } + ] + registry.knative.dev/eventTypes: | + [ + { "type": "io.typhoon.xslttransformation.error" }, + { "type": "*" } + ] +spec: + group: flow.typhoon.zeiss.com + scope: Namespaced + names: + kind: XSLTTransformation + plural: xslttransformations + categories: + - all + - knative + - eventing + - typhoon + - transformations + versions: + - name: v1alpha1 + served: true + storage: true + subresources: + status: {} + schema: + openAPIV3Schema: + description: typhoon CloudEvents XSLT transformation. + type: object + properties: + spec: + description: Desired state of the typhoon component. + type: object + properties: + xslt: + description: XSLT used to transform incoming CloudEvents. + type: object + properties: + value: + description: Literal inline value. + type: string + valueFromSecret: + description: A reference to a Kubernetes Secret object containing the value. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + valueFromConfigMap: + description: A reference to a Kubernetes ConfigMap object containing the value. + type: object + properties: + name: + type: string + key: + type: string + required: + - name + - key + oneOf: + - required: [value] + - required: [valueFromSecret] + - required: [valueFromConfigMap] + allowPerEventXSLT: + description: Whether the XSLT informed at the spec can be overriden at each CloudEvent. + type: boolean + sink: + description: The destination of events emitted by the component. If left empty, the events will be sent back to the sender. + type: object + properties: + ref: + description: Reference to an addressable Kubernetes object to be used as the destination of events. + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + uri: + description: URI to use as the destination of events. + type: string + format: uri + anyOf: + - required: [ref] + - required: [uri] + adapterOverrides: + description: Kubernetes object parameters to apply on top of default adapter values. + type: object + properties: + annotations: + description: Adapter annotations. + type: object + additionalProperties: + type: string + labels: + description: Adapter labels. + type: object + additionalProperties: + type: string + env: + description: Adapter environment variables. + type: array + items: + type: object + properties: + name: + type: string + value: + type: string + public: + description: Adapter visibility scope. + type: boolean + resources: + description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + tolerations: + description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: array + items: + type: object + properties: + key: + description: Taint key that the toleration applies to. + type: string + operator: + description: Key's relationship to the value. + type: string + enum: [Exists, Equal] + value: + description: Taint value the toleration matches to. + type: string + effect: + description: Taint effect to match. + type: string + enum: [NoSchedule, PreferNoSchedule, NoExecute] + tolerationSeconds: + description: Period of time a toleration of effect NoExecute tolerates the taint. + type: integer + format: int64 + nodeSelector: + description: NodeSelector only allow the object pods to be created at nodes where all selector labels are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector. NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + additionalProperties: + type: string + affinity: + description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/ + type: object + x-kubernetes-preserve-unknown-fields: true + anyOf: + - required: [xslt] + - required: [allowPerEventXSLT] + status: + description: Reported status. + type: object + properties: + sinkUri: + description: URI of the sink where events are currently sent to. + type: string + format: uri + observedGeneration: + type: integer + format: int64 + conditions: + type: array + items: + type: object + properties: + type: + type: string + status: + type: string + enum: ['True', 'False', Unknown] + severity: + type: string + enum: [Error, Warning, Info] + reason: + type: string + message: + type: string + lastTransitionTime: + type: string + format: date-time + required: + - type + - status + address: + description: Address of the HTTP/S endpoint where component is listening for incoming CloudEvents. + type: object + properties: + url: + type: string + additionalPrinterColumns: + - name: Address + type: string + jsonPath: .status.address.url + - name: Ready + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].status + - name: Reason + type: string + jsonPath: .status.conditions[?(@.type=='Ready')].reason + +--- +apiVersion: admissionregistration.k8s.io/v1 +kind: MutatingWebhookConfiguration +metadata: + name: defaulting.webhook.typhoon.zeiss.com + labels: + app.kubernetes.io/part-of: typhoon +webhooks: + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: typhoon-webhook + namespace: typhoon + sideEffects: None + failurePolicy: Fail + name: defaulting.webhook.typhoon.zeiss.com +--- +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingWebhookConfiguration +metadata: + name: validation.webhook.typhoon.zeiss.com + labels: + app.kubernetes.io/part-of: typhoon +webhooks: + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: typhoon-webhook + namespace: typhoon + sideEffects: None + failurePolicy: Fail + name: validation.webhook.typhoon.zeiss.com +--- +apiVersion: v1 +kind: Secret +metadata: + name: typhoon-webhook-certs + namespace: typhoon + labels: + app.kubernetes.io/part-of: typhoon +# The data is populated at install time. + +---