From 2a8de89454d933b06bd990d3e9338a9dea330ad2 Mon Sep 17 00:00:00 2001 From: kyma-website-bot <49988522+kyma-website-bot@users.noreply.github.com> Date: Thu, 22 Aug 2024 12:23:27 +0000 Subject: [PATCH] Update modules --- model.js | 5768 ++++++++++++++++++++++------------------------------ model.json | 5768 ++++++++++++++++++++++------------------------------ 2 files changed, 4922 insertions(+), 6614 deletions(-) diff --git a/model.js b/model.js index 24bc347..4bf4764 100644 --- a/model.js +++ b/model.js @@ -7257,14 +7257,19 @@ export default [ }, "versions": [ { - "version": "2.4.2", - "channels": [ - "regular" - ], - "documentation": "https://kyma-project.io/#/api-gateway/user/README", - "repository": "https://github.com/kyma-project/api-gateway.git", - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "version": "2.5.0", + "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/api-gateway-manager.yaml", + "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/apigateway-default-cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "APIGateway", + "metadata": { + "name": "default" + }, + "spec": { + "enableKymaGateway": true + } + }, "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", @@ -7278,7 +7283,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "apigateways.operator.kyma-project.io" @@ -7431,7 +7436,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "apirules.gateway.kyma-project.io" @@ -7877,17 +7882,28 @@ export default [ }, "gateway": { "description": "Specifies the Istio Gateway to be used.", - "pattern": "^[0-9a-z-_]+(\\/[0-9a-z-_]+|(\\.[0-9a-z-_]+)*)$", - "type": "string" + "maxLength": 127, + "type": "string", + "x-kubernetes-validations": [ + { + "message": "Gateway is not valid", + "rule": "self.matches('^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?/([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)$')" + } + ] }, "hosts": { "description": "Specifies the URLs of the exposed service.", "items": { "description": "Host is the URL of the exposed service.", - "maxLength": 256, + "maxLength": 255, "minLength": 3, - "pattern": "^([a-zA-Z0-9][a-zA-Z0-9-_]*\\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$", - "type": "string" + "type": "string", + "x-kubernetes-validations": [ + { + "message": "Host is not Fully Qualified Domain Name", + "rule": "self.matches('^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" + } + ] }, "maxItems": 1, "minItems": 1, @@ -7997,6 +8013,26 @@ export default [ "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", "type": "string" }, + "request": { + "description": "Request allows modifying the request before it is forwarded to the service.", + "properties": { + "cookies": { + "additionalProperties": { + "type": "string" + }, + "description": "Cookies allow modifying the request cookies before it is forwarded to the service.", + "type": "object" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers allow modifying the request headers before it is forwarded to the service.", + "type": "object" + } + }, + "type": "object" + }, "service": { "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", "properties": { @@ -8143,7 +8179,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-controller-manager", @@ -8159,7 +8195,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-leader-election-role", @@ -8223,7 +8259,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-manager-role" @@ -8640,7 +8676,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-leader-election-rolebinding", @@ -8668,7 +8704,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-manager-rolebinding" @@ -8704,7 +8740,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "busola.io/extension": "resource", "busola.io/extension-version": "0.5", "kyma-project.io/module": "api-gateway" @@ -8729,7 +8765,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "busola.io/extension": "resource", "busola.io/extension-version": "0.5", "kyma-project.io/module": "api-gateway" @@ -8747,7 +8783,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-operator-metrics", @@ -8776,7 +8812,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-webhook-service", @@ -8808,7 +8844,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-priority-class" @@ -8824,7 +8860,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "control-plane": "controller-manager", "kyma-project.io/module": "api-gateway" }, @@ -8849,7 +8885,7 @@ export default [ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "control-plane": "controller-manager", "kyma-project.io/module": "api-gateway", "sidecar.istio.io/inject": "false" @@ -8866,7 +8902,7 @@ export default [ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -8912,7 +8948,7 @@ export default [ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "name": "init", "resources": { "limits": { @@ -8945,32 +8981,48 @@ export default [ } } ], - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "APIGateway", - "metadata": { - "name": "default" - }, - "spec": { - "enableKymaGateway": true - } - }, + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "crPath": "/apis/operator.kyma-project.io/v1alpha1/apigateways/default", - "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.4.2/api-gateway-manager.yaml", - "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.4.2/apigateway-default-cr.yaml" - }, + "channels": [ + "fast", + "regular" + ], + "documentation": "https://kyma-project.io/#/api-gateway/user/README", + "repository": "https://github.com/kyma-project/api-gateway.git" + } + ] + }, + { + "name": "serverless", + "documentation": "https://kyma-project.io/#/serverless-manager/user/README", + "repository": "https://github.com/kyma-project/serverless-manager.git", + "managedResources": [ + "/apis/serverless.kyma-project.io/v1alpha2/functions", + "/apis/operator.kyma-project.io/v1alpha1/serverlesses" + ], + "manageable": true, + "latestGithubRelease": { + "repository": "kyma-project/serverless-manager", + "deploymentYaml": "serverless-operator.yaml", + "crYaml": "default-serverless-cr.yaml" + }, + "versions": [ { - "version": "2.5.0", - "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/api-gateway-manager.yaml", - "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/apigateway-default-cr.yaml", + "version": "1.5.1", + "deploymentYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/serverless-operator.yaml", + "crYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/default-serverless-cr.yaml", "cr": { "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "APIGateway", + "kind": "Serverless", "metadata": { - "name": "default" + "name": "default", + "namespace": "kyma-system" }, "spec": { - "enableKymaGateway": true + "dockerRegistry": { + "enableInternal": true + } } }, "resources": [ @@ -8982,37 +9034,52 @@ export default [ "controller-gen.kubebuilder.io/version": "v0.14.0" }, "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" + "app.kubernetes.io/component": "serverless-operator.kyma-project.io" }, - "name": "apigateways.operator.kyma-project.io" + "name": "serverlesses.operator.kyma-project.io" }, "spec": { "group": "operator.kyma-project.io", "names": { - "kind": "APIGateway", - "listKind": "APIGatewayList", - "plural": "apigateways", - "singular": "apigateway" + "kind": "Serverless", + "listKind": "ServerlessList", + "plural": "serverlesses", + "singular": "serverless" }, - "scope": "Cluster", + "scope": "Namespaced", "versions": [ { "additionalPrinterColumns": [ + { + "jsonPath": ".status.conditions[?(@.type=='Configured')].status", + "name": "Configured", + "type": "string" + }, + { + "jsonPath": ".status.conditions[?(@.type=='Installed')].status", + "name": "Installed", + "type": "string" + }, + { + "jsonPath": ".metadata.generation", + "name": "generation", + "type": "integer" + }, + { + "jsonPath": ".metadata.creationTimestamp", + "name": "age", + "type": "date" + }, { "jsonPath": ".status.state", - "name": "State", + "name": "state", "type": "string" } ], "name": "v1alpha1", "schema": { "openAPIV3Schema": { - "description": "APIGateway is the Schema for the apigateways API", + "description": "Serverless is the Schema for the serverlesses API", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -9026,20 +9093,80 @@ export default [ "type": "object" }, "spec": { - "description": "APIGatewaySpec defines the desired state of APIGateway", + "description": "ServerlessSpec defines the desired state of Serverless", "properties": { - "enableKymaGateway": { - "description": "Specifies whether the default Kyma Gateway kyma-gateway in kyma-system Namespace is created.", - "type": "boolean" + "defaultBuildJobPreset": { + "description": "Configures the default build Job preset to be used", + "type": "string" + }, + "defaultRuntimePodPreset": { + "description": "Configures the default runtime Pod preset to be used", + "type": "string" + }, + "dockerRegistry": { + "properties": { + "enableInternal": { + "description": "When set to true, the internal Docker registry is enabled", + "type": "boolean" + }, + "secretName": { + "description": "Secret used for configuration of the Docker registry", + "type": "string" + } + }, + "type": "object" + }, + "eventing": { + "description": "Used Eventing endpoint", + "properties": { + "endpoint": { + "type": "string" + } + }, + "required": [ + "endpoint" + ], + "type": "object" + }, + "functionBuildExecutorArgs": { + "description": "Specifies the arguments passed to the Function build executor", + "type": "string" + }, + "functionBuildMaxSimultaneousJobs": { + "description": "A number of simultaneous jobs that can run at the same time. The default value is `5`", + "type": "string" + }, + "functionRequeueDuration": { + "description": "Sets the requeue duration for Function. By default, the Function associated with the default configuration is requeued every 5 minutes", + "type": "string" + }, + "healthzLivenessTimeout": { + "description": "Sets the timeout for the Function health check. The default value in seconds is `10`", + "type": "string" + }, + "targetCPUUtilizationPercentage": { + "description": "Sets a custom CPU utilization threshold for scaling Function Pods", + "type": "string" + }, + "tracing": { + "description": "Used Tracing endpoint", + "properties": { + "endpoint": { + "type": "string" + } + }, + "required": [ + "endpoint" + ], + "type": "object" } }, "type": "object" }, "status": { - "description": "APIGatewayStatus defines the observed state of APIGateway", "properties": { "conditions": { - "description": "Conditions of APIGateway", + "description": "Conditions associated with CustomStatus.", "items": { "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", "properties": { @@ -9093,24 +9220,60 @@ export default [ }, "type": "array" }, - "description": { - "description": "Description of APIGateway status", + "defaultBuildJobPreset": { "type": "string" }, - "state": { - "description": "State signifies current state of APIGateway. Value can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\", \"Warning\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], + "defaultRuntimePodPreset": { "type": "string" - } - }, - "required": [ - "state" + }, + "dockerRegistry": { + "description": "Used registry configuration.\nContains registry URL or \"internal\"", + "type": "string" + }, + "eventingEndpoint": { + "description": "Used the Eventing endpoint and the Tracing endpoint.", + "type": "string" + }, + "functionBuildExecutorArgs": { + "type": "string" + }, + "functionBuildMaxSimultaneousJobs": { + "type": "string" + }, + "functionRequeueDuration": { + "type": "string" + }, + "healthzLivenessTimeout": { + "type": "string" + }, + "served": { + "description": "Served signifies that current Serverless is managed.\nValue can be one of (\"True\", \"False\").", + "enum": [ + "True", + "False" + ], + "type": "string" + }, + "state": { + "description": "State signifies current state of Serverless.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\").", + "enum": [ + "Processing", + "Deleting", + "Ready", + "Error", + "Warning" + ], + "type": "string" + }, + "targetCPUUtilizationPercentage": { + "type": "string" + }, + "tracingEndpoint": { + "type": "string" + } + }, + "required": [ + "served" ], "type": "object" } @@ -9128,1931 +9291,66 @@ export default [ } }, { - "apiVersion": "apiextensions.k8s.io/v1", - "kind": "CustomResourceDefinition", + "apiVersion": "v1", + "kind": "ServiceAccount", "metadata": { - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" + "labels": { + "app.kubernetes.io/component": "serverless-operator.kyma-project.io", + "app.kubernetes.io/created-by": "serverless-operator", + "app.kubernetes.io/instance": "serverless-operator-sa", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "serverless-operator" }, + "name": "serverless-operator", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" + "app.kubernetes.io/component": "serverless-operator.kyma-project.io" }, - "name": "apirules.gateway.kyma-project.io" + "name": "serverless-operator-role" }, - "spec": { - "conversion": { - "strategy": "Webhook", - "webhook": { - "clientConfig": { - "service": { - "name": "api-gateway-webhook-service", - "namespace": "kyma-system", - "path": "/convert", - "port": 9443 - } - }, - "conversionReviewVersions": [ - "v1beta1", - "v2alpha1" - ] - } + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "secrets", + "serviceaccounts", + "services" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "group": "gateway.kyma-project.io", - "names": { - "kind": "APIRule", - "listKind": "APIRuleList", - "plural": "apirules", - "singular": "apirule" - }, - "scope": "Namespaced", - "versions": [ - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.APIRuleStatus.code", - "name": "Status", - "type": "string" - }, - { - "jsonPath": ".spec.host", - "name": "Host", - "type": "string" - } - ], - "name": "v1beta1", - "schema": { - "openAPIV3Schema": { - "description": "APIRule is the Schema for ApiRule APIs.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Defines the desired state of ApiRule.", - "properties": { - "corsPolicy": { - "description": "Specifies CORS headers configuration that will be sent downstream", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "format": "duration", - "type": "string" - } - }, - "type": "object" - }, - "gateway": { - "description": "Specifies the Istio Gateway to be used.", - "pattern": "^[0-9a-z-_]+(\\/[0-9a-z-_]+|(\\.[0-9a-z-_]+)*)$", - "type": "string" - }, - "host": { - "description": "Specifies the URL of the exposed service.", - "maxLength": 256, - "minLength": 3, - "pattern": "^([a-zA-Z0-9][a-zA-Z0-9-_]*\\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$", - "type": "string" - }, - "rules": { - "description": "Represents the array of Oathkeeper access rules to be applied.", - "items": { - "description": "Rule .", - "properties": { - "accessStrategies": { - "description": "Specifies the list of access strategies.\nAll strategies listed in [Oathkeeper documentation](https://www.ory.sh/docs/oathkeeper/pipeline/authn) are supported.", - "items": { - "description": "Represents a handler that authenticates provided credentials. See the corresponding type in the oathkeeper-maester project.", - "properties": { - "config": { - "description": "Configures the handler. Configuration keys vary per handler.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "handler": { - "description": "Specifies the name of the handler.", - "type": "string" - } - }, - "required": [ - "handler" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "methods": { - "description": "Represents the list of allowed HTTP request methods available for the **spec.rules.path**.", - "items": { - "description": "HttpMethod specifies the HTTP request method. The list of supported methods is defined in RFC 9910: HTTP Semantics and RFC 5789: PATCH Method for HTTP.", - "enum": [ - "GET", - "HEAD", - "POST", - "PUT", - "DELETE", - "CONNECT", - "OPTIONS", - "TRACE", - "PATCH" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "mutators": { - "description": "Specifies the list of [Ory Oathkeeper](https://www.ory.sh/docs/oathkeeper/pipeline/mutator) mutators.", - "items": { - "description": "Mutator represents a handler that transforms the HTTP request before forwarding it. See the corresponding in the oathkeeper-maester project.", - "properties": { - "config": { - "description": "Configures the handler. Configuration keys vary per handler.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "handler": { - "description": "Specifies the name of the handler.", - "type": "string" - } - }, - "required": [ - "handler" - ], - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Specifies the path of the exposed service.", - "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", - "type": "string" - }, - "service": { - "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "accessStrategies", - "methods", - "path" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "service": { - "description": "Describes the service to expose.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "gateway", - "host", - "rules" - ], - "type": "object" - }, - "status": { - "description": "Describes the observed state of ApiRule.", - "properties": { - "APIRuleStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "accessRuleStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "authorizationPolicyStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "lastProcessedTime": { - "format": "date-time", - "type": "string" - }, - "observedGeneration": { - "format": "int64", - "type": "integer" - }, - "requestAuthenticationStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "virtualServiceStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } - }, - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.state", - "name": "Status", - "type": "string" - }, - { - "jsonPath": ".spec.hosts", - "name": "Hosts", - "type": "string" - } - ], - "name": "v2alpha1", - "schema": { - "openAPIV3Schema": { - "description": "APIRule is the Schema for ApiRule APIs.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "APIRuleSpec defines the desired state of ApiRule.", - "properties": { - "corsPolicy": { - "description": "Specifies CORS headers configuration that will be sent downstream", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "gateway": { - "description": "Specifies the Istio Gateway to be used.", - "maxLength": 127, - "type": "string", - "x-kubernetes-validations": [ - { - "message": "Gateway is not valid", - "rule": "self.matches('^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?/([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)$')" - } - ] - }, - "hosts": { - "description": "Specifies the URLs of the exposed service.", - "items": { - "description": "Host is the URL of the exposed service.", - "maxLength": 255, - "minLength": 3, - "type": "string", - "x-kubernetes-validations": [ - { - "message": "Host is not Fully Qualified Domain Name", - "rule": "self.matches('^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" - } - ] - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "rules": { - "description": "Represents the array of Oathkeeper access rules to be applied.", - "items": { - "description": "Rule .", - "properties": { - "jwt": { - "description": "Specifies the Istio JWT access strategy.", - "properties": { - "authentications": { - "items": { - "description": "JwtAuthentication Config for Jwt Istio authentication", - "properties": { - "fromHeaders": { - "items": { - "description": "JwtHeader for specifying from header for the Jwt token", - "properties": { - "name": { - "type": "string" - }, - "prefix": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "type": "string" - }, - "jwksUri": { - "type": "string" - } - }, - "required": [ - "issuer", - "jwksUri" - ], - "type": "object" - }, - "type": "array" - }, - "authorizations": { - "items": { - "description": "JwtAuthorization contains scopes and audiences required for the JWT token.", - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "requiredScopes": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "methods": { - "description": "Represents the list of allowed HTTP request methods available for the **spec.rules.path**.", - "items": { - "description": "HttpMethod specifies the HTTP request method. The list of supported methods is defined in RFC 9910: HTTP Semantics and RFC 5789: PATCH Method for HTTP.", - "enum": [ - "GET", - "HEAD", - "POST", - "PUT", - "DELETE", - "CONNECT", - "OPTIONS", - "TRACE", - "PATCH" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "noAuth": { - "description": "Disables authorization when set to true.", - "type": "boolean" - }, - "path": { - "description": "Specifies the path of the exposed service.", - "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", - "type": "string" - }, - "request": { - "description": "Request allows modifying the request before it is forwarded to the service.", - "properties": { - "cookies": { - "additionalProperties": { - "type": "string" - }, - "description": "Cookies allow modifying the request cookies before it is forwarded to the service.", - "type": "object" - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "description": "Headers allow modifying the request headers before it is forwarded to the service.", - "type": "object" - } - }, - "type": "object" - }, - "service": { - "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "methods", - "path" - ], - "type": "object", - "x-kubernetes-validations": [ - { - "message": "either jwt is configured or noAuth must be set to true in a rule", - "rule": "has(self.jwt) ? !has(self.noAuth) || self.noAuth == false : has(self.noAuth) && self.noAuth == true" - } - ] - }, - "minItems": 1, - "type": "array" - }, - "service": { - "description": "Describes the service to expose.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "gateway", - "hosts", - "rules" - ], - "type": "object" - }, - "status": { - "description": "APIRuleStatus describes the observed state of ApiRule.", - "properties": { - "description": { - "description": "Description of APIRule status", - "type": "string" - }, - "lastProcessedTime": { - "format": "date-time", - "type": "string" - }, - "state": { - "description": "State signifies current state of APIRule.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\", \"Warning\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], - "type": "string" - } - }, - "required": [ - "state" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": false, - "subresources": { - "status": {} - } - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-leader-election-role", - "namespace": "kyma-system" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-manager-role" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "deployments", - "secrets", - "serviceaccounts", - "services" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apiextensions.k8s.io" - ], - "resources": [ - "customresourcedefinitions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "cert.gardener.cloud" - ], - "resources": [ - "certificates" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "dns.gardener.cloud" - ], - "resources": [ - "dnsentries" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.istio.io" - ], - "resources": [ - "gateways" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "networking.istio.io" - ], - "resources": [ - "virtualservices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "oathkeeper.ory.sh" - ], - "resources": [ - "rules" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterrolebindings", - "clusterroles", - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "authorizationpolicies" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "peerauthentications" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "requestauthentications" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-leader-election-rolebinding", - "namespace": "kyma-system" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "api-gateway-leader-election-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-manager-rolebinding" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "api-gateway-manager-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "v1", - "data": { - "dataSources": "relatedGateways:\n resource:\n kind: Gateway\n group: networking.istio.io\n version: v1beta1\n namespace: null\nrelatedServices:\n resource:\n kind: Service\n version: v1\n namespace: null\nvirtualServices:\n resource:\n kind: VirtualService\n group: networking.istio.io\n version: v1beta1\n namespace: null\n filter: '$item.metadata.labels.\"apirule.gateway.kyma-project.io/v1beta1\" = $root.metadata.name & \".\" & $root.metadata.namespace'", - "details": "header:\n - name: status\n widget: Badge\n highlights:\n positive:\n - 'OK'\n negative:\n - 'ERROR'\n critical:\n - 'SKIPPED'\n source: 'status.APIRuleStatus.code ? status.APIRuleStatus.code : \"UNKNOWN\"'\n description: status.APIRuleStatus.desc\n - name: host\n widget: ExternalLink\n source: 'spec.host'\n link: 'status.APIRuleStatus.code = \"OK\" ? \"https://\" & $virtualServices().items[0].spec.hosts[0] : \"\"'\nbody:\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.spec.jwks_url_http\"'\n visibility: '$count(spec.rules.accessStrategies.config.jwks_urls)>0 and $reduce(spec.rules.accessStrategies.config.jwks_urls,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.spec.trusted_issuers_http\"'\n visibility: '$count(spec.rules.accessStrategies.config.trusted_issuers)>0 and $reduce(spec.rules.accessStrategies.config.trusted_issuers,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.corsPolicy\"'\n visibility: '$not($exists(spec.corsPolicy))'\n - widget: Panel\n name: corsPolicy\n source: spec.corsPolicy\n visibility: $exists(spec.corsPolicy)\n children:\n - name: corsAllowMethods\n source: allowMethods\n widget: JoinedArray\n visibility: '$not($count(allowMethods)=0)'\n - name: corsAllowOriginsRegex\n source: $join(allowOrigins.regex,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.regex)=0)'\n - name: corsAllowOriginsPrefix\n source: $join(allowOrigins.prefix,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.prefix)=0)'\n - name: corsAllowOriginsExact\n source: $join(allowOrigins.exact,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.exact)=0)'\n - name: corsExposeHeaders\n source: exposeHeaders\n widget: JoinedArray\n visibility: '$not($count(exposeHeaders)=0)'\n - name: corsAllowHeaders\n source: allowHeaders\n widget: JoinedArray\n visibility: '$not($count(allowHeaders)=0)'\n - name: corsAllowCredentials\n source: allowCredentials\n widget: Badge\n visibility: '$exists(allowCredentials)'\n - name: corsMaxAge\n source: maxAge\n widget: Text\n visibility: '$exists(maxAge)'\n - name: general\n source: spec\n widget: Panel\n visibility: $exists(spec.timeout)\n children:\n - source: timeout\n name: details.timeout\n - name: service\n source: spec.service\n widget: Panel\n children:\n - name: service.name\n source: name\n widget: ResourceLink\n resource:\n name: $root.spec.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n - name: service.port\n source: port\n - source: spec.rules\n widget: Table\n name: rules\n children:\n - source: $item.path\n name: rules.path\n - source: $item.methods\n name: rules.methods\n widget: Badge\n collapsible:\n - name: general\n source: $item\n widget: Panel\n visibility: $exists($item.timeout)\n children:\n - source: $item.timeout\n name: details.timeout\n - source: $item.accessStrategies\n widget: Table\n disablePadding: true\n name: accessStrategies\n children:\n - source: $item.handler\n name: accessStrategies.handlers\n widget: Badge\n - source: $item.config.required_scope\n name: accessStrategies.required_scope\n widget: JoinedArray\n - source: $item.config.jwks_urls\n name: accessStrategies.jwks_urls\n widget: JoinedArray\n - source: $item.config.trusted_issuers\n name: accessStrategies.trusted_issuers\n widget: JoinedArray\n - source: $item.config.introspection_url\n name: accessStrategies.introspection_url\n widget: Text\n - source: $item.config.introspection_request_headers\n name: accessStrategies.introspection_request_headers\n widget: Labels\n - source: $item.config.token_from\n name: accessStrategies.token_from\n widget: Labels\n - source: $item.mutators\n widget: Table\n disablePadding: true\n name: mutators\n visibility: $exists($item.mutators)\n children:\n - source: $item.handler\n name: mutators.handlers\n widget: Badge\n - source: $item.config\n name: mutators.config\n widget: CodeViewer\n description: \"Configuration for {{[Ory Oathkeeper Rule mutators]https://www.ory.sh/docs/oathkeeper/pipeline/mutator}}\"\n language: \"'yaml'\"\n visibility: '$exists($value)'\n - name: service\n source: $item.service\n widget: Panel\n visibility: $exists($item.service)\n children:\n - name: service.name\n source: $item.service.name\n widget: ResourceLink\n resource:\n name: $item.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n - name: service.port\n source: $item.service.port\n - widget: ResourceList\n source: $virtualServices()\n name: virtualService\n disableCreate: true\n", - "form": "- simple: true\n required: false\n path: spec.timeout\n name: timeout\n inputInfo: inputInfo.timeout\n value:\n type: number\n- simple: true\n required: false\n path: spec.service\n name: service\n widget: FormGroup\n defaultExpanded: true\n children:\n - simple: true\n required: false\n path: name\n name: service-name\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [port]\n - simple: true\n required: false\n path: port\n name: service.port\n subscribe:\n port: \"$filter($relatedServices().items, function ($v) { $v.metadata.name = $root.spec.service.name and $v.metadata.namespace = $root.metadata.namespace }).spec.ports[0].port\"\n- simple: true\n required: true\n path: spec.gateway\n name: gateway\n widget: ResourceRef\n defaultExpanded: true\n visibility: $canI('networking.istio.io/v1beta1', 'Gateway')\n resource:\n kind: Gateway\n group: networking.istio.io\n version: v1beta1\n overwrite: false\n toInternal: '($values := $split($, \"/\"); { \"namespace\": $values[0], \"name\": $values[1] })'\n toExternal: 'namespace & \"/\" & name'\n trigger: [host]\n- simple: true\n var: separator\n value: \"\"\n- simple: true\n required: true\n path: spec.gateway\n name: gateway\n visibility: $not($canI('networking.istio.io/v1beta1', 'Gateway'))\n inputInfo: inputInfo.gateway\n overwrite: false\n trigger: [host]\n- simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.corsPolicy\"'\n visibility: '$not($useCorsPolicy)'\n- var: useCorsPolicy\n name: useCorsPolicy\n simple: true\n type: boolean\n dynamicValue: '$boolean(spec.corsPolicy)'\n- simple: true\n visibility: '$useCorsPolicy'\n required: false\n path: spec.corsPolicy\n name: corsPolicy\n defaultExpanded: true\n inputInfo: inputInfo.corsPolicy\n widget: FormGroup\n children:\n - simple: true\n required: false\n path: allowMethods\n name: corsAllowMethods\n widget: MultiCheckbox\n options:\n - key: GET\n - key: POST\n - key: PUT\n - key: DELETE\n - key: PATCH\n - key: HEAD\n - key: OPTIONS\n - key: CONNECT\n - key: TRACE\n - simple: true\n required: false\n path: allowOrigins\n name: corsAllowOrigins\n widget: GenericList\n children:\n - path: '[]'\n widget: KeyValuePair\n keyEnum:\n - exact\n - prefix\n - regex\n simple: true\n - simple: true\n required: false\n path: allowHeaders\n name: corsAllowHeaders\n widget: SimpleList\n children:\n - path: '[]'\n simple: true\n - simple: true\n required: false\n path: exposeHeaders\n name: corsExposeHeaders\n widget: SimpleList\n children:\n - path: '[]'\n simple: true\n - simple: true\n required: false\n path: allowCredentials\n name: corsAllowCredentials\n value:\n type: boolean\n - simple: true\n required: false\n path: maxAge\n name: corsMaxAge\n placeholder: 300s\n value:\n type: string\n- simple: true\n required: true\n path: spec.host\n name: host\n enum: \"$distinct($filter($relatedGateways().items, function ($v) { $v.metadata.namespace = $substringBefore($root.spec.gateway, '/') and $v.metadata.name = $substringAfter($root.spec.gateway, '/')}).spec.servers.hosts)\"\n subscribe:\n host: \"$string($filter($relatedGateways().items, function ($v) { $v.metadata.namespace = $substringBefore($root.spec.gateway, '/') and $v.metadata.name = $substringAfter($root.spec.gateway, '/')}).spec.servers[0].hosts[0])\"\n- simple: true\n widget: Alert\n severity: error\n alert: '\"alert.spec.host\"'\n visibility: '$substring(spec.host, 0, 1)=\"*\"'\n- simple: true\n required: true\n path: spec.rules\n name: rules\n widget: GenericList\n defaultExpanded: true\n template:\n path: '/.*'\n methods: ['GET']\n accessStrategies:\n - handler: 'no_auth'\n children:\n - simple: true\n required: false\n path: '[].timeout'\n name: timeout\n inputInfo: inputInfo.timeout\n value:\n type: number\n - simple: true\n required: true\n path: '[].path'\n name: path\n inputInfo: inputInfo.path\n - required: true\n simple: true\n path: '[].accessStrategies'\n name: accessStrategies\n widget: GenericList\n defaultExpanded: true\n template:\n handler: 'no_auth'\n children:\n - required: true\n simple: true\n path: '[].handler'\n name: accessStrategies.handler\n enum:\n - allow\n - no_auth\n - noop\n - jwt\n - oauth2_introspection\n - path: '[].config'\n simple: true\n name: accessStrategies.config\n type: object\n properties:\n jwks_urls:\n type: array\n items:\n type: string\n pattern: ^(https://|file://).*$\n trusted_issuers:\n type: array\n items:\n type: string\n pattern: ^(https://|file://).*$\n required_scope:\n type: array\n items:\n type: string\n introspection_url:\n type: string\n pattern: ^(https://|http://).*$\n introspection_request_headers:\n type: map\n token_from:\n type: map\n children:\n - simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.spec.jwks_url_http\"'\n visibility: '$reduce($item.config.jwks_urls,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - path: jwks_urls\n name: accessStrategies.jwks_urls\n inputInfo: inputInfo.jwks_urls\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.spec.trusted_issuers_http\"'\n visibility: '$reduce($item.config.trusted_issuers,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - path: trusted_issuers\n name: accessStrategies.trusted_issuers\n inputInfo: inputInfo.trusted_issuers\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - path: introspection_url\n name: accessStrategies.introspection_url\n inputInfo: inputInfo.introspection_url\n simple: true\n visibility: '$item.handler=\"oauth2_introspection\"'\n - path: introspection_request_headers\n name: accessStrategies.introspection_request_headers\n simple: true\n inputInfo: inputInfo.introspection_request_headers\n widget: KeyValuePair\n visibility: '$item.handler=\"oauth2_introspection\"'\n - path: required_scope\n name: accessStrategies.required_scope\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"oauth2_introspection\" or $item.handler=\"oauth2_client_credentials\" or $item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - path: token_from\n name: accessStrategies.token_from\n simple: true\n inputInfo: inputInfo.token_from\n widget: KeyValuePair\n visibility: '$item.handler!=\"allow\" and $item.handler!=\"no_auth\" and $item.handler!=\"noop\"'\n keyEnum:\n - header\n - query_parameter\n - cookie\n - required: true\n simple: true\n path: '[].methods'\n name: rules.methods\n widget: MultiCheckbox\n options:\n - key: GET\n - key: POST\n - key: PUT\n - key: DELETE\n - key: PATCH\n - key: HEAD\n - key: OPTIONS\n - key: CONNECT\n - key: TRACE\n - path: '[].mutators'\n name: mutators\n widget: GenericList\n children:\n - path: '[].config'\n widget: CodeEditor\n description: \"Configuration for {{[Ory Oathkeeper Rule mutators]https://www.ory.sh/docs/oathkeeper/pipeline/mutator}}\"\n language: \"'yaml'\"\n - required: true\n path: '[].handler'\n name: accessStrategies.handler\n enum:\n - noop\n - id_token\n - header\n - cookie\n - path: '[].service'\n simple: true\n name: service\n widget: FormGroup\n required: false\n children:\n - simple: true\n required: false\n path: name\n name: service-name\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [accessStrategyPort]\n - simple: true\n required: false\n path: port\n name: service.port\n subscribe:\n accessStrategyPort: \"$filter($relatedServices().items, function ($v) { $v.metadata.name = $item.service.name and $v.metadata.namespace = $root.metadata.namespace }).spec.ports[0].port\"\n", - "general": "resource:\n kind: APIRule\n group: gateway.kyma-project.io\n version: v1beta1\nname: API Rules\ncategory: Discovery and Network\nscope: namespace\ndescription: '{{[APIRule](https://kyma-project.io/#/api-gateway/user/custom-resources/apirule/04-10-apirule-custom-resource)}} allows for exposing a service externally.'\nurlPath: apirules", - "list": "- name: host\n source: spec.host\n- name: service-name\n source: '$string(spec.service.name) ? ($string(spec.service.name) & \" (port: \" & $string(spec.service.port) & \")\") : \"\"'\n widget: ResourceLink\n resource:\n name: $root.spec.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n- name: status\n widget: Badge\n highlights:\n positive:\n - 'OK'\n negative:\n - 'ERROR'\n critical:\n - 'SKIPPED'\n source: 'status.APIRuleStatus.code ? status.APIRuleStatus.code : \"UNKNOWN\"'\n description: status.APIRuleStatus.desc", - "presets": "- name: Default gateway\n default: true\n value:\n spec:\n gateway: kyma-system/kyma-gateway\n rules:\n - path: /.*\n methods:\n - GET\n accessStrategies:\n - handler: no_auth", - "translations": "en:\n accessStrategies: Access Strategies\n accessStrategies.config: Config\n accessStrategies.handler: Handler\n accessStrategies.handlers: Handlers\n accessStrategies.jwks_urls: JWKS URLs\n accessStrategies.trusted_issuers: Trusted Issuers\n accessStrategies.required_scope: Required Scope\n accessStrategies.introspection_url: Introspection URL\n accessStrategies.introspection_request_headers: Introspection Request Headers\n accessStrategies.token_from: Token From\n gateway: Gateway\n useCorsPolicy: Use custom CORS policy\n corsPolicy: CORS Policy\n corsAllowMethods: CORS Allow Methods\n corsAllowOrigins: CORS Allow Origins\n corsAllowHeaders: CORS Allow Headers\n corsExposeHeaders: CORS Expose Headers\n corsAllowCredentials: CORS Allow Credentials\n corsAllowOriginsRegex: CORS origins allowed with regex match\n corsAllowOriginsPrefix: CORS origins allowed with prefix match\n corsAllowOriginsExact: CORS origins allowed with exact match\n corsMaxAge: CORS Max Age\n host: Host\n inputInfo.corsPolicy: Defines what CORS headers will be sent on CORS preflight and response\n inputInfo.gateway: Gateway structure, '{NAMESPACE}/{NAME}'\n inputInfo.path: \"Path can contain alphanumeric characters and '/', '.', '*', '?', '!', '-', '(', and ')'.\"\n inputInfo.jwks_urls: \"JWKS URLs must start with 'https://', 'http://' or 'file://'. HTTP protocol is not recommended.\"\n inputInfo.trusted_issuers: \"Trusted Issuers must start with 'https://', 'http://' or 'file://'. HTTP protocol is not recommended.\"\n inputInfo.introspection_url: \"URL endpoint used for validating the Bearer token. Should start with 'http://' or 'https://'\"\n inputInfo.introspection_request_headers: \"Headers sent alongside the introspection request\"\n inputInfo.token_from: \"Defines where Ory Oathkeeper should look for access token\"\n inputInfo.timeout: \"Timeout for HTTP requests in seconds. The timeout can be configured for a maximum of 3900 seconds (65 minutes).\"\n mutators: Mutators\n mutators.config: Config\n mutators.handlers: Handlers\n path: Path\n rules: Rules\n rules.methods: Methods\n rules.path: Path\n service: Service\n service.name: Name\n service.port: Port\n service-name: Service Name\n status: Status\n general: General\n timeout: HTTP Request Timeout\n details.timeout: HTTP Request Timeout (seconds)\n virtualService: Virtual Service\n alert.spec.host: Host can not be a wildcard, replace * with subdomain name\n alert.spec.jwks_url_http: \"JWKS URL: HTTP protocol is not secure, consider using HTTPS\"\n alert.spec.trusted_issuers_http: \"Trusted Issuers: HTTP protocol is not secure, consider using HTTPS\"\n alert.corsPolicy: \"Disabling custom CORS Policy is not recommended. Consider setting up CORS yourself\"\n" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-apirule-ui.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n- name: Ready\n source: status.state\n widget: Badge\n description: status.description\n highlights:\n positive:\n - 'Ready'\n negative:\n - 'Error'\n critical:\n - 'Warning'\nbody:\n- widget: Panel\n name: Configuration\n children:\n - source: spec.enableKymaGateway\n name: enableKymaGateway\n visibility: '$exists($value)'\n\n- source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n success:\n - 'True'\n error:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true", - "form": "- path: spec\n simple: true\n name: General\n widget: FormGroup\n defaultExpanded: true\n children:\n - path: enableKymaGateway\n simple: true\n name: enableKymaGateway\n value:\n type: boolean", - "general": "resource:\n kind: APIGateway\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: apigateways\ncategory: Kyma\nname: APIGateway\nscope: cluster\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[APIGateway custom resource](https://kyma-project.io/#/api-gateway/user/custom-resources/apigateway/04-00-apigateway-custom-resource)}}\n configures the API Gateway module.\n ", - "list": "- name: Ready\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n negative:\n - 'Error'\n critical:\n - 'Warning'", - "translations": "en:\n enableKymaGateway: Enable Kyma Gateway" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-ui.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-operator-metrics", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-metrics", - "port": 8080, - "targetPort": 8080 - } - ], - "selector": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-webhook-service", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "https-convert", - "port": 9443, - "protocol": "TCP", - "targetPort": 9443 - } - ], - "selector": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - } - }, - { - "apiVersion": "scheduling.k8s.io/v1", - "description": "Scheduling priority of api-gateway component. Must not be blocked by unschedulable user workloads.", - "globalDefault": false, - "kind": "PriorityClass", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-priority-class" - }, - "value": 2100000 - }, - { - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": { - "labels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "control-plane": "controller-manager", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - }, - "spec": { - "replicas": 1, - "selector": { - "matchLabels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - }, - "template": { - "metadata": { - "annotations": { - "kubectl.kubernetes.io/default-container": "manager" - }, - "labels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "control-plane": "controller-manager", - "kyma-project.io/module": "api-gateway", - "sidecar.istio.io/inject": "false" - } - }, - "spec": { - "containers": [ - { - "args": [ - "--leader-elect", - "--health-probe-bind-address=:8081", - "--metrics-bind-address=:8080" - ], - "command": [ - "/manager" - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "livenessProbe": { - "httpGet": { - "path": "/healthz", - "port": 8081 - }, - "initialDelaySeconds": 15, - "periodSeconds": 20 - }, - "name": "manager", - "readinessProbe": { - "httpGet": { - "path": "/readyz", - "port": 8081 - }, - "initialDelaySeconds": 5, - "periodSeconds": 10 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "10m", - "memory": "128Mi" - } - }, - "securityContext": { - "allowPrivilegeEscalation": false, - "capabilities": { - "drop": [ - "ALL" - ] - } - } - } - ], - "initContainers": [ - { - "args": [ - "--init-only" - ], - "command": [ - "/manager" - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "name": "init", - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "10m", - "memory": "128Mi" - } - }, - "securityContext": { - "allowPrivilegeEscalation": false, - "capabilities": { - "drop": [ - "ALL" - ] - } - } - } - ], - "priorityClassName": "api-gateway-priority-class", - "securityContext": { - "runAsNonRoot": true - }, - "serviceAccountName": "api-gateway-controller-manager", - "terminationGracePeriodSeconds": 10 - } - } - } - } - ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/apigateways/default", - "channels": [ - "fast" - ], - "documentation": "https://kyma-project.io/#/api-gateway/user/README", - "repository": "https://github.com/kyma-project/api-gateway.git" - } - ] - }, - { - "name": "serverless", - "documentation": "https://kyma-project.io/#/serverless-manager/user/README", - "repository": "https://github.com/kyma-project/serverless-manager.git", - "managedResources": [ - "/apis/serverless.kyma-project.io/v1alpha2/functions", - "/apis/operator.kyma-project.io/v1alpha1/serverlesses" - ], - "manageable": true, - "latestGithubRelease": { - "repository": "kyma-project/serverless-manager", - "deploymentYaml": "serverless-operator.yaml", - "crYaml": "default-serverless-cr.yaml" - }, - "versions": [ - { - "version": "1.5.1", - "deploymentYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/serverless-operator.yaml", - "crYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/default-serverless-cr.yaml", - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "Serverless", - "metadata": { - "name": "default", - "namespace": "kyma-system" - }, - "spec": { - "dockerRegistry": { - "enableInternal": true - } - } - }, - "resources": [ - { - "apiVersion": "apiextensions.k8s.io/v1", - "kind": "CustomResourceDefinition", - "metadata": { - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" - }, - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io" - }, - "name": "serverlesses.operator.kyma-project.io" - }, - "spec": { - "group": "operator.kyma-project.io", - "names": { - "kind": "Serverless", - "listKind": "ServerlessList", - "plural": "serverlesses", - "singular": "serverless" - }, - "scope": "Namespaced", - "versions": [ - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.conditions[?(@.type=='Configured')].status", - "name": "Configured", - "type": "string" - }, - { - "jsonPath": ".status.conditions[?(@.type=='Installed')].status", - "name": "Installed", - "type": "string" - }, - { - "jsonPath": ".metadata.generation", - "name": "generation", - "type": "integer" - }, - { - "jsonPath": ".metadata.creationTimestamp", - "name": "age", - "type": "date" - }, - { - "jsonPath": ".status.state", - "name": "state", - "type": "string" - } - ], - "name": "v1alpha1", - "schema": { - "openAPIV3Schema": { - "description": "Serverless is the Schema for the serverlesses API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "ServerlessSpec defines the desired state of Serverless", - "properties": { - "defaultBuildJobPreset": { - "description": "Configures the default build Job preset to be used", - "type": "string" - }, - "defaultRuntimePodPreset": { - "description": "Configures the default runtime Pod preset to be used", - "type": "string" - }, - "dockerRegistry": { - "properties": { - "enableInternal": { - "description": "When set to true, the internal Docker registry is enabled", - "type": "boolean" - }, - "secretName": { - "description": "Secret used for configuration of the Docker registry", - "type": "string" - } - }, - "type": "object" - }, - "eventing": { - "description": "Used Eventing endpoint", - "properties": { - "endpoint": { - "type": "string" - } - }, - "required": [ - "endpoint" - ], - "type": "object" - }, - "functionBuildExecutorArgs": { - "description": "Specifies the arguments passed to the Function build executor", - "type": "string" - }, - "functionBuildMaxSimultaneousJobs": { - "description": "A number of simultaneous jobs that can run at the same time. The default value is `5`", - "type": "string" - }, - "functionRequeueDuration": { - "description": "Sets the requeue duration for Function. By default, the Function associated with the default configuration is requeued every 5 minutes", - "type": "string" - }, - "healthzLivenessTimeout": { - "description": "Sets the timeout for the Function health check. The default value in seconds is `10`", - "type": "string" - }, - "targetCPUUtilizationPercentage": { - "description": "Sets a custom CPU utilization threshold for scaling Function Pods", - "type": "string" - }, - "tracing": { - "description": "Used Tracing endpoint", - "properties": { - "endpoint": { - "type": "string" - } - }, - "required": [ - "endpoint" - ], - "type": "object" - } - }, - "type": "object" - }, - "status": { - "properties": { - "conditions": { - "description": "Conditions associated with CustomStatus.", - "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", - "properties": { - "lastTransitionTime": { - "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "format": "date-time", - "type": "string" - }, - "message": { - "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", - "maxLength": 32768, - "type": "string" - }, - "observedGeneration": { - "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "reason": { - "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", - "type": "string" - }, - "status": { - "description": "status of the condition, one of True, False, Unknown.", - "enum": [ - "True", - "False", - "Unknown" - ], - "type": "string" - }, - "type": { - "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", - "type": "string" - } - }, - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "defaultBuildJobPreset": { - "type": "string" - }, - "defaultRuntimePodPreset": { - "type": "string" - }, - "dockerRegistry": { - "description": "Used registry configuration.\nContains registry URL or \"internal\"", - "type": "string" - }, - "eventingEndpoint": { - "description": "Used the Eventing endpoint and the Tracing endpoint.", - "type": "string" - }, - "functionBuildExecutorArgs": { - "type": "string" - }, - "functionBuildMaxSimultaneousJobs": { - "type": "string" - }, - "functionRequeueDuration": { - "type": "string" - }, - "healthzLivenessTimeout": { - "type": "string" - }, - "served": { - "description": "Served signifies that current Serverless is managed.\nValue can be one of (\"True\", \"False\").", - "enum": [ - "True", - "False" - ], - "type": "string" - }, - "state": { - "description": "State signifies current state of Serverless.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], - "type": "string" - }, - "targetCPUUtilizationPercentage": { - "type": "string" - }, - "tracingEndpoint": { - "type": "string" - } - }, - "required": [ - "served" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io", - "app.kubernetes.io/created-by": "serverless-operator", - "app.kubernetes.io/instance": "serverless-operator-sa", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "serviceaccount", - "app.kubernetes.io/part-of": "serverless-operator" - }, - "name": "serverless-operator", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io" - }, - "name": "serverless-operator-role" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "secrets", - "serviceaccounts", - "services" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "get", - "list", - "patch", - "watch" - ] + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "get", + "list", + "patch", + "watch" + ] }, { "apiGroups": [ @@ -27492,16 +25790,268 @@ export default [ } } } - }, + }, + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + }, + "labels": { + "app": "eventing-manager-cert-handler", + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-cert-handler", + "namespace": "kyma-system" + }, + "spec": { + "jobTemplate": { + "spec": { + "template": { + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + } + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "CRD_NAME", + "value": "subscriptions.eventing.kyma-project.io" + }, + { + "name": "SECRET_NAME", + "value": "eventing-manager-webhook-server-cert" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", + "imagePullPolicy": "IfNotPresent", + "name": "api-gateway" + } + ], + "priorityClassName": "eventing-manager-priority-class", + "restartPolicy": "Never", + "serviceAccountName": "eventing-manager-cert-handler" + } + } + } + }, + "schedule": "0 0 * * 0,4" + } + }, + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + }, + "labels": { + "app": "eventing-manager-cert-handler", + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-cert-handler", + "namespace": "kyma-system" + }, + "spec": { + "template": { + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + } + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "CRD_NAME", + "value": "subscriptions.eventing.kyma-project.io" + }, + { + "name": "SECRET_NAME", + "value": "eventing-manager-webhook-server-cert" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", + "imagePullPolicy": "IfNotPresent", + "name": "api-gateway" + } + ], + "priorityClassName": "eventing-manager-priority-class", + "restartPolicy": "Never", + "serviceAccountName": "eventing-manager-cert-handler" + } + } + } + }, + { + "apiVersion": "admissionregistration.k8s.io/v1", + "kind": "MutatingWebhookConfiguration", + "metadata": { + "creationTimestamp": null, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "subscription-mutating-webhook-configuration" + }, + "webhooks": [ + { + "admissionReviewVersions": [ + "v1" + ], + "clientConfig": { + "service": { + "name": "eventing-manager-webhook-service", + "namespace": "kyma-system", + "path": "/mutate-eventing-kyma-project-io-v1alpha2-subscription" + } + }, + "failurePolicy": "Fail", + "name": "msubscription.kb.io", + "rules": [ + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "apiVersions": [ + "v1alpha2" + ], + "operations": [ + "CREATE", + "UPDATE" + ], + "resources": [ + "subscriptions" + ] + } + ], + "sideEffects": "None" + } + ] + }, + { + "apiVersion": "admissionregistration.k8s.io/v1", + "kind": "ValidatingWebhookConfiguration", + "metadata": { + "creationTimestamp": null, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "subscription-validating-webhook-configuration" + }, + "webhooks": [ + { + "admissionReviewVersions": [ + "v1" + ], + "clientConfig": { + "service": { + "name": "eventing-manager-webhook-service", + "namespace": "kyma-system", + "path": "/validate-eventing-kyma-project-io-v1alpha2-subscription" + } + }, + "failurePolicy": "Fail", + "name": "vsubscription.kb.io", + "rules": [ + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "apiVersions": [ + "v1alpha2" + ], + "operations": [ + "CREATE", + "UPDATE" + ], + "resources": [ + "subscriptions" + ] + } + ], + "sideEffects": "None" + } + ] + } + ], + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.0.2", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing" + }, + { + "version": "1.2.0", + "deploymentYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-manager.yaml", + "crYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-default-cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "Eventing", + "metadata": { + "labels": { + "app.kubernetes.io/name": "eventing", + "app.kubernetes.io/instance": "eventing", + "app.kubernetes.io/part-of": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager" + }, + "name": "eventing", + "namespace": "kyma-system" + }, + "spec": { + "publisher": { + "replicas": { + "min": 2, + "max": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "64Mi" + } + } + } + } + }, + "resources": [ { - "apiVersion": "batch/v1", - "kind": "CronJob", + "apiVersion": "apiextensions.k8s.io/v1", + "kind": "CustomResourceDefinition", "metadata": { "annotations": { - "sidecar.istio.io/inject": "false" + "controller-gen.kubebuilder.io/version": "v0.14.0" }, "labels": { - "app": "eventing-manager-cert-handler", "app.kubernetes.io/component": "eventing-manager", "app.kubernetes.io/created-by": "eventing-manager", "app.kubernetes.io/instance": "eventing-manager", @@ -27510,242 +26060,425 @@ export default [ "app.kubernetes.io/part-of": "Kyma", "control-plane": "eventing-manager" }, - "name": "eventing-manager-cert-handler", - "namespace": "kyma-system" + "name": "eventings.operator.kyma-project.io" }, "spec": { - "jobTemplate": { - "spec": { - "template": { - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - } + "group": "operator.kyma-project.io", + "names": { + "kind": "Eventing", + "listKind": "EventingList", + "plural": "eventings", + "singular": "eventing" + }, + "scope": "Namespaced", + "versions": [ + { + "additionalPrinterColumns": [ + { + "description": "State of Eventing", + "jsonPath": ".status.state", + "name": "State", + "type": "string" }, - "spec": { - "containers": [ - { - "env": [ + { + "description": "Type of Eventing backend, either NATS or EventMesh", + "jsonPath": ".spec.backend.type", + "name": "Backend", + "type": "string" + }, + { + "description": "Age of the resource", + "jsonPath": ".metadata.creationTimestamp", + "name": "Age", + "type": "date" + } + ], + "name": "v1alpha1", + "schema": { + "openAPIV3Schema": { + "description": "Eventing is the Schema for the eventing API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "default": { + "logging": { + "logLevel": "Info" + }, + "publisher": { + "replicas": { + "max": 2, + "min": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + } + } + }, + "description": "EventingSpec defines the desired state of Eventing.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations allows to add annotations to resources.", + "type": "object" + }, + "backend": { + "description": "Backend defines the active backend used by Eventing.", + "properties": { + "config": { + "default": { + "natsMaxMsgsPerTopic": 1000000, + "natsStreamMaxSize": "700Mi", + "natsStreamReplicas": 3, + "natsStreamStorageType": "File" + }, + "description": "Config defines configuration for the Eventing backend.", + "properties": { + "domain": { + "description": "Domain defines the cluster public domain used to configure the EventMesh Subscriptions\nand their corresponding ApiRules.", + "pattern": "^(?:([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*)?$", + "type": "string" + }, + "eventMeshSecret": { + "description": "EventMeshSecret defines the namespaced name of the Kubernetes Secret containing EventMesh credentials. The format of name is \"namespace/name\".", + "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", + "type": "string" + }, + "eventTypePrefix": { + "default": "sap.kyma.custom", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "eventTypePrefix cannot be empty", + "rule": "self!=''" + } + ] + }, + "natsMaxMsgsPerTopic": { + "default": 1000000, + "description": "NATSMaxMsgsPerTopic limits how many messages in the NATS stream to retain per subject.", + "type": "integer" + }, + "natsStreamMaxSize": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "default": "700Mi", + "description": "NATSStreamMaxSize defines the maximum storage size for stream data.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "natsStreamReplicas": { + "default": 3, + "description": "NATSStreamReplicas defines the number of replicas for the stream.", + "type": "integer" + }, + "natsStreamStorageType": { + "default": "File", + "description": "NATSStreamStorageType defines the storage type for stream data.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "storage type can only be set to File or Memory", + "rule": "self=='File' || self=='Memory'" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "NATS", + "description": "Type defines which backend to use. The value is either `EventMesh`, or `NATS`.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "backend type can only be set to NATS or EventMesh", + "rule": "self=='NATS' || self=='EventMesh' || self==''" + } + ] + } + }, + "required": [ + "type" + ], + "type": "object", + "x-kubernetes-validations": [ + { + "message": "secret cannot be empty if EventMesh backend is used", + "rule": " (self.type != 'EventMesh') || ((self.type == 'EventMesh') && (self.config.eventMeshSecret != ''))" + } + ] + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels allows to add Labels to resources.", + "type": "object" + }, + "logging": { + "default": { + "logLevel": "Info" + }, + "description": "Logging defines the log level for eventing-manager.", + "properties": { + "logLevel": { + "default": "Info", + "description": "LogLevel defines the log level.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "logLevel can only be set to Debug, Info, Warn or Error", + "rule": "self=='Info' || self=='Warn' || self=='Error' || self=='Debug'" + } + ] + } + }, + "type": "object" + }, + "publisher": { + "default": { + "replicas": { + "max": 2, + "min": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + } + }, + "description": "Publisher defines the configurations for eventing-publisher-proxy.", + "properties": { + "replicas": { + "default": { + "max": 2, + "min": 2 + }, + "description": "Replicas defines the scaling min/max for eventing-publisher-proxy.", + "properties": { + "max": { + "default": 2, + "description": "Max defines maximum number of replicas.", + "type": "integer" + }, + "min": { + "default": 2, + "description": "Min defines minimum number of replicas.", + "minimum": 0, + "type": "integer" + } + }, + "type": "object", + "x-kubernetes-validations": [ + { + "message": "min value must be smaller than the max value", + "rule": "self.min <= self.max" + } + ] + }, + "resources": { + "default": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + }, + "description": "Resources defines resources for eventing-publisher-proxy.", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "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.\nMore info: 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.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object", + "x-kubernetes-validations": [ { - "name": "CRD_NAME", - "value": "subscriptions.eventing.kyma-project.io" + "message": "backend config cannot be deleted", + "rule": "!(oldSelf!=null && has(oldSelf.backend)) || has(self.backend)" + } + ] + }, + "status": { + "description": "EventingStatus defines the observed state of Eventing.", + "properties": { + "activeBackend": { + "type": "string" + }, + "conditions": { + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", + "maxLength": 32768, + "type": "string" + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], + "type": "string" + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" + } + }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object" + }, + "type": "array" }, - { - "name": "SECRET_NAME", - "value": "eventing-manager-webhook-server-cert" + "publisherService": { + "type": "string" + }, + "specHash": { + "format": "int64", + "type": "integer" + }, + "state": { + "description": "Defines the overall state of the Eventing custom resource.
\n- `Ready` when all the resources managed by the Eventing manager are deployed successfully and the Eventing backend is connected.
\n- `Warning` if there is a user input misconfiguration. The following are examples of user input misconfigurations:
\n  - There is no backend configured.
\n  - The backend is configured to NATS but there is no NATS module installed.
\n  - The backend is configured to EventMesh but there is no valid EventMesh Secret configured.
\n- `Processing` if the resources managed by the Eventing manager are being created or updated.
\n- `Error` if an error occurred while reconciling the Eventing custom resource.", + "type": "string" } + }, + "required": [ + "activeBackend", + "specHash", + "state" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", - "imagePullPolicy": "IfNotPresent", - "name": "api-gateway" + "type": "object" } - ], - "priorityClassName": "eventing-manager-priority-class", - "restartPolicy": "Never", - "serviceAccountName": "eventing-manager-cert-handler" + }, + "type": "object" } + }, + "served": true, + "storage": true, + "subresources": { + "status": {} } } - }, - "schedule": "0 0 * * 0,4" - } - }, - { - "apiVersion": "batch/v1", - "kind": "Job", - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - }, - "labels": { - "app": "eventing-manager-cert-handler", - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager-cert-handler", - "namespace": "kyma-system" - }, - "spec": { - "template": { - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "CRD_NAME", - "value": "subscriptions.eventing.kyma-project.io" - }, - { - "name": "SECRET_NAME", - "value": "eventing-manager-webhook-server-cert" - } - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", - "imagePullPolicy": "IfNotPresent", - "name": "api-gateway" - } - ], - "priorityClassName": "eventing-manager-priority-class", - "restartPolicy": "Never", - "serviceAccountName": "eventing-manager-cert-handler" - } - } + ] } }, - { - "apiVersion": "admissionregistration.k8s.io/v1", - "kind": "MutatingWebhookConfiguration", - "metadata": { - "creationTimestamp": null, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "subscription-mutating-webhook-configuration" - }, - "webhooks": [ - { - "admissionReviewVersions": [ - "v1" - ], - "clientConfig": { - "service": { - "name": "eventing-manager-webhook-service", - "namespace": "kyma-system", - "path": "/mutate-eventing-kyma-project-io-v1alpha2-subscription" - } - }, - "failurePolicy": "Fail", - "name": "msubscription.kb.io", - "rules": [ - { - "apiGroups": [ - "eventing.kyma-project.io" - ], - "apiVersions": [ - "v1alpha2" - ], - "operations": [ - "CREATE", - "UPDATE" - ], - "resources": [ - "subscriptions" - ] - } - ], - "sideEffects": "None" - } - ] - }, - { - "apiVersion": "admissionregistration.k8s.io/v1", - "kind": "ValidatingWebhookConfiguration", - "metadata": { - "creationTimestamp": null, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "subscription-validating-webhook-configuration" - }, - "webhooks": [ - { - "admissionReviewVersions": [ - "v1" - ], - "clientConfig": { - "service": { - "name": "eventing-manager-webhook-service", - "namespace": "kyma-system", - "path": "/validate-eventing-kyma-project-io-v1alpha2-subscription" - } - }, - "failurePolicy": "Fail", - "name": "vsubscription.kb.io", - "rules": [ - { - "apiGroups": [ - "eventing.kyma-project.io" - ], - "apiVersions": [ - "v1alpha2" - ], - "operations": [ - "CREATE", - "UPDATE" - ], - "resources": [ - "subscriptions" - ] - } - ], - "sideEffects": "None" - } - ] - } - ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.0.2", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing" - }, - { - "version": "1.2.0", - "deploymentYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-manager.yaml", - "crYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-default-cr.yaml", - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "Eventing", - "metadata": { - "labels": { - "app.kubernetes.io/name": "eventing", - "app.kubernetes.io/instance": "eventing", - "app.kubernetes.io/part-of": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager" - }, - "name": "eventing", - "namespace": "kyma-system" - }, - "spec": { - "publisher": { - "replicas": { - "min": 2, - "max": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "64Mi" - } - } - } - } - }, - "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", @@ -27762,43 +26495,35 @@ export default [ "app.kubernetes.io/part-of": "Kyma", "control-plane": "eventing-manager" }, - "name": "eventings.operator.kyma-project.io" + "name": "subscriptions.eventing.kyma-project.io" }, "spec": { - "group": "operator.kyma-project.io", + "group": "eventing.kyma-project.io", "names": { - "kind": "Eventing", - "listKind": "EventingList", - "plural": "eventings", - "singular": "eventing" + "kind": "Subscription", + "listKind": "SubscriptionList", + "plural": "subscriptions", + "singular": "subscription" }, "scope": "Namespaced", "versions": [ { "additionalPrinterColumns": [ { - "description": "State of Eventing", - "jsonPath": ".status.state", - "name": "State", - "type": "string" - }, - { - "description": "Type of Eventing backend, either NATS or EventMesh", - "jsonPath": ".spec.backend.type", - "name": "Backend", + "jsonPath": ".status.ready", + "name": "Ready", "type": "string" }, { - "description": "Age of the resource", "jsonPath": ".metadata.creationTimestamp", "name": "Age", "type": "date" } ], - "name": "v1alpha1", + "name": "v1alpha2", "schema": { "openAPIV3Schema": { - "description": "Eventing is the Schema for the eventing API.", + "description": "Subscription is the Schema for the subscriptions API.", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -27812,373 +26537,1055 @@ export default [ "type": "object" }, "spec": { - "default": { - "logging": { - "logLevel": "Info" - }, - "publisher": { - "replicas": { - "max": 2, - "min": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "256Mi" - } - } - } - }, - "description": "EventingSpec defines the desired state of Eventing.", + "description": "Defines the desired state of the Subscription.", "properties": { - "annotations": { + "config": { "additionalProperties": { "type": "string" }, - "description": "Annotations allows to add annotations to resources.", + "default": { + "maxInFlightMessages": "10" + }, + "description": "Map of configuration options that will be applied on the backend.", "type": "object" }, - "backend": { - "description": "Backend defines the active backend used by Eventing.", - "properties": { - "config": { - "default": { - "natsMaxMsgsPerTopic": 1000000, - "natsStreamMaxSize": "700Mi", - "natsStreamReplicas": 3, - "natsStreamStorageType": "File" - }, - "description": "Config defines configuration for the Eventing backend.", - "properties": { - "domain": { - "description": "Domain defines the cluster public domain used to configure the EventMesh Subscriptions\nand their corresponding ApiRules.", - "pattern": "^(?:([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*)?$", - "type": "string" - }, - "eventMeshSecret": { - "description": "EventMeshSecret defines the namespaced name of the Kubernetes Secret containing EventMesh credentials. The format of name is \"namespace/name\".", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", - "type": "string" - }, - "eventTypePrefix": { - "default": "sap.kyma.custom", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "eventTypePrefix cannot be empty", - "rule": "self!=''" - } - ] - }, - "natsMaxMsgsPerTopic": { - "default": 1000000, - "description": "NATSMaxMsgsPerTopic limits how many messages in the NATS stream to retain per subject.", - "type": "integer" - }, - "natsStreamMaxSize": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "default": "700Mi", - "description": "NATSStreamMaxSize defines the maximum storage size for stream data.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "natsStreamReplicas": { - "default": 3, - "description": "NATSStreamReplicas defines the number of replicas for the stream.", - "type": "integer" - }, - "natsStreamStorageType": { - "default": "File", - "description": "NATSStreamStorageType defines the storage type for stream data.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "storage type can only be set to File or Memory", - "rule": "self=='File' || self=='Memory'" - } - ] - } - }, - "type": "object" - }, - "type": { - "default": "NATS", - "description": "Type defines which backend to use. The value is either `EventMesh`, or `NATS`.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "backend type can only be set to NATS or EventMesh", - "rule": "self=='NATS' || self=='EventMesh' || self==''" - } - ] - } - }, - "required": [ - "type" - ], - "type": "object", - "x-kubernetes-validations": [ - { - "message": "secret cannot be empty if EventMesh backend is used", - "rule": " (self.type != 'EventMesh') || ((self.type == 'EventMesh') && (self.config.eventMeshSecret != ''))" - } - ] + "id": { + "description": "Unique identifier of the Subscription, read-only.", + "type": "string" }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels allows to add Labels to resources.", - "type": "object" + "sink": { + "description": "Kubernetes Service that should be used as a target for the events that match the Subscription.\nMust exist in the same Namespace as the Subscription.", + "type": "string" }, - "logging": { - "default": { - "logLevel": "Info" - }, - "description": "Logging defines the log level for eventing-manager.", - "properties": { - "logLevel": { - "default": "Info", - "description": "LogLevel defines the log level.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "logLevel can only be set to Debug, Info, Warn or Error", - "rule": "self=='Info' || self=='Warn' || self=='Error' || self=='Debug'" - } - ] - } - }, - "type": "object" + "source": { + "description": "Defines the origin of the event.", + "type": "string" }, - "publisher": { - "default": { - "replicas": { - "max": 2, - "min": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "256Mi" - } - } + "typeMatching": { + "default": "standard", + "description": "Defines how types should be handled.
\n- `standard`: backend-specific logic will be applied to the configured source and types.
\n- `exact`: no further processing will be applied to the configured source and types.", + "type": "string" + }, + "types": { + "description": "List of event types that will be used for subscribing on the backend.", + "items": { + "type": "string" }, - "description": "Publisher defines the configurations for eventing-publisher-proxy.", + "type": "array" + } + }, + "required": [ + "sink", + "source", + "types" + ], + "type": "object" + }, + "status": { + "description": "SubscriptionStatus defines the observed state of Subscription.", + "properties": { + "backend": { + "description": "Backend-specific status which is applicable to the active backend only.", "properties": { - "replicas": { - "default": { - "max": 2, - "min": 2 - }, - "description": "Replicas defines the scaling min/max for eventing-publisher-proxy.", - "properties": { - "max": { - "default": 2, - "description": "Max defines maximum number of replicas.", - "type": "integer" - }, - "min": { - "default": 2, - "description": "Min defines minimum number of replicas.", - "minimum": 0, - "type": "integer" - } - }, - "type": "object", - "x-kubernetes-validations": [ - { - "message": "min value must be smaller than the max value", - "rule": "self.min <= self.max" - } - ] + "apiRuleName": { + "description": "Name of the APIRule which is used by the Subscription.", + "type": "string" }, - "resources": { - "default": { - "limits": { - "cpu": "500m", - "memory": "512Mi" + "emsSubscriptionStatus": { + "description": "Status of the Subscription as reported by EventMesh.", + "properties": { + "lastFailedDelivery": { + "description": "Timestamp of the last failed delivery.", + "type": "string" }, - "requests": { - "cpu": "40m", - "memory": "256Mi" + "lastFailedDeliveryReason": { + "description": "Reason for the last failed delivery.", + "type": "string" + }, + "lastSuccessfulDelivery": { + "description": "Timestamp of the last successful delivery.", + "type": "string" + }, + "status": { + "description": "Status of the Subscription as reported by the backend.", + "type": "string" + }, + "statusReason": { + "description": "Reason for the current status.", + "type": "string" } }, - "description": "Resources defines resources for eventing-publisher-proxy.", - "properties": { - "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", - "items": { - "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", - "properties": { - "name": { - "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" + "type": "object" + }, + "emsTypes": { + "description": "List of mappings from event type to EventMesh compatible types. Used only with EventMesh as the backend.", + "items": { + "properties": { + "eventMeshType": { + "description": "Event type that is used on the EventMesh backend.", + "type": "string" }, - "type": "array", - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" + "originalType": { + "description": "Event type that was originally used to subscribe.", + "type": "string" + } }, - "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 + "required": [ + "eventMeshType", + "originalType" + ], + "type": "object" + }, + "type": "array" + }, + "emshash": { + "description": "Hash used to identify an EventMesh Subscription retrieved from the server without the WebhookAuth config.", + "format": "int64", + "type": "integer" + }, + "ev2hash": { + "description": "Checksum for the Subscription custom resource.", + "format": "int64", + "type": "integer" + }, + "eventMeshLocalHash": { + "description": "Hash used to identify an EventMesh Subscription posted to the server without the WebhookAuth config.", + "format": "int64", + "type": "integer" + }, + "externalSink": { + "description": "Webhook URL used by EventMesh to trigger subscribers.", + "type": "string" + }, + "failedActivation": { + "description": "Provides the reason if a Subscription failed activation in EventMesh.", + "type": "string" + }, + "types": { + "description": "List of event type to consumer name mappings for the NATS backend.", + "items": { + "properties": { + "consumerName": { + "description": "Name of the JetStream consumer created for the event type.", + "type": "string" }, - "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" + "originalType": { + "description": "Event type that was originally used to subscribe.", + "type": "string" + } }, - "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.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" - } + "required": [ + "originalType" + ], + "type": "object" }, - "type": "object" + "type": "array" + }, + "webhookAuthHash": { + "description": "Hash used to identify the WebhookAuth of an EventMesh Subscription existing on the server.", + "format": "int64", + "type": "integer" } }, "type": "object" + }, + "conditions": { + "description": "Current state of the Subscription.", + "items": { + "properties": { + "lastTransitionTime": { + "description": "Defines the date of the last condition status change.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "Provides more details about the condition status change.", + "type": "string" + }, + "reason": { + "description": "Defines the reason for the condition status change.", + "type": "string" + }, + "status": { + "description": "Status of the condition. The value is either `True`, `False`, or `Unknown`.", + "type": "string" + }, + "type": { + "description": "Short description of the condition.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "ready": { + "description": "Overall readiness of the Subscription.", + "type": "boolean" + }, + "types": { + "description": "List of event types after cleanup for use with the configured backend.", + "items": { + "properties": { + "cleanType": { + "description": "Event type after it was cleaned up from backend compatible characters.", + "type": "string" + }, + "originalType": { + "description": "Event type as specified in the Subscription spec.", + "type": "string" + } + }, + "required": [ + "cleanType", + "originalType" + ], + "type": "object" + }, + "type": "array" } }, - "type": "object", - "x-kubernetes-validations": [ - { - "message": "backend config cannot be deleted", - "rule": "!(oldSelf!=null && has(oldSelf.backend)) || has(self.backend)" + "required": [ + "ready", + "types" + ], + "type": "object" + } + }, + "type": "object" + } + }, + "served": true, + "storage": true, + "subresources": { + "status": {} + } + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "mutatingwebhookconfigurations" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingwebhookconfigurations" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apiextensions.k8s.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "applicationconnector.kyma-project.io" + ], + "resources": [ + "applications" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "resources": [ + "subscriptions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "resources": [ + "subscriptions/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "gateway.kyma-project.io" + ], + "resources": [ + "apirules" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "nats" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterrolebindings" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "security.istio.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "security.istio.io" + ], + "resources": [ + "peerauthentications" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "eventing-manager" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "eventing-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: State\n source: status.state\n widget: Badge\n\nbody:\n - name: Conditions\n source: status.conditions\n widget: Table\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n - source: \"'NATS unavailable: If you chose the NATS backend, you must enable the NATS module.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'NATSUnavailable'])\"\n - source: \"'No backend: If you enable the Eventing module, you must configure a backend.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'BackendNotSpecified'])\"\n - name: Events\n widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n defaultType: information\n", + "form": "- path: spec.backend.type\n name: Backend Type\n widget: FormGroup\n defaultExpanded: true\n enum:\n - NATS\n - EventMesh\n description: Choose a backend type from the dropdown.\n\n- simple: true\n widget: Alert\n severity: info\n alert: \"'If you choose the NATS backend, you must enable the NATS module.'\"\n visibility: \"spec.backend.type = 'NATS'\"\n\n- path: spec.backend.config.eventMeshSecret\n visibility: \"spec.backend.type = 'EventMesh'\"\n widget: ResourceRef\n defaultExpanded: false\n resource:\n kind: Secret\n version: v1\n toInternal: |\n (\n $values := $split($, '/');\n { 'namespace': $values[0], 'name': $values[1] }\n )\n toExternal: namespace & '/' & name\n\n- path: spec.publisher.replicas\n name: Publisher Replicas\n widget: FormGroup\n defaultExpanded: false\n children:\n - path: max\n - path: min\n", + "general": "resource:\n kind: Eventing\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: eventings\ncategory: Kyma\nname: Eventing\nscope: namespace\nfeatures:\n actions:\n disableCreate: false\n disableDelete: false\ndescription: >-\n {{[Eventing CR](https://github.com/kyma-project/eventing-manager/blob/main/config/samples/default.yaml)}}\n specifies eventing module.\n", + "list": "- name: State\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5", + "control-plane": "eventing-manager" + }, + "name": "eventings.operator.kyma-project.io", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message\n - name: spec.typeMatching\n source: spec.typeMatching\n - name: spec.source\n source: spec.source\n - name: spec.sink\n source: spec.sink\n widget: ResourceLink\n resource:\n name: '$substringBefore($substringAfter(spec.sink, \"http://\"), \".\")'\n namespace: $root.metadata.namespace\n kind: \"'Service'\"\nbody:\n - source: status.conditions\n widget: Table\n name: status.conditions\n children:\n - source: '$item.type'\n name: status.conditions.type\n - source: '$item.status'\n widget: Badge\n name: status.conditions.status\n - source: '$item.reason'\n name: status.conditions.reason\n - source: '$item.message'\n name: status.conditions.message\n - source: '$readableTimestamp($item.lastTransitionTime)'\n name: status.conditions.lastTransitionTime\n - name: spec.types\n source: spec.types\n widget: Table\n children:\n - name: Type\n search: true\n source: '$item'\n sort: false\n - widget: EventList\n filter: \"$matchEvents($$, $root.kind, $root.metadata.name)\"\n name: events\n defaultType: NORMAL\n hideInvolvedObjects: true", + "form": "- path: spec.config\n widget: KeyValuePair\n defaultExpanded: false\n- path: spec.types\n simple: true\n widget: SimpleList\n defaultExpanded: true\n children:\n - path: '[]'\n simple: true\n- simple: true\n type: string\n var: service\n name: Service\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [sink]\n- path: spec.sink\n name: spec.sink\n simple: true\n inputInfo: inputInfo.sink\n placeholder: placeholder.sink\n subscribe:\n sink: '\"http://\" & $service & \".\" & $root.metadata.namespace & \".svc.cluster.local\"'\n- path: spec.typeMatching\n simple: true\n enum:\n - standard\n - exact\n required: true\n- path: spec.source\n name: spec.source\n simple: true\n required: true\n visibility: \"spec.typeMatching = 'standard'\"\n widget: Resource\n resource:\n kind: Application\n group: applicationconnector.kyma-project.io\n version: v1alpha1", + "general": "resource:\n kind: Subscription\n group: eventing.kyma-project.io\n version: v1alpha2\nname: Subscriptions\ncategory: Configuration\nscope: namespace\ndescription: >-\n {{\"{{[Subscription](https://kyma-project.io/docs/kyma/latest/05-technical-reference/00-custom-resources/evnt-01-subscription#documentation-content)}}\"}} is used to subscribe to events.\nurlPath: subscriptions", + "list": "- name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message", + "presets": "- name: Default Type Matching\n default: true\n value:\n spec:\n typeMatching: standard", + "translations": "en:\n inputInfo.sink: Sink structure, 'http://{SERVICE}.{NAMESPACE}.svc.cluster.local'\n inputInfo.eventType: Event Type structure, 'sap.kyma.custom.{APP}.{EVENT.NAME}.{VERSION}'\n events: Events\n placeholder.eventType: Enter the event type, for example, sap.kyma.custom.test-app.order.cancelled.v1\n placeholder.sink: Enter the sink, for example, http://service.default.svc.cluster.local\n spec.filters: Filters\n spec.filter.eventType: Event Type\n spec.filter.eventSource: Event Source\n spec.filter.event.property: Property\n spec.filter.event.type: Type\n spec.filter.event.value: Value\n spec.types: Types\n spec.source: Source\n spec.typeMatching: Type Matching\n spec.sink: Sink\n spec.service: Service\n spec.sink.controlledBy: Controlled By\n status.cleanEventTypes: Event Types\n status.conditions: Conditions\n status.conditions.lastTransitionTime: Last Transition\n status.conditions.reason: Reason\n status.conditions.status: Status\n status.conditions.type: Type\n status.conditions.message: Message\n status.type: Type" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5", + "control-plane": "eventing-manager" + }, + "name": "subscriptions", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-health", + "namespace": "kyma-system" + }, + "spec": { + "ports": [ + { + "name": "http-status", + "port": 15020, + "protocol": "TCP", + "targetPort": 15020 + } + ], + "selector": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + }, + "type": "ClusterIP" + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "prometheus.io/port": "8080", + "prometheus.io/scheme": "http", + "prometheus.io/scrape": "true" + }, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-metrics", + "namespace": "kyma-system" + }, + "spec": { + "ports": [ + { + "name": "http-metrics", + "port": 80, + "protocol": "TCP", + "targetPort": 8080 + } + ], + "selector": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + }, + "type": "ClusterIP" + } + }, + { + "apiVersion": "scheduling.k8s.io/v1", + "description": "Scheduling priority of the Eventing-Manager module. Must not be blocked by unschedulable user workloads.", + "globalDefault": false, + "kind": "PriorityClass", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-priority-class" + }, + "value": 2000000 + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager", + "namespace": "kyma-system" + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + } + }, + "template": { + "metadata": { + "annotations": { + "kubectl.kubernetes.io/default-container": "manager", + "traffic.sidecar.istio.io/excludeInboundPorts": "9443" + }, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + } + }, + "spec": { + "containers": [ + { + "command": [ + "/manager" + ], + "env": [ + { + "name": "NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" } - ] + } }, - "status": { - "description": "EventingStatus defines the observed state of Eventing.", - "properties": { - "activeBackend": { - "type": "string" - }, - "conditions": { - "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", - "properties": { - "lastTransitionTime": { - "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "format": "date-time", - "type": "string" - }, - "message": { - "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", - "maxLength": 32768, - "type": "string" - }, - "observedGeneration": { - "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "reason": { - "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", - "type": "string" - }, - "status": { - "description": "status of the condition, one of True, False, Unknown.", - "enum": [ - "True", - "False", - "Unknown" - ], - "type": "string" - }, - "type": { - "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", - "type": "string" - } - }, - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "publisherService": { - "type": "string" - }, - "specHash": { - "format": "int64", - "type": "integer" - }, - "state": { - "description": "Defines the overall state of the Eventing custom resource.
\n- `Ready` when all the resources managed by the Eventing manager are deployed successfully and the Eventing backend is connected.
\n- `Warning` if there is a user input misconfiguration. The following are examples of user input misconfigurations:
\n  - There is no backend configured.
\n  - The backend is configured to NATS but there is no NATS module installed.
\n  - The backend is configured to EventMesh but there is no valid EventMesh Secret configured.
\n- `Processing` if the resources managed by the Eventing manager are being created or updated.
\n- `Error` if an error occurred while reconciling the Eventing custom resource.", - "type": "string" - } - }, - "required": [ - "activeBackend", - "specHash", - "state" - ], - "type": "object" + { + "name": "EVENTING_CR_NAME", + "value": "eventing" + }, + { + "name": "EVENTING_CR_NAMESPACE", + "value": "kyma-system" + }, + { + "name": "NATS_URL", + "value": "eventing-nats.kyma-system.svc.cluster.local" + }, + { + "name": "PUBLISHER_REQUESTS_CPU", + "value": "10m" + }, + { + "name": "PUBLISHER_REQUESTS_MEMORY", + "value": "64Mi" + }, + { + "name": "PUBLISHER_LIMITS_CPU", + "value": "100m" + }, + { + "name": "PUBLISHER_LIMITS_MEMORY", + "value": "128Mi" + }, + { + "name": "PUBLISHER_IMAGE", + "value": "europe-docker.pkg.dev/kyma-project/prod/eventing-publisher-proxy:1.0.1" + }, + { + "name": "PUBLISHER_IMAGE_PULL_POLICY", + "value": "IfNotPresent" + }, + { + "name": "PUBLISHER_REPLICAS", + "value": "1" + }, + { + "name": "PUBLISHER_REQUEST_TIMEOUT", + "value": "10s" + }, + { + "name": "DEFAULT_MAX_IN_FLIGHT_MESSAGES", + "value": "10" + }, + { + "name": "DEFAULT_DISPATCHER_RETRY_PERIOD", + "value": "5m" + }, + { + "name": "DEFAULT_DISPATCHER_MAX_RETRIES", + "value": "10" + }, + { + "name": "APP_LOG_FORMAT", + "value": "json" + }, + { + "name": "APP_LOG_LEVEL", + "value": "info" + }, + { + "name": "JS_STREAM_NAME", + "value": "sap" + }, + { + "name": "JS_STREAM_SUBJECT_PREFIX", + "value": "kyma" + }, + { + "name": "JS_STREAM_STORAGE_TYPE", + "value": "file" + }, + { + "name": "JS_STREAM_REPLICAS", + "value": "1" + }, + { + "name": "JS_STREAM_DISCARD_POLICY", + "value": "new" + }, + { + "name": "JS_STREAM_RETENTION_POLICY", + "value": "interest" + }, + { + "name": "JS_CONSUMER_DELIVER_POLICY", + "value": "new" + }, + { + "name": "JS_STREAM_MAX_MSGS", + "value": "-1" + }, + { + "name": "JS_STREAM_MAX_BYTES", + "value": "700Mi" + }, + { + "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAME", + "value": "eventing-webhook-auth" + }, + { + "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAMESPACE", + "value": "kyma-system" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", + "imagePullPolicy": "Always", + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": 8081 + }, + "initialDelaySeconds": 15, + "periodSeconds": 20 + }, + "name": "manager", + "readinessProbe": { + "httpGet": { + "path": "/readyz", + "port": 8081 + }, + "initialDelaySeconds": 5, + "periodSeconds": 10 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "10m", + "memory": "128Mi" } }, - "type": "object" + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + } + } + } + ], + "priorityClassName": "eventing-manager-priority-class", + "securityContext": { + "fsGroup": 10001, + "runAsGroup": 10001, + "runAsNonRoot": true, + "runAsUser": 10001, + "seccompProfile": { + "type": "RuntimeDefault" } }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } + "serviceAccountName": "eventing-manager", + "terminationGracePeriodSeconds": 10 } - ] + } + } + } + ], + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing", + "channels": [ + "fast", + "regular" + ], + "documentation": "https://kyma-project.io/#/eventing-manager/user/README", + "repository": "https://github.com/kyma-project/eventing-manager.git" + } + ] + }, + { + "name": "application-connector", + "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", + "repository": "https://github.com/kyma-project/application-connector-manager.git", + "manageable": true, + "managedResources": [ + "/apis/operator.kyma-project.io/v1alpha1/applicationconnectors" + ], + "latestGithubRelease": { + "repository": "kyma-project/application-connector-manager", + "deploymentYaml": "application-connector-manager.yaml", + "crYaml": "default_application_connector_cr.yaml" + }, + "versions": [ + { + "version": "1.1.3", + "channels": [ + "experimental" + ], + "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", + "repository": "https://github.com/kyma-project/application-connector-manager.git", + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "resources": [ + { + "apiVersion": "v1", + "kind": "Namespace", + "metadata": { + "labels": { + "app.kubernetes.io/component": "manager", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "system", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "namespace", + "app.kubernetes.io/part-of": "application-connector-manager", + "control-plane": "controller-manager" + }, + "name": "kyma-system" } }, { @@ -28186,273 +27593,177 @@ export default [ "kind": "CustomResourceDefinition", "metadata": { "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "controller-gen.kubebuilder.io/version": "v0.10.0" }, - "name": "subscriptions.eventing.kyma-project.io" + "creationTimestamp": null, + "name": "applicationconnectors.operator.kyma-project.io" }, "spec": { - "group": "eventing.kyma-project.io", + "group": "operator.kyma-project.io", "names": { - "kind": "Subscription", - "listKind": "SubscriptionList", - "plural": "subscriptions", - "singular": "subscription" + "kind": "ApplicationConnector", + "listKind": "ApplicationConnectorList", + "plural": "applicationconnectors", + "singular": "applicationconnector" }, "scope": "Namespaced", "versions": [ { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.ready", - "name": "Ready", - "type": "string" - }, - { - "jsonPath": ".metadata.creationTimestamp", - "name": "Age", - "type": "date" - } - ], - "name": "v1alpha2", + "name": "v1alpha1", "schema": { "openAPIV3Schema": { - "description": "Subscription is the Schema for the subscriptions API.", + "description": "ApplicationConnector is the Schema for the applicationconnectors API", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "type": "object" }, "spec": { - "description": "Defines the desired state of the Subscription.", "properties": { - "config": { - "additionalProperties": { - "type": "string" - }, + "appConnValidator": { "default": { - "maxInFlightMessages": "10" - }, - "description": "Map of configuration options that will be applied on the backend.", - "type": "object" - }, - "id": { - "description": "Unique identifier of the Subscription, read-only.", - "type": "string" - }, - "sink": { - "description": "Kubernetes Service that should be used as a target for the events that match the Subscription.\nMust exist in the same Namespace as the Subscription.", - "type": "string" - }, - "source": { - "description": "Defines the origin of the event.", - "type": "string" - }, - "typeMatching": { - "default": "standard", - "description": "Defines how types should be handled.
\n- `standard`: backend-specific logic will be applied to the configured source and types.
\n- `exact`: no further processing will be applied to the configured source and types.", - "type": "string" - }, - "types": { - "description": "List of event types that will be used for subscribing on the backend.", - "items": { - "type": "string" + "logFormat": "json", + "logLevel": "info" }, - "type": "array" - } - }, - "required": [ - "sink", - "source", - "types" - ], - "type": "object" - }, - "status": { - "description": "SubscriptionStatus defines the observed state of Subscription.", - "properties": { - "backend": { - "description": "Backend-specific status which is applicable to the active backend only.", "properties": { - "apiRuleName": { - "description": "Name of the APIRule which is used by the Subscription.", - "type": "string" - }, - "emsSubscriptionStatus": { - "description": "Status of the Subscription as reported by EventMesh.", - "properties": { - "lastFailedDelivery": { - "description": "Timestamp of the last failed delivery.", - "type": "string" - }, - "lastFailedDeliveryReason": { - "description": "Reason for the last failed delivery.", - "type": "string" - }, - "lastSuccessfulDelivery": { - "description": "Timestamp of the last successful delivery.", - "type": "string" - }, - "status": { - "description": "Status of the Subscription as reported by the backend.", - "type": "string" - }, - "statusReason": { - "description": "Reason for the current status.", - "type": "string" - } - }, - "type": "object" - }, - "emsTypes": { - "description": "List of mappings from event type to EventMesh compatible types. Used only with EventMesh as the backend.", - "items": { - "properties": { - "eventMeshType": { - "description": "Event type that is used on the EventMesh backend.", - "type": "string" - }, - "originalType": { - "description": "Event type that was originally used to subscribe.", - "type": "string" - } - }, - "required": [ - "eventMeshType", - "originalType" - ], - "type": "object" - }, - "type": "array" - }, - "emshash": { - "description": "Hash used to identify an EventMesh Subscription retrieved from the server without the WebhookAuth config.", - "format": "int64", - "type": "integer" - }, - "ev2hash": { - "description": "Checksum for the Subscription custom resource.", - "format": "int64", - "type": "integer" - }, - "eventMeshLocalHash": { - "description": "Hash used to identify an EventMesh Subscription posted to the server without the WebhookAuth config.", - "format": "int64", - "type": "integer" - }, - "externalSink": { - "description": "Webhook URL used by EventMesh to trigger subscribers.", + "logFormat": { + "enum": [ + "json", + "text" + ], "type": "string" }, - "failedActivation": { - "description": "Provides the reason if a Subscription failed activation in EventMesh.", + "logLevel": { + "enum": [ + "debug", + "panic", + "fatal", + "error", + "warn", + "info", + "debug" + ], + "type": "string" + } + }, + "required": [ + "logFormat", + "logLevel" + ], + "type": "object" + }, + "appGateway": { + "default": { + "logLevel": "info", + "proxyTimeout": "10s", + "requestTimeout": "10s" + }, + "properties": { + "logLevel": { + "enum": [ + "debug", + "panic", + "fatal", + "error", + "warn", + "info", + "debug" + ], "type": "string" }, - "types": { - "description": "List of event type to consumer name mappings for the NATS backend.", - "items": { - "properties": { - "consumerName": { - "description": "Name of the JetStream consumer created for the event type.", - "type": "string" - }, - "originalType": { - "description": "Event type that was originally used to subscribe.", - "type": "string" - } - }, - "required": [ - "originalType" - ], - "type": "object" - }, - "type": "array" + "proxyTimeout": { + "type": "string" }, - "webhookAuthHash": { - "description": "Hash used to identify the WebhookAuth of an EventMesh Subscription existing on the server.", - "format": "int64", - "type": "integer" + "requestTimeout": { + "type": "string" } }, + "required": [ + "logLevel", + "proxyTimeout", + "requestTimeout" + ], "type": "object" }, + "domainName": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "properties": { "conditions": { - "description": "Current state of the Subscription.", "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { - "description": "Defines the date of the last condition status change.", + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "Provides more details about the condition status change.", + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "maxLength": 32768, "type": "string" }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, "reason": { - "description": "Defines the reason for the condition status change.", + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string" }, "status": { - "description": "Status of the condition. The value is either `True`, `False`, or `Unknown`.", + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], "type": "string" }, "type": { - "description": "Short description of the condition.", + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string" } }, "required": [ - "status" + "lastTransitionTime", + "message", + "reason", + "status", + "type" ], "type": "object" }, "type": "array" }, - "ready": { - "description": "Overall readiness of the Subscription.", - "type": "boolean" + "served": { + "type": "string" }, - "types": { - "description": "List of event types after cleanup for use with the configured backend.", - "items": { - "properties": { - "cleanType": { - "description": "Event type after it was cleaned up from backend compatible characters.", - "type": "string" - }, - "originalType": { - "description": "Event type as specified in the Subscription spec.", - "type": "string" - } - }, - "required": [ - "cleanType", - "originalType" - ], - "type": "object" - }, - "type": "array" + "state": { + "type": "string" } }, "required": [ - "ready", - "types" + "served", + "state" ], "type": "object" } @@ -28474,32 +27785,31 @@ export default [ "kind": "ServiceAccount", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "controller-manager-sa", "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "application-connector-manager" }, - "name": "eventing-manager", + "name": "application-connector-controller-manager", "namespace": "kyma-system" } }, { "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", + "kind": "Role", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "leader-election-role", + "app.kubernetes.io/name": "role", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kubernets.io/managed-by": "kustomize" }, - "name": "eventing-manager" + "name": "application-connector-leader-election-role", + "namespace": "kyma-system" }, "rules": [ { @@ -28510,13 +27820,30 @@ export default [ "configmaps" ], "verbs": [ - "create", - "delete", "get", "list", + "watch", + "create", + "update", "patch", + "delete" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "watch", + "create", "update", - "watch" + "patch", + "delete" ] }, { @@ -28530,20 +27857,29 @@ export default [ "create", "patch" ] - }, + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": null, + "name": "application-connector-manager-role" + }, + "rules": [ { "apiGroups": [ "" ], "resources": [ - "secrets" + "configmaps" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] @@ -28553,16 +27889,14 @@ export default [ "" ], "resources": [ - "serviceaccounts" + "limitranges" ], "verbs": [ "create", "delete", "get", "list", - "patch", - "update", - "watch" + "update" ] }, { @@ -28570,71 +27904,83 @@ export default [ "" ], "resources": [ - "services" + "namespaces" ], "verbs": [ "create", - "delete", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ "get", - "list", - "patch", - "update", - "watch" + "list" ] }, { "apiGroups": [ - "admissionregistration.k8s.io" + "" ], "resources": [ - "mutatingwebhookconfigurations" + "persistentvolumes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" ], "verbs": [ - "create", - "delete", "get", "list", - "patch", - "update", - "watch" + "patch" ] }, { "apiGroups": [ - "admissionregistration.k8s.io" + "" + ], + "resourceNames": [ + "cluster-client-certificates", + "compass-agent-configuration" ], "resources": [ - "validatingwebhookconfigurations" + "secrets" ], "verbs": [ - "create", "delete", - "get", - "list", - "patch", - "update", - "watch" + "get" ] }, { "apiGroups": [ - "apiextensions.k8s.io" + "" ], "resources": [ - "customresourcedefinitions" + "serviceaccounts" ], "verbs": [ - "get", - "list", - "watch" + "*" ] }, { "apiGroups": [ - "applicationconnector.kyma-project.io" + "" ], "resources": [ - "applications" + "services" ], "verbs": [ "create", @@ -28648,27 +27994,26 @@ export default [ }, { "apiGroups": [ - "apps" + "*" ], "resources": [ - "deployments" + "secrets" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] }, { "apiGroups": [ - "autoscaling" + "apiextensions.k8s.io" ], "resources": [ - "horizontalpodautoscalers" + "customresourcedefinitions" ], "verbs": [ "create", @@ -28676,63 +28021,61 @@ export default [ "get", "list", "patch", - "update", "watch" ] }, { "apiGroups": [ - "eventing.kyma-project.io" + "applicationconnector.kyma-project.io" ], "resources": [ - "subscriptions" + "applications" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] }, { "apiGroups": [ - "eventing.kyma-project.io" + "apps" ], "resources": [ - "subscriptions/status" + "deployments" ], "verbs": [ + "create", + "delete", "get", + "list", "patch", - "update" + "update", + "watch" ] }, { "apiGroups": [ - "gateway.kyma-project.io" + "apps" ], "resources": [ - "apirules" + "replicasets" ], "verbs": [ - "create", "delete", - "get", "list", - "patch", - "update", "watch" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "autoscaling" ], "resources": [ - "eventings" + "horizontalpodautoscalers" ], "verbs": [ "create", @@ -28746,47 +28089,55 @@ export default [ }, { "apiGroups": [ - "operator.kyma-project.io" + "compass.kyma-project.io" ], "resources": [ - "eventings/finalizers" + "compassconnections" ], "verbs": [ - "update" + "create", + "delete", + "get", + "list", + "update", + "watch" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "metrics.k8s.io" ], "resources": [ - "eventings/status" + "nodes" ], "verbs": [ "get", - "patch", - "update" + "list" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "networking.istio.io" ], "resources": [ - "nats" + "gateways" ], "verbs": [ + "create", + "delete", "get", "list", + "patch", + "update", "watch" ] }, { "apiGroups": [ - "rbac.authorization.k8s.io" + "networking.istio.io" ], "resources": [ - "clusterrolebindings" + "virtualservices" ], "verbs": [ "create", @@ -28800,10 +28151,10 @@ export default [ }, { "apiGroups": [ - "rbac.authorization.k8s.io" + "operator.kyma-project.io" ], "resources": [ - "clusterroles" + "applicationconnectors" ], "verbs": [ "create", @@ -28817,373 +28168,209 @@ export default [ }, { "apiGroups": [ - "security.istio.io" + "operator.kyma-project.io" ], "resources": [ - "customresourcedefinitions" + "applicationconnectors/finalizers" ], "verbs": [ - "get", - "list", - "watch" + "update" ] }, { "apiGroups": [ - "security.istio.io" + "operator.kyma-project.io" ], "resources": [ - "peerauthentications" + "applicationconnectors/status" ], "verbs": [ - "create", - "delete", "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "eventing-manager" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "eventing-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n - name: State\n source: status.state\n widget: Badge\n\nbody:\n - name: Conditions\n source: status.conditions\n widget: Table\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n - source: \"'NATS unavailable: If you chose the NATS backend, you must enable the NATS module.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'NATSUnavailable'])\"\n - source: \"'No backend: If you enable the Eventing module, you must configure a backend.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'BackendNotSpecified'])\"\n - name: Events\n widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n defaultType: information\n", - "form": "- path: spec.backend.type\n name: Backend Type\n widget: FormGroup\n defaultExpanded: true\n enum:\n - NATS\n - EventMesh\n description: Choose a backend type from the dropdown.\n\n- simple: true\n widget: Alert\n severity: info\n alert: \"'If you choose the NATS backend, you must enable the NATS module.'\"\n visibility: \"spec.backend.type = 'NATS'\"\n\n- path: spec.backend.config.eventMeshSecret\n visibility: \"spec.backend.type = 'EventMesh'\"\n widget: ResourceRef\n defaultExpanded: false\n resource:\n kind: Secret\n version: v1\n toInternal: |\n (\n $values := $split($, '/');\n { 'namespace': $values[0], 'name': $values[1] }\n )\n toExternal: namespace & '/' & name\n\n- path: spec.publisher.replicas\n name: Publisher Replicas\n widget: FormGroup\n defaultExpanded: false\n children:\n - path: max\n - path: min\n", - "general": "resource:\n kind: Eventing\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: eventings\ncategory: Kyma\nname: Eventing\nscope: namespace\nfeatures:\n actions:\n disableCreate: false\n disableDelete: false\ndescription: >-\n {{[Eventing CR](https://github.com/kyma-project/eventing-manager/blob/main/config/samples/default.yaml)}}\n specifies eventing module.\n", - "list": "- name: State\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "control-plane": "eventing-manager" - }, - "name": "eventings.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n - name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message\n - name: spec.typeMatching\n source: spec.typeMatching\n - name: spec.source\n source: spec.source\n - name: spec.sink\n source: spec.sink\n widget: ResourceLink\n resource:\n name: '$substringBefore($substringAfter(spec.sink, \"http://\"), \".\")'\n namespace: $root.metadata.namespace\n kind: \"'Service'\"\nbody:\n - source: status.conditions\n widget: Table\n name: status.conditions\n children:\n - source: '$item.type'\n name: status.conditions.type\n - source: '$item.status'\n widget: Badge\n name: status.conditions.status\n - source: '$item.reason'\n name: status.conditions.reason\n - source: '$item.message'\n name: status.conditions.message\n - source: '$readableTimestamp($item.lastTransitionTime)'\n name: status.conditions.lastTransitionTime\n - name: spec.types\n source: spec.types\n widget: Table\n children:\n - name: Type\n search: true\n source: '$item'\n sort: false\n - widget: EventList\n filter: \"$matchEvents($$, $root.kind, $root.metadata.name)\"\n name: events\n defaultType: NORMAL\n hideInvolvedObjects: true", - "form": "- path: spec.config\n widget: KeyValuePair\n defaultExpanded: false\n- path: spec.types\n simple: true\n widget: SimpleList\n defaultExpanded: true\n children:\n - path: '[]'\n simple: true\n- simple: true\n type: string\n var: service\n name: Service\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [sink]\n- path: spec.sink\n name: spec.sink\n simple: true\n inputInfo: inputInfo.sink\n placeholder: placeholder.sink\n subscribe:\n sink: '\"http://\" & $service & \".\" & $root.metadata.namespace & \".svc.cluster.local\"'\n- path: spec.typeMatching\n simple: true\n enum:\n - standard\n - exact\n required: true\n- path: spec.source\n name: spec.source\n simple: true\n required: true\n visibility: \"spec.typeMatching = 'standard'\"\n widget: Resource\n resource:\n kind: Application\n group: applicationconnector.kyma-project.io\n version: v1alpha1", - "general": "resource:\n kind: Subscription\n group: eventing.kyma-project.io\n version: v1alpha2\nname: Subscriptions\ncategory: Configuration\nscope: namespace\ndescription: >-\n {{\"{{[Subscription](https://kyma-project.io/docs/kyma/latest/05-technical-reference/00-custom-resources/evnt-01-subscription#documentation-content)}}\"}} is used to subscribe to events.\nurlPath: subscriptions", - "list": "- name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message", - "presets": "- name: Default Type Matching\n default: true\n value:\n spec:\n typeMatching: standard", - "translations": "en:\n inputInfo.sink: Sink structure, 'http://{SERVICE}.{NAMESPACE}.svc.cluster.local'\n inputInfo.eventType: Event Type structure, 'sap.kyma.custom.{APP}.{EVENT.NAME}.{VERSION}'\n events: Events\n placeholder.eventType: Enter the event type, for example, sap.kyma.custom.test-app.order.cancelled.v1\n placeholder.sink: Enter the sink, for example, http://service.default.svc.cluster.local\n spec.filters: Filters\n spec.filter.eventType: Event Type\n spec.filter.eventSource: Event Source\n spec.filter.event.property: Property\n spec.filter.event.type: Type\n spec.filter.event.value: Value\n spec.types: Types\n spec.source: Source\n spec.typeMatching: Type Matching\n spec.sink: Sink\n spec.service: Service\n spec.sink.controlledBy: Controlled By\n status.cleanEventTypes: Event Types\n status.conditions: Conditions\n status.conditions.lastTransitionTime: Last Transition\n status.conditions.reason: Reason\n status.conditions.status: Status\n status.conditions.type: Type\n status.conditions.message: Message\n status.type: Type" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "control-plane": "eventing-manager" - }, - "name": "subscriptions", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager-health", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-status", - "port": 15020, - "protocol": "TCP", - "targetPort": 15020 - } - ], - "selector": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - }, - "type": "ClusterIP" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "prometheus.io/port": "8080", - "prometheus.io/scheme": "http", - "prometheus.io/scrape": "true" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "patch", + "update" + ] }, - "name": "eventing-manager-metrics", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-metrics", - "port": 80, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterrolebindings", + "clusterroles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "type": "ClusterIP" - } - }, - { - "apiVersion": "scheduling.k8s.io/v1", - "description": "Scheduling priority of the Eventing-Manager module. Must not be blocked by unschedulable user workloads.", - "globalDefault": false, - "kind": "PriorityClass", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "name": "eventing-manager-priority-class" - }, - "value": 2000000 + { + "apiGroups": [ + "scheduling.k8s.io" + ], + "resources": [ + "priorityclasses" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] }, { - "apiVersion": "apps/v1", - "kind": "Deployment", + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager", - "namespace": "kyma-system" - }, - "spec": { - "replicas": 1, - "selector": { - "matchLabels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - } - }, - "template": { - "metadata": { - "annotations": { - "kubectl.kubernetes.io/default-container": "manager", - "traffic.sidecar.istio.io/excludeInboundPorts": "9443" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - } - }, - "spec": { - "containers": [ - { - "command": [ - "/manager" - ], - "env": [ - { - "name": "NAMESPACE", - "valueFrom": { - "fieldRef": { - "fieldPath": "metadata.namespace" - } - } - }, - { - "name": "EVENTING_CR_NAME", - "value": "eventing" - }, - { - "name": "EVENTING_CR_NAMESPACE", - "value": "kyma-system" - }, - { - "name": "NATS_URL", - "value": "eventing-nats.kyma-system.svc.cluster.local" - }, - { - "name": "PUBLISHER_REQUESTS_CPU", - "value": "10m" - }, - { - "name": "PUBLISHER_REQUESTS_MEMORY", - "value": "64Mi" - }, - { - "name": "PUBLISHER_LIMITS_CPU", - "value": "100m" - }, - { - "name": "PUBLISHER_LIMITS_MEMORY", - "value": "128Mi" - }, - { - "name": "PUBLISHER_IMAGE", - "value": "europe-docker.pkg.dev/kyma-project/prod/eventing-publisher-proxy:1.0.1" - }, - { - "name": "PUBLISHER_IMAGE_PULL_POLICY", - "value": "IfNotPresent" - }, - { - "name": "PUBLISHER_REPLICAS", - "value": "1" - }, - { - "name": "PUBLISHER_REQUEST_TIMEOUT", - "value": "10s" - }, - { - "name": "DEFAULT_MAX_IN_FLIGHT_MESSAGES", - "value": "10" - }, - { - "name": "DEFAULT_DISPATCHER_RETRY_PERIOD", - "value": "5m" - }, - { - "name": "DEFAULT_DISPATCHER_MAX_RETRIES", - "value": "10" - }, - { - "name": "APP_LOG_FORMAT", - "value": "json" - }, - { - "name": "APP_LOG_LEVEL", - "value": "info" - }, - { - "name": "JS_STREAM_NAME", - "value": "sap" - }, - { - "name": "JS_STREAM_SUBJECT_PREFIX", - "value": "kyma" - }, - { - "name": "JS_STREAM_STORAGE_TYPE", - "value": "file" - }, - { - "name": "JS_STREAM_REPLICAS", - "value": "1" - }, - { - "name": "JS_STREAM_DISCARD_POLICY", - "value": "new" - }, - { - "name": "JS_STREAM_RETENTION_POLICY", - "value": "interest" - }, - { - "name": "JS_CONSUMER_DELIVER_POLICY", - "value": "new" - }, - { - "name": "JS_STREAM_MAX_MSGS", - "value": "-1" - }, - { - "name": "JS_STREAM_MAX_BYTES", - "value": "700Mi" - }, - { - "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAME", - "value": "eventing-webhook-auth" - }, - { - "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAMESPACE", - "value": "kyma-system" - } + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "leader-election-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "rolebinding", + "app.kubernetes.io/part-of": "application-connector-manager" + }, + "name": "application-connector-leader-election-rolebinding", + "namespace": "kyma-system" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "application-connector-leader-election-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "manager-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "application-connector-manager" + }, + "name": "application-connector-manager-rolebinding" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "application-connector-manager-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\nbody:\n - name: Configuration\n widget: Panel\n children:\n - name: Domain name\n source: spec.domainName\n placeholder: Detected automatically\n - widget: Columns\n children:\n - name: Application Connector Validator\n widget: Panel\n children: \n - source: spec.appConnValidator.logLevel\n name: Validator log level\n - source: spec.appConnValidator.logFormat\n name: Validator log format\n - name: Application Connector Gateway\n widget: Panel\n children:\n - source: spec.appGateway.proxyTimeout\n name: Proxy timeout duration\n - source: spec.appGateway.requestTimeout\n name: Request timeout duration\n - source: spec.appGateway.logLevel\n name: Gateway log level\n\n - source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n\n - widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n name: events\n defaultType: information\n", + "form": "- path: spec.domainName\n name: Domain name\n\n- path: spec.appConnValidator\n widget: FormGroup\n name: Application Connector Validator Configuration\n children:\n - widget: KeyValuePair\n path: \n keyEnum: ['logLevel', 'logFormat']\n\n- path: spec.appGateway\n widget: FormGroup\n name: Application Connector Gateway Configuration\n children:\n - widget: KeyValuePair\n path: requests\n keyEnum: ['proxyTimeout', 'requestTimeout','logLevel']\n\n", + "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector CR](https://github.com/kyma-project/application-connector-manager/blob/main/config/samples/operator_v1alpha1_applicationconnector.yaml)}}\n configures application connector installation.\n", + "list": "- name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/name": "applicationconnectors.operator.kyma-project.io", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5" + }, + "name": "application-connector-applicationconnectors.operator.kyma-project.io", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "scheduling.k8s.io/v1", + "description": "Scheduling priority of application-connector-manager component. Must not be blocked by unschedulable user workloads.", + "globalDefault": false, + "kind": "PriorityClass", + "metadata": { + "name": "application-connector-priority-class" + }, + "value": 2100000 + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app.kubernetes.io/component": "manager", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "controller-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "deployment", + "app.kubernetes.io/part-of": "application-connector-manager", + "control-plane": "controller-manager" + }, + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "control-plane": "controller-manager" + } + }, + "template": { + "metadata": { + "annotations": { + "kubectl.kubernetes.io/default-container": "manager" + }, + "labels": { + "control-plane": "controller-manager" + } + }, + "spec": { + "containers": [ + { + "args": [ + "--leader-elect" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", - "imagePullPolicy": "Always", + "command": [ + "/manager" + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -29221,75 +28408,48 @@ export default [ } } ], - "priorityClassName": "eventing-manager-priority-class", + "priorityClassName": "application-connector-priority-class", "securityContext": { - "fsGroup": 10001, - "runAsGroup": 10001, - "runAsNonRoot": true, - "runAsUser": 10001, - "seccompProfile": { - "type": "RuntimeDefault" - } + "runAsNonRoot": true }, - "serviceAccountName": "eventing-manager", + "serviceAccountName": "application-connector-controller-manager", "terminationGracePeriodSeconds": 10 } } } } ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "ApplicationConnector", + "metadata": { + "namespace": "kyma-system", + "labels": { + "app.kubernetes.io/name": "applicationconnector", + "app.kubernetes.io/instance": "applicationconnector-sample", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kuberentes.io/managed-by": "kustomize", + "app.kubernetes.io/created-by": "application-connector-manager" + }, + "name": "applicationconnector-sample" + }, + "spec": {} + }, + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/default_application_connector_cr.yaml" + }, + { + "version": "1.1.5", "channels": [ "fast", "regular" ], - "documentation": "https://kyma-project.io/#/eventing-manager/user/README", - "repository": "https://github.com/kyma-project/eventing-manager.git" - } - ] - }, - { - "name": "application-connector", - "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", - "repository": "https://github.com/kyma-project/application-connector-manager.git", - "manageable": true, - "managedResources": [ - "/apis/operator.kyma-project.io/v1alpha1/applicationconnectors" - ], - "latestGithubRelease": { - "repository": "kyma-project/application-connector-manager", - "deploymentYaml": "application-connector-manager.yaml", - "crYaml": "default_application_connector_cr.yaml" - }, - "versions": [ - { - "version": "1.1.3", - "channels": [ - "experimental" - ], "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", "repository": "https://github.com/kyma-project/application-connector-manager.git", "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", "resources": [ - { - "apiVersion": "v1", - "kind": "Namespace", - "metadata": { - "labels": { - "app.kubernetes.io/component": "manager", - "app.kubernetes.io/created-by": "application-connector-manager", - "app.kubernetes.io/instance": "system", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "namespace", - "app.kubernetes.io/part-of": "application-connector-manager", - "control-plane": "controller-manager" - }, - "name": "kyma-system" - } - }, { "apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", @@ -29404,7 +28564,7 @@ export default [ "properties": { "conditions": { "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", @@ -30007,7 +29167,7 @@ export default [ "data": { "details": "header:\n - name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\nbody:\n - name: Configuration\n widget: Panel\n children:\n - name: Domain name\n source: spec.domainName\n placeholder: Detected automatically\n - widget: Columns\n children:\n - name: Application Connector Validator\n widget: Panel\n children: \n - source: spec.appConnValidator.logLevel\n name: Validator log level\n - source: spec.appConnValidator.logFormat\n name: Validator log format\n - name: Application Connector Gateway\n widget: Panel\n children:\n - source: spec.appGateway.proxyTimeout\n name: Proxy timeout duration\n - source: spec.appGateway.requestTimeout\n name: Request timeout duration\n - source: spec.appGateway.logLevel\n name: Gateway log level\n\n - source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n\n - widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n name: events\n defaultType: information\n", "form": "- path: spec.domainName\n name: Domain name\n\n- path: spec.appConnValidator\n widget: FormGroup\n name: Application Connector Validator Configuration\n children:\n - widget: KeyValuePair\n path: \n keyEnum: ['logLevel', 'logFormat']\n\n- path: spec.appGateway\n widget: FormGroup\n name: Application Connector Gateway Configuration\n children:\n - widget: KeyValuePair\n path: requests\n keyEnum: ['proxyTimeout', 'requestTimeout','logLevel']\n\n", - "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector CR](https://github.com/kyma-project/application-connector-manager/blob/main/config/samples/operator_v1alpha1_applicationconnector.yaml)}}\n configures application connector installation.\n", + "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector custom resource](https://kyma-project.io/#/application-connector-manager/user/resources/06-30-application-connector)}}\n configures the Application Connector module.\n", "list": "- name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" }, "kind": "ConfigMap", @@ -30072,7 +29232,7 @@ export default [ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -30138,19 +29298,29 @@ export default [ "spec": {} }, "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", - "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/application-connector-manager.yaml", - "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/default_application_connector_cr.yaml" + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/default_application_connector_cr.yaml" }, { - "version": "1.1.5", - "channels": [ - "fast", - "regular" - ], - "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", - "repository": "https://github.com/kyma-project/application-connector-manager.git", - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", + "version": "1.1.6", + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.6/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.6/default_application_connector_cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "ApplicationConnector", + "metadata": { + "namespace": "kyma-system", + "labels": { + "app.kubernetes.io/name": "applicationconnector", + "app.kubernetes.io/instance": "applicationconnector-sample", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kuberentes.io/managed-by": "kustomize", + "app.kubernetes.io/created-by": "application-connector-manager" + }, + "name": "applicationconnector-sample" + }, + "spec": {} + }, "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", @@ -30266,7 +29436,7 @@ export default [ "properties": { "conditions": { "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", @@ -30934,7 +30104,7 @@ export default [ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.6", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -30983,25 +30153,9 @@ export default [ } } ], - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "ApplicationConnector", - "metadata": { - "namespace": "kyma-system", - "labels": { - "app.kubernetes.io/name": "applicationconnector", - "app.kubernetes.io/instance": "applicationconnector-sample", - "app.kubernetes.io/part-of": "application-connector-manager", - "app.kuberentes.io/managed-by": "kustomize", - "app.kubernetes.io/created-by": "application-connector-manager" - }, - "name": "applicationconnector-sample" - }, - "spec": {} - }, - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", - "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/application-connector-manager.yaml", - "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/default_application_connector_cr.yaml" + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.6", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample" } ] }, diff --git a/model.json b/model.json index b2eb1b2..8922bed 100644 --- a/model.json +++ b/model.json @@ -7257,14 +7257,19 @@ }, "versions": [ { - "version": "2.4.2", - "channels": [ - "regular" - ], - "documentation": "https://kyma-project.io/#/api-gateway/user/README", - "repository": "https://github.com/kyma-project/api-gateway.git", - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "version": "2.5.0", + "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/api-gateway-manager.yaml", + "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/apigateway-default-cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "APIGateway", + "metadata": { + "name": "default" + }, + "spec": { + "enableKymaGateway": true + } + }, "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", @@ -7278,7 +7283,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "apigateways.operator.kyma-project.io" @@ -7431,7 +7436,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "apirules.gateway.kyma-project.io" @@ -7877,17 +7882,28 @@ }, "gateway": { "description": "Specifies the Istio Gateway to be used.", - "pattern": "^[0-9a-z-_]+(\\/[0-9a-z-_]+|(\\.[0-9a-z-_]+)*)$", - "type": "string" + "maxLength": 127, + "type": "string", + "x-kubernetes-validations": [ + { + "message": "Gateway is not valid", + "rule": "self.matches('^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?/([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)$')" + } + ] }, "hosts": { "description": "Specifies the URLs of the exposed service.", "items": { "description": "Host is the URL of the exposed service.", - "maxLength": 256, + "maxLength": 255, "minLength": 3, - "pattern": "^([a-zA-Z0-9][a-zA-Z0-9-_]*\\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$", - "type": "string" + "type": "string", + "x-kubernetes-validations": [ + { + "message": "Host is not Fully Qualified Domain Name", + "rule": "self.matches('^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" + } + ] }, "maxItems": 1, "minItems": 1, @@ -7997,6 +8013,26 @@ "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", "type": "string" }, + "request": { + "description": "Request allows modifying the request before it is forwarded to the service.", + "properties": { + "cookies": { + "additionalProperties": { + "type": "string" + }, + "description": "Cookies allow modifying the request cookies before it is forwarded to the service.", + "type": "object" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "Headers allow modifying the request headers before it is forwarded to the service.", + "type": "object" + } + }, + "type": "object" + }, "service": { "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", "properties": { @@ -8143,7 +8179,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-controller-manager", @@ -8159,7 +8195,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-leader-election-role", @@ -8223,7 +8259,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-manager-role" @@ -8640,7 +8676,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-leader-election-rolebinding", @@ -8668,7 +8704,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-manager-rolebinding" @@ -8704,7 +8740,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "busola.io/extension": "resource", "busola.io/extension-version": "0.5", "kyma-project.io/module": "api-gateway" @@ -8729,7 +8765,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "busola.io/extension": "resource", "busola.io/extension-version": "0.5", "kyma-project.io/module": "api-gateway" @@ -8747,7 +8783,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-operator-metrics", @@ -8776,7 +8812,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-webhook-service", @@ -8808,7 +8844,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "kyma-project.io/module": "api-gateway" }, "name": "api-gateway-priority-class" @@ -8824,7 +8860,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "control-plane": "controller-manager", "kyma-project.io/module": "api-gateway" }, @@ -8849,7 +8885,7 @@ "app.kubernetes.io/instance": "api-gateway-operator-default", "app.kubernetes.io/name": "api-gateway-operator", "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.4.2", + "app.kubernetes.io/version": "2.5.0", "control-plane": "controller-manager", "kyma-project.io/module": "api-gateway", "sidecar.istio.io/inject": "false" @@ -8866,7 +8902,7 @@ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -8912,7 +8948,7 @@ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.4.2", + "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "name": "init", "resources": { "limits": { @@ -8945,32 +8981,48 @@ } } ], - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "APIGateway", - "metadata": { - "name": "default" - }, - "spec": { - "enableKymaGateway": true - } - }, + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", "crPath": "/apis/operator.kyma-project.io/v1alpha1/apigateways/default", - "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.4.2/api-gateway-manager.yaml", - "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.4.2/apigateway-default-cr.yaml" - }, + "channels": [ + "fast", + "regular" + ], + "documentation": "https://kyma-project.io/#/api-gateway/user/README", + "repository": "https://github.com/kyma-project/api-gateway.git" + } + ] + }, + { + "name": "serverless", + "documentation": "https://kyma-project.io/#/serverless-manager/user/README", + "repository": "https://github.com/kyma-project/serverless-manager.git", + "managedResources": [ + "/apis/serverless.kyma-project.io/v1alpha2/functions", + "/apis/operator.kyma-project.io/v1alpha1/serverlesses" + ], + "manageable": true, + "latestGithubRelease": { + "repository": "kyma-project/serverless-manager", + "deploymentYaml": "serverless-operator.yaml", + "crYaml": "default-serverless-cr.yaml" + }, + "versions": [ { - "version": "2.5.0", - "deploymentYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/api-gateway-manager.yaml", - "crYaml": "https://github.com/kyma-project/api-gateway/releases/download/2.5.0/apigateway-default-cr.yaml", + "version": "1.5.1", + "deploymentYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/serverless-operator.yaml", + "crYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/default-serverless-cr.yaml", "cr": { "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "APIGateway", + "kind": "Serverless", "metadata": { - "name": "default" + "name": "default", + "namespace": "kyma-system" }, "spec": { - "enableKymaGateway": true + "dockerRegistry": { + "enableInternal": true + } } }, "resources": [ @@ -8982,37 +9034,52 @@ "controller-gen.kubebuilder.io/version": "v0.14.0" }, "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" + "app.kubernetes.io/component": "serverless-operator.kyma-project.io" }, - "name": "apigateways.operator.kyma-project.io" + "name": "serverlesses.operator.kyma-project.io" }, "spec": { "group": "operator.kyma-project.io", "names": { - "kind": "APIGateway", - "listKind": "APIGatewayList", - "plural": "apigateways", - "singular": "apigateway" + "kind": "Serverless", + "listKind": "ServerlessList", + "plural": "serverlesses", + "singular": "serverless" }, - "scope": "Cluster", + "scope": "Namespaced", "versions": [ { "additionalPrinterColumns": [ + { + "jsonPath": ".status.conditions[?(@.type=='Configured')].status", + "name": "Configured", + "type": "string" + }, + { + "jsonPath": ".status.conditions[?(@.type=='Installed')].status", + "name": "Installed", + "type": "string" + }, + { + "jsonPath": ".metadata.generation", + "name": "generation", + "type": "integer" + }, + { + "jsonPath": ".metadata.creationTimestamp", + "name": "age", + "type": "date" + }, { "jsonPath": ".status.state", - "name": "State", + "name": "state", "type": "string" } ], "name": "v1alpha1", "schema": { "openAPIV3Schema": { - "description": "APIGateway is the Schema for the apigateways API", + "description": "Serverless is the Schema for the serverlesses API", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -9026,20 +9093,80 @@ "type": "object" }, "spec": { - "description": "APIGatewaySpec defines the desired state of APIGateway", + "description": "ServerlessSpec defines the desired state of Serverless", "properties": { - "enableKymaGateway": { - "description": "Specifies whether the default Kyma Gateway kyma-gateway in kyma-system Namespace is created.", - "type": "boolean" + "defaultBuildJobPreset": { + "description": "Configures the default build Job preset to be used", + "type": "string" + }, + "defaultRuntimePodPreset": { + "description": "Configures the default runtime Pod preset to be used", + "type": "string" + }, + "dockerRegistry": { + "properties": { + "enableInternal": { + "description": "When set to true, the internal Docker registry is enabled", + "type": "boolean" + }, + "secretName": { + "description": "Secret used for configuration of the Docker registry", + "type": "string" + } + }, + "type": "object" + }, + "eventing": { + "description": "Used Eventing endpoint", + "properties": { + "endpoint": { + "type": "string" + } + }, + "required": [ + "endpoint" + ], + "type": "object" + }, + "functionBuildExecutorArgs": { + "description": "Specifies the arguments passed to the Function build executor", + "type": "string" + }, + "functionBuildMaxSimultaneousJobs": { + "description": "A number of simultaneous jobs that can run at the same time. The default value is `5`", + "type": "string" + }, + "functionRequeueDuration": { + "description": "Sets the requeue duration for Function. By default, the Function associated with the default configuration is requeued every 5 minutes", + "type": "string" + }, + "healthzLivenessTimeout": { + "description": "Sets the timeout for the Function health check. The default value in seconds is `10`", + "type": "string" + }, + "targetCPUUtilizationPercentage": { + "description": "Sets a custom CPU utilization threshold for scaling Function Pods", + "type": "string" + }, + "tracing": { + "description": "Used Tracing endpoint", + "properties": { + "endpoint": { + "type": "string" + } + }, + "required": [ + "endpoint" + ], + "type": "object" } }, "type": "object" }, "status": { - "description": "APIGatewayStatus defines the observed state of APIGateway", "properties": { "conditions": { - "description": "Conditions of APIGateway", + "description": "Conditions associated with CustomStatus.", "items": { "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", "properties": { @@ -9093,24 +9220,60 @@ }, "type": "array" }, - "description": { - "description": "Description of APIGateway status", + "defaultBuildJobPreset": { "type": "string" }, - "state": { - "description": "State signifies current state of APIGateway. Value can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\", \"Warning\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], + "defaultRuntimePodPreset": { "type": "string" - } - }, - "required": [ - "state" + }, + "dockerRegistry": { + "description": "Used registry configuration.\nContains registry URL or \"internal\"", + "type": "string" + }, + "eventingEndpoint": { + "description": "Used the Eventing endpoint and the Tracing endpoint.", + "type": "string" + }, + "functionBuildExecutorArgs": { + "type": "string" + }, + "functionBuildMaxSimultaneousJobs": { + "type": "string" + }, + "functionRequeueDuration": { + "type": "string" + }, + "healthzLivenessTimeout": { + "type": "string" + }, + "served": { + "description": "Served signifies that current Serverless is managed.\nValue can be one of (\"True\", \"False\").", + "enum": [ + "True", + "False" + ], + "type": "string" + }, + "state": { + "description": "State signifies current state of Serverless.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\").", + "enum": [ + "Processing", + "Deleting", + "Ready", + "Error", + "Warning" + ], + "type": "string" + }, + "targetCPUUtilizationPercentage": { + "type": "string" + }, + "tracingEndpoint": { + "type": "string" + } + }, + "required": [ + "served" ], "type": "object" } @@ -9128,1931 +9291,66 @@ } }, { - "apiVersion": "apiextensions.k8s.io/v1", - "kind": "CustomResourceDefinition", + "apiVersion": "v1", + "kind": "ServiceAccount", "metadata": { - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" + "labels": { + "app.kubernetes.io/component": "serverless-operator.kyma-project.io", + "app.kubernetes.io/created-by": "serverless-operator", + "app.kubernetes.io/instance": "serverless-operator-sa", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "serverless-operator" }, + "name": "serverless-operator", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" + "app.kubernetes.io/component": "serverless-operator.kyma-project.io" }, - "name": "apirules.gateway.kyma-project.io" + "name": "serverless-operator-role" }, - "spec": { - "conversion": { - "strategy": "Webhook", - "webhook": { - "clientConfig": { - "service": { - "name": "api-gateway-webhook-service", - "namespace": "kyma-system", - "path": "/convert", - "port": 9443 - } - }, - "conversionReviewVersions": [ - "v1beta1", - "v2alpha1" - ] - } + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "secrets", + "serviceaccounts", + "services" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "group": "gateway.kyma-project.io", - "names": { - "kind": "APIRule", - "listKind": "APIRuleList", - "plural": "apirules", - "singular": "apirule" - }, - "scope": "Namespaced", - "versions": [ - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.APIRuleStatus.code", - "name": "Status", - "type": "string" - }, - { - "jsonPath": ".spec.host", - "name": "Host", - "type": "string" - } - ], - "name": "v1beta1", - "schema": { - "openAPIV3Schema": { - "description": "APIRule is the Schema for ApiRule APIs.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "Defines the desired state of ApiRule.", - "properties": { - "corsPolicy": { - "description": "Specifies CORS headers configuration that will be sent downstream", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "format": "duration", - "type": "string" - } - }, - "type": "object" - }, - "gateway": { - "description": "Specifies the Istio Gateway to be used.", - "pattern": "^[0-9a-z-_]+(\\/[0-9a-z-_]+|(\\.[0-9a-z-_]+)*)$", - "type": "string" - }, - "host": { - "description": "Specifies the URL of the exposed service.", - "maxLength": 256, - "minLength": 3, - "pattern": "^([a-zA-Z0-9][a-zA-Z0-9-_]*\\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$", - "type": "string" - }, - "rules": { - "description": "Represents the array of Oathkeeper access rules to be applied.", - "items": { - "description": "Rule .", - "properties": { - "accessStrategies": { - "description": "Specifies the list of access strategies.\nAll strategies listed in [Oathkeeper documentation](https://www.ory.sh/docs/oathkeeper/pipeline/authn) are supported.", - "items": { - "description": "Represents a handler that authenticates provided credentials. See the corresponding type in the oathkeeper-maester project.", - "properties": { - "config": { - "description": "Configures the handler. Configuration keys vary per handler.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "handler": { - "description": "Specifies the name of the handler.", - "type": "string" - } - }, - "required": [ - "handler" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "methods": { - "description": "Represents the list of allowed HTTP request methods available for the **spec.rules.path**.", - "items": { - "description": "HttpMethod specifies the HTTP request method. The list of supported methods is defined in RFC 9910: HTTP Semantics and RFC 5789: PATCH Method for HTTP.", - "enum": [ - "GET", - "HEAD", - "POST", - "PUT", - "DELETE", - "CONNECT", - "OPTIONS", - "TRACE", - "PATCH" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "mutators": { - "description": "Specifies the list of [Ory Oathkeeper](https://www.ory.sh/docs/oathkeeper/pipeline/mutator) mutators.", - "items": { - "description": "Mutator represents a handler that transforms the HTTP request before forwarding it. See the corresponding in the oathkeeper-maester project.", - "properties": { - "config": { - "description": "Configures the handler. Configuration keys vary per handler.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "handler": { - "description": "Specifies the name of the handler.", - "type": "string" - } - }, - "required": [ - "handler" - ], - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Specifies the path of the exposed service.", - "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", - "type": "string" - }, - "service": { - "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "accessStrategies", - "methods", - "path" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "service": { - "description": "Describes the service to expose.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "gateway", - "host", - "rules" - ], - "type": "object" - }, - "status": { - "description": "Describes the observed state of ApiRule.", - "properties": { - "APIRuleStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "accessRuleStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "authorizationPolicyStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "lastProcessedTime": { - "format": "date-time", - "type": "string" - }, - "observedGeneration": { - "format": "int64", - "type": "integer" - }, - "requestAuthenticationStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - }, - "virtualServiceStatus": { - "description": "Describes the status of APIRule.", - "properties": { - "code": { - "description": "Status code describing APIRule.", - "type": "string" - }, - "desc": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } - }, - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.state", - "name": "Status", - "type": "string" - }, - { - "jsonPath": ".spec.hosts", - "name": "Hosts", - "type": "string" - } - ], - "name": "v2alpha1", - "schema": { - "openAPIV3Schema": { - "description": "APIRule is the Schema for ApiRule APIs.", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "APIRuleSpec defines the desired state of ApiRule.", - "properties": { - "corsPolicy": { - "description": "Specifies CORS headers configuration that will be sent downstream", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "gateway": { - "description": "Specifies the Istio Gateway to be used.", - "maxLength": 127, - "type": "string", - "x-kubernetes-validations": [ - { - "message": "Gateway is not valid", - "rule": "self.matches('^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?/([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)$')" - } - ] - }, - "hosts": { - "description": "Specifies the URLs of the exposed service.", - "items": { - "description": "Host is the URL of the exposed service.", - "maxLength": 255, - "minLength": 3, - "type": "string", - "x-kubernetes-validations": [ - { - "message": "Host is not Fully Qualified Domain Name", - "rule": "self.matches('^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" - } - ] - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "rules": { - "description": "Represents the array of Oathkeeper access rules to be applied.", - "items": { - "description": "Rule .", - "properties": { - "jwt": { - "description": "Specifies the Istio JWT access strategy.", - "properties": { - "authentications": { - "items": { - "description": "JwtAuthentication Config for Jwt Istio authentication", - "properties": { - "fromHeaders": { - "items": { - "description": "JwtHeader for specifying from header for the Jwt token", - "properties": { - "name": { - "type": "string" - }, - "prefix": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "type": "string" - }, - "jwksUri": { - "type": "string" - } - }, - "required": [ - "issuer", - "jwksUri" - ], - "type": "object" - }, - "type": "array" - }, - "authorizations": { - "items": { - "description": "JwtAuthorization contains scopes and audiences required for the JWT token.", - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "requiredScopes": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "methods": { - "description": "Represents the list of allowed HTTP request methods available for the **spec.rules.path**.", - "items": { - "description": "HttpMethod specifies the HTTP request method. The list of supported methods is defined in RFC 9910: HTTP Semantics and RFC 5789: PATCH Method for HTTP.", - "enum": [ - "GET", - "HEAD", - "POST", - "PUT", - "DELETE", - "CONNECT", - "OPTIONS", - "TRACE", - "PATCH" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "noAuth": { - "description": "Disables authorization when set to true.", - "type": "boolean" - }, - "path": { - "description": "Specifies the path of the exposed service.", - "pattern": "^([0-9a-zA-Z./*()?!\\\\_-]+)", - "type": "string" - }, - "request": { - "description": "Request allows modifying the request before it is forwarded to the service.", - "properties": { - "cookies": { - "additionalProperties": { - "type": "string" - }, - "description": "Cookies allow modifying the request cookies before it is forwarded to the service.", - "type": "object" - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "description": "Headers allow modifying the request headers before it is forwarded to the service.", - "type": "object" - } - }, - "type": "object" - }, - "service": { - "description": "Describes the service to expose. Overwrites the **spec** level service if defined.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "methods", - "path" - ], - "type": "object", - "x-kubernetes-validations": [ - { - "message": "either jwt is configured or noAuth must be set to true in a rule", - "rule": "has(self.jwt) ? !has(self.noAuth) || self.noAuth == false : has(self.noAuth) && self.noAuth == true" - } - ] - }, - "minItems": 1, - "type": "array" - }, - "service": { - "description": "Describes the service to expose.", - "properties": { - "external": { - "description": "Specifies if the service is internal (in cluster) or external.", - "type": "boolean" - }, - "name": { - "description": "Specifies the name of the exposed service.", - "type": "string" - }, - "namespace": { - "description": "Specifies the Namespace of the exposed service. If not defined, it defaults to the APIRule Namespace.", - "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", - "type": "string" - }, - "port": { - "description": "Specifies the communication port of the exposed service.", - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "name", - "port" - ], - "type": "object" - }, - "timeout": { - "description": "Timeout for HTTP requests in seconds. The timeout can be configured up to 3900 seconds (65 minutes).", - "maximum": 3900, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "gateway", - "hosts", - "rules" - ], - "type": "object" - }, - "status": { - "description": "APIRuleStatus describes the observed state of ApiRule.", - "properties": { - "description": { - "description": "Description of APIRule status", - "type": "string" - }, - "lastProcessedTime": { - "format": "date-time", - "type": "string" - }, - "state": { - "description": "State signifies current state of APIRule.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\", \"Warning\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], - "type": "string" - } - }, - "required": [ - "state" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": false, - "subresources": { - "status": {} - } - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-leader-election-role", - "namespace": "kyma-system" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-manager-role" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "deployments", - "secrets", - "serviceaccounts", - "services" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apiextensions.k8s.io" - ], - "resources": [ - "customresourcedefinitions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "cert.gardener.cloud" - ], - "resources": [ - "certificates" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "dns.gardener.cloud" - ], - "resources": [ - "dnsentries" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "gateway.kyma-project.io" - ], - "resources": [ - "apirules/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.istio.io" - ], - "resources": [ - "gateways" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "networking.istio.io" - ], - "resources": [ - "virtualservices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "oathkeeper.ory.sh" - ], - "resources": [ - "rules" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "operator.kyma-project.io" - ], - "resources": [ - "apigateways/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterrolebindings", - "clusterroles", - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "authorizationpolicies" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "peerauthentications" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "security.istio.io" - ], - "resources": [ - "requestauthentications" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-leader-election-rolebinding", - "namespace": "kyma-system" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "api-gateway-leader-election-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-manager-rolebinding" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "api-gateway-manager-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "v1", - "data": { - "dataSources": "relatedGateways:\n resource:\n kind: Gateway\n group: networking.istio.io\n version: v1beta1\n namespace: null\nrelatedServices:\n resource:\n kind: Service\n version: v1\n namespace: null\nvirtualServices:\n resource:\n kind: VirtualService\n group: networking.istio.io\n version: v1beta1\n namespace: null\n filter: '$item.metadata.labels.\"apirule.gateway.kyma-project.io/v1beta1\" = $root.metadata.name & \".\" & $root.metadata.namespace'", - "details": "header:\n - name: status\n widget: Badge\n highlights:\n positive:\n - 'OK'\n negative:\n - 'ERROR'\n critical:\n - 'SKIPPED'\n source: 'status.APIRuleStatus.code ? status.APIRuleStatus.code : \"UNKNOWN\"'\n description: status.APIRuleStatus.desc\n - name: host\n widget: ExternalLink\n source: 'spec.host'\n link: 'status.APIRuleStatus.code = \"OK\" ? \"https://\" & $virtualServices().items[0].spec.hosts[0] : \"\"'\nbody:\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.spec.jwks_url_http\"'\n visibility: '$count(spec.rules.accessStrategies.config.jwks_urls)>0 and $reduce(spec.rules.accessStrategies.config.jwks_urls,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.spec.trusted_issuers_http\"'\n visibility: '$count(spec.rules.accessStrategies.config.trusted_issuers)>0 and $reduce(spec.rules.accessStrategies.config.trusted_issuers,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - simple: true\n widget: Alert\n severity: warning\n source: '\"alert.corsPolicy\"'\n visibility: '$not($exists(spec.corsPolicy))'\n - widget: Panel\n name: corsPolicy\n source: spec.corsPolicy\n visibility: $exists(spec.corsPolicy)\n children:\n - name: corsAllowMethods\n source: allowMethods\n widget: JoinedArray\n visibility: '$not($count(allowMethods)=0)'\n - name: corsAllowOriginsRegex\n source: $join(allowOrigins.regex,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.regex)=0)'\n - name: corsAllowOriginsPrefix\n source: $join(allowOrigins.prefix,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.prefix)=0)'\n - name: corsAllowOriginsExact\n source: $join(allowOrigins.exact,\",\")\n widget: Text\n visibility: '$not($count(allowOrigins.exact)=0)'\n - name: corsExposeHeaders\n source: exposeHeaders\n widget: JoinedArray\n visibility: '$not($count(exposeHeaders)=0)'\n - name: corsAllowHeaders\n source: allowHeaders\n widget: JoinedArray\n visibility: '$not($count(allowHeaders)=0)'\n - name: corsAllowCredentials\n source: allowCredentials\n widget: Badge\n visibility: '$exists(allowCredentials)'\n - name: corsMaxAge\n source: maxAge\n widget: Text\n visibility: '$exists(maxAge)'\n - name: general\n source: spec\n widget: Panel\n visibility: $exists(spec.timeout)\n children:\n - source: timeout\n name: details.timeout\n - name: service\n source: spec.service\n widget: Panel\n children:\n - name: service.name\n source: name\n widget: ResourceLink\n resource:\n name: $root.spec.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n - name: service.port\n source: port\n - source: spec.rules\n widget: Table\n name: rules\n children:\n - source: $item.path\n name: rules.path\n - source: $item.methods\n name: rules.methods\n widget: Badge\n collapsible:\n - name: general\n source: $item\n widget: Panel\n visibility: $exists($item.timeout)\n children:\n - source: $item.timeout\n name: details.timeout\n - source: $item.accessStrategies\n widget: Table\n disablePadding: true\n name: accessStrategies\n children:\n - source: $item.handler\n name: accessStrategies.handlers\n widget: Badge\n - source: $item.config.required_scope\n name: accessStrategies.required_scope\n widget: JoinedArray\n - source: $item.config.jwks_urls\n name: accessStrategies.jwks_urls\n widget: JoinedArray\n - source: $item.config.trusted_issuers\n name: accessStrategies.trusted_issuers\n widget: JoinedArray\n - source: $item.config.introspection_url\n name: accessStrategies.introspection_url\n widget: Text\n - source: $item.config.introspection_request_headers\n name: accessStrategies.introspection_request_headers\n widget: Labels\n - source: $item.config.token_from\n name: accessStrategies.token_from\n widget: Labels\n - source: $item.mutators\n widget: Table\n disablePadding: true\n name: mutators\n visibility: $exists($item.mutators)\n children:\n - source: $item.handler\n name: mutators.handlers\n widget: Badge\n - source: $item.config\n name: mutators.config\n widget: CodeViewer\n description: \"Configuration for {{[Ory Oathkeeper Rule mutators]https://www.ory.sh/docs/oathkeeper/pipeline/mutator}}\"\n language: \"'yaml'\"\n visibility: '$exists($value)'\n - name: service\n source: $item.service\n widget: Panel\n visibility: $exists($item.service)\n children:\n - name: service.name\n source: $item.service.name\n widget: ResourceLink\n resource:\n name: $item.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n - name: service.port\n source: $item.service.port\n - widget: ResourceList\n source: $virtualServices()\n name: virtualService\n disableCreate: true\n", - "form": "- simple: true\n required: false\n path: spec.timeout\n name: timeout\n inputInfo: inputInfo.timeout\n value:\n type: number\n- simple: true\n required: false\n path: spec.service\n name: service\n widget: FormGroup\n defaultExpanded: true\n children:\n - simple: true\n required: false\n path: name\n name: service-name\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [port]\n - simple: true\n required: false\n path: port\n name: service.port\n subscribe:\n port: \"$filter($relatedServices().items, function ($v) { $v.metadata.name = $root.spec.service.name and $v.metadata.namespace = $root.metadata.namespace }).spec.ports[0].port\"\n- simple: true\n required: true\n path: spec.gateway\n name: gateway\n widget: ResourceRef\n defaultExpanded: true\n visibility: $canI('networking.istio.io/v1beta1', 'Gateway')\n resource:\n kind: Gateway\n group: networking.istio.io\n version: v1beta1\n overwrite: false\n toInternal: '($values := $split($, \"/\"); { \"namespace\": $values[0], \"name\": $values[1] })'\n toExternal: 'namespace & \"/\" & name'\n trigger: [host]\n- simple: true\n var: separator\n value: \"\"\n- simple: true\n required: true\n path: spec.gateway\n name: gateway\n visibility: $not($canI('networking.istio.io/v1beta1', 'Gateway'))\n inputInfo: inputInfo.gateway\n overwrite: false\n trigger: [host]\n- simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.corsPolicy\"'\n visibility: '$not($useCorsPolicy)'\n- var: useCorsPolicy\n name: useCorsPolicy\n simple: true\n type: boolean\n dynamicValue: '$boolean(spec.corsPolicy)'\n- simple: true\n visibility: '$useCorsPolicy'\n required: false\n path: spec.corsPolicy\n name: corsPolicy\n defaultExpanded: true\n inputInfo: inputInfo.corsPolicy\n widget: FormGroup\n children:\n - simple: true\n required: false\n path: allowMethods\n name: corsAllowMethods\n widget: MultiCheckbox\n options:\n - key: GET\n - key: POST\n - key: PUT\n - key: DELETE\n - key: PATCH\n - key: HEAD\n - key: OPTIONS\n - key: CONNECT\n - key: TRACE\n - simple: true\n required: false\n path: allowOrigins\n name: corsAllowOrigins\n widget: GenericList\n children:\n - path: '[]'\n widget: KeyValuePair\n keyEnum:\n - exact\n - prefix\n - regex\n simple: true\n - simple: true\n required: false\n path: allowHeaders\n name: corsAllowHeaders\n widget: SimpleList\n children:\n - path: '[]'\n simple: true\n - simple: true\n required: false\n path: exposeHeaders\n name: corsExposeHeaders\n widget: SimpleList\n children:\n - path: '[]'\n simple: true\n - simple: true\n required: false\n path: allowCredentials\n name: corsAllowCredentials\n value:\n type: boolean\n - simple: true\n required: false\n path: maxAge\n name: corsMaxAge\n placeholder: 300s\n value:\n type: string\n- simple: true\n required: true\n path: spec.host\n name: host\n enum: \"$distinct($filter($relatedGateways().items, function ($v) { $v.metadata.namespace = $substringBefore($root.spec.gateway, '/') and $v.metadata.name = $substringAfter($root.spec.gateway, '/')}).spec.servers.hosts)\"\n subscribe:\n host: \"$string($filter($relatedGateways().items, function ($v) { $v.metadata.namespace = $substringBefore($root.spec.gateway, '/') and $v.metadata.name = $substringAfter($root.spec.gateway, '/')}).spec.servers[0].hosts[0])\"\n- simple: true\n widget: Alert\n severity: error\n alert: '\"alert.spec.host\"'\n visibility: '$substring(spec.host, 0, 1)=\"*\"'\n- simple: true\n required: true\n path: spec.rules\n name: rules\n widget: GenericList\n defaultExpanded: true\n template:\n path: '/.*'\n methods: ['GET']\n accessStrategies:\n - handler: 'no_auth'\n children:\n - simple: true\n required: false\n path: '[].timeout'\n name: timeout\n inputInfo: inputInfo.timeout\n value:\n type: number\n - simple: true\n required: true\n path: '[].path'\n name: path\n inputInfo: inputInfo.path\n - required: true\n simple: true\n path: '[].accessStrategies'\n name: accessStrategies\n widget: GenericList\n defaultExpanded: true\n template:\n handler: 'no_auth'\n children:\n - required: true\n simple: true\n path: '[].handler'\n name: accessStrategies.handler\n enum:\n - allow\n - no_auth\n - noop\n - jwt\n - oauth2_introspection\n - path: '[].config'\n simple: true\n name: accessStrategies.config\n type: object\n properties:\n jwks_urls:\n type: array\n items:\n type: string\n pattern: ^(https://|file://).*$\n trusted_issuers:\n type: array\n items:\n type: string\n pattern: ^(https://|file://).*$\n required_scope:\n type: array\n items:\n type: string\n introspection_url:\n type: string\n pattern: ^(https://|http://).*$\n introspection_request_headers:\n type: map\n token_from:\n type: map\n children:\n - simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.spec.jwks_url_http\"'\n visibility: '$reduce($item.config.jwks_urls,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - path: jwks_urls\n name: accessStrategies.jwks_urls\n inputInfo: inputInfo.jwks_urls\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - simple: true\n widget: Alert\n severity: warning\n alert: '\"alert.spec.trusted_issuers_http\"'\n visibility: '$reduce($item.config.trusted_issuers,function($i, $j){$i or $substringBefore($j,\"://\")=\"http\"},false)'\n - path: trusted_issuers\n name: accessStrategies.trusted_issuers\n inputInfo: inputInfo.trusted_issuers\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - path: introspection_url\n name: accessStrategies.introspection_url\n inputInfo: inputInfo.introspection_url\n simple: true\n visibility: '$item.handler=\"oauth2_introspection\"'\n - path: introspection_request_headers\n name: accessStrategies.introspection_request_headers\n simple: true\n inputInfo: inputInfo.introspection_request_headers\n widget: KeyValuePair\n visibility: '$item.handler=\"oauth2_introspection\"'\n - path: required_scope\n name: accessStrategies.required_scope\n simple: true\n widget: SimpleList\n visibility: '$item.handler=\"oauth2_introspection\" or $item.handler=\"oauth2_client_credentials\" or $item.handler=\"jwt\"'\n children:\n - path: '[]'\n simple: true\n - path: token_from\n name: accessStrategies.token_from\n simple: true\n inputInfo: inputInfo.token_from\n widget: KeyValuePair\n visibility: '$item.handler!=\"allow\" and $item.handler!=\"no_auth\" and $item.handler!=\"noop\"'\n keyEnum:\n - header\n - query_parameter\n - cookie\n - required: true\n simple: true\n path: '[].methods'\n name: rules.methods\n widget: MultiCheckbox\n options:\n - key: GET\n - key: POST\n - key: PUT\n - key: DELETE\n - key: PATCH\n - key: HEAD\n - key: OPTIONS\n - key: CONNECT\n - key: TRACE\n - path: '[].mutators'\n name: mutators\n widget: GenericList\n children:\n - path: '[].config'\n widget: CodeEditor\n description: \"Configuration for {{[Ory Oathkeeper Rule mutators]https://www.ory.sh/docs/oathkeeper/pipeline/mutator}}\"\n language: \"'yaml'\"\n - required: true\n path: '[].handler'\n name: accessStrategies.handler\n enum:\n - noop\n - id_token\n - header\n - cookie\n - path: '[].service'\n simple: true\n name: service\n widget: FormGroup\n required: false\n children:\n - simple: true\n required: false\n path: name\n name: service-name\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [accessStrategyPort]\n - simple: true\n required: false\n path: port\n name: service.port\n subscribe:\n accessStrategyPort: \"$filter($relatedServices().items, function ($v) { $v.metadata.name = $item.service.name and $v.metadata.namespace = $root.metadata.namespace }).spec.ports[0].port\"\n", - "general": "resource:\n kind: APIRule\n group: gateway.kyma-project.io\n version: v1beta1\nname: API Rules\ncategory: Discovery and Network\nscope: namespace\ndescription: '{{[APIRule](https://kyma-project.io/#/api-gateway/user/custom-resources/apirule/04-10-apirule-custom-resource)}} allows for exposing a service externally.'\nurlPath: apirules", - "list": "- name: host\n source: spec.host\n- name: service-name\n source: '$string(spec.service.name) ? ($string(spec.service.name) & \" (port: \" & $string(spec.service.port) & \")\") : \"\"'\n widget: ResourceLink\n resource:\n name: $root.spec.service.name\n namespace: $root.metadata.namespace\n kind: '\"Service\"'\n- name: status\n widget: Badge\n highlights:\n positive:\n - 'OK'\n negative:\n - 'ERROR'\n critical:\n - 'SKIPPED'\n source: 'status.APIRuleStatus.code ? status.APIRuleStatus.code : \"UNKNOWN\"'\n description: status.APIRuleStatus.desc", - "presets": "- name: Default gateway\n default: true\n value:\n spec:\n gateway: kyma-system/kyma-gateway\n rules:\n - path: /.*\n methods:\n - GET\n accessStrategies:\n - handler: no_auth", - "translations": "en:\n accessStrategies: Access Strategies\n accessStrategies.config: Config\n accessStrategies.handler: Handler\n accessStrategies.handlers: Handlers\n accessStrategies.jwks_urls: JWKS URLs\n accessStrategies.trusted_issuers: Trusted Issuers\n accessStrategies.required_scope: Required Scope\n accessStrategies.introspection_url: Introspection URL\n accessStrategies.introspection_request_headers: Introspection Request Headers\n accessStrategies.token_from: Token From\n gateway: Gateway\n useCorsPolicy: Use custom CORS policy\n corsPolicy: CORS Policy\n corsAllowMethods: CORS Allow Methods\n corsAllowOrigins: CORS Allow Origins\n corsAllowHeaders: CORS Allow Headers\n corsExposeHeaders: CORS Expose Headers\n corsAllowCredentials: CORS Allow Credentials\n corsAllowOriginsRegex: CORS origins allowed with regex match\n corsAllowOriginsPrefix: CORS origins allowed with prefix match\n corsAllowOriginsExact: CORS origins allowed with exact match\n corsMaxAge: CORS Max Age\n host: Host\n inputInfo.corsPolicy: Defines what CORS headers will be sent on CORS preflight and response\n inputInfo.gateway: Gateway structure, '{NAMESPACE}/{NAME}'\n inputInfo.path: \"Path can contain alphanumeric characters and '/', '.', '*', '?', '!', '-', '(', and ')'.\"\n inputInfo.jwks_urls: \"JWKS URLs must start with 'https://', 'http://' or 'file://'. HTTP protocol is not recommended.\"\n inputInfo.trusted_issuers: \"Trusted Issuers must start with 'https://', 'http://' or 'file://'. HTTP protocol is not recommended.\"\n inputInfo.introspection_url: \"URL endpoint used for validating the Bearer token. Should start with 'http://' or 'https://'\"\n inputInfo.introspection_request_headers: \"Headers sent alongside the introspection request\"\n inputInfo.token_from: \"Defines where Ory Oathkeeper should look for access token\"\n inputInfo.timeout: \"Timeout for HTTP requests in seconds. The timeout can be configured for a maximum of 3900 seconds (65 minutes).\"\n mutators: Mutators\n mutators.config: Config\n mutators.handlers: Handlers\n path: Path\n rules: Rules\n rules.methods: Methods\n rules.path: Path\n service: Service\n service.name: Name\n service.port: Port\n service-name: Service Name\n status: Status\n general: General\n timeout: HTTP Request Timeout\n details.timeout: HTTP Request Timeout (seconds)\n virtualService: Virtual Service\n alert.spec.host: Host can not be a wildcard, replace * with subdomain name\n alert.spec.jwks_url_http: \"JWKS URL: HTTP protocol is not secure, consider using HTTPS\"\n alert.spec.trusted_issuers_http: \"Trusted Issuers: HTTP protocol is not secure, consider using HTTPS\"\n alert.corsPolicy: \"Disabling custom CORS Policy is not recommended. Consider setting up CORS yourself\"\n" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-apirule-ui.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n- name: Ready\n source: status.state\n widget: Badge\n description: status.description\n highlights:\n positive:\n - 'Ready'\n negative:\n - 'Error'\n critical:\n - 'Warning'\nbody:\n- widget: Panel\n name: Configuration\n children:\n - source: spec.enableKymaGateway\n name: enableKymaGateway\n visibility: '$exists($value)'\n\n- source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n success:\n - 'True'\n error:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true", - "form": "- path: spec\n simple: true\n name: General\n widget: FormGroup\n defaultExpanded: true\n children:\n - path: enableKymaGateway\n simple: true\n name: enableKymaGateway\n value:\n type: boolean", - "general": "resource:\n kind: APIGateway\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: apigateways\ncategory: Kyma\nname: APIGateway\nscope: cluster\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[APIGateway custom resource](https://kyma-project.io/#/api-gateway/user/custom-resources/apigateway/04-00-apigateway-custom-resource)}}\n configures the API Gateway module.\n ", - "list": "- name: Ready\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n negative:\n - 'Error'\n critical:\n - 'Warning'", - "translations": "en:\n enableKymaGateway: Enable Kyma Gateway" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-ui.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-operator-metrics", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-metrics", - "port": 8080, - "targetPort": 8080 - } - ], - "selector": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-webhook-service", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "https-convert", - "port": 9443, - "protocol": "TCP", - "targetPort": 9443 - } - ], - "selector": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - } - }, - { - "apiVersion": "scheduling.k8s.io/v1", - "description": "Scheduling priority of api-gateway component. Must not be blocked by unschedulable user workloads.", - "globalDefault": false, - "kind": "PriorityClass", - "metadata": { - "labels": { - "app.kubernetes.io/component": "operator", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-priority-class" - }, - "value": 2100000 - }, - { - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": { - "labels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "control-plane": "controller-manager", - "kyma-project.io/module": "api-gateway" - }, - "name": "api-gateway-controller-manager", - "namespace": "kyma-system" - }, - "spec": { - "replicas": 1, - "selector": { - "matchLabels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "control-plane": "controller-manager" - } - }, - "template": { - "metadata": { - "annotations": { - "kubectl.kubernetes.io/default-container": "manager" - }, - "labels": { - "app.kubernetes.io/component": "api-gateway-operator.kyma-project.io", - "app.kubernetes.io/instance": "api-gateway-operator-default", - "app.kubernetes.io/name": "api-gateway-operator", - "app.kubernetes.io/part-of": "api-gateway", - "app.kubernetes.io/version": "2.5.0", - "control-plane": "controller-manager", - "kyma-project.io/module": "api-gateway", - "sidecar.istio.io/inject": "false" - } - }, - "spec": { - "containers": [ - { - "args": [ - "--leader-elect", - "--health-probe-bind-address=:8081", - "--metrics-bind-address=:8080" - ], - "command": [ - "/manager" - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "livenessProbe": { - "httpGet": { - "path": "/healthz", - "port": 8081 - }, - "initialDelaySeconds": 15, - "periodSeconds": 20 - }, - "name": "manager", - "readinessProbe": { - "httpGet": { - "path": "/readyz", - "port": 8081 - }, - "initialDelaySeconds": 5, - "periodSeconds": 10 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "10m", - "memory": "128Mi" - } - }, - "securityContext": { - "allowPrivilegeEscalation": false, - "capabilities": { - "drop": [ - "ALL" - ] - } - } - } - ], - "initContainers": [ - { - "args": [ - "--init-only" - ], - "command": [ - "/manager" - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "name": "init", - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "10m", - "memory": "128Mi" - } - }, - "securityContext": { - "allowPrivilegeEscalation": false, - "capabilities": { - "drop": [ - "ALL" - ] - } - } - } - ], - "priorityClassName": "api-gateway-priority-class", - "securityContext": { - "runAsNonRoot": true - }, - "serviceAccountName": "api-gateway-controller-manager", - "terminationGracePeriodSeconds": 10 - } - } - } - } - ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/api-gateway-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/api-gateway-manager:2.5.0", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/apigateways/default", - "channels": [ - "fast" - ], - "documentation": "https://kyma-project.io/#/api-gateway/user/README", - "repository": "https://github.com/kyma-project/api-gateway.git" - } - ] - }, - { - "name": "serverless", - "documentation": "https://kyma-project.io/#/serverless-manager/user/README", - "repository": "https://github.com/kyma-project/serverless-manager.git", - "managedResources": [ - "/apis/serverless.kyma-project.io/v1alpha2/functions", - "/apis/operator.kyma-project.io/v1alpha1/serverlesses" - ], - "manageable": true, - "latestGithubRelease": { - "repository": "kyma-project/serverless-manager", - "deploymentYaml": "serverless-operator.yaml", - "crYaml": "default-serverless-cr.yaml" - }, - "versions": [ - { - "version": "1.5.1", - "deploymentYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/serverless-operator.yaml", - "crYaml": "https://github.com/kyma-project/serverless/releases/download/1.5.1/default-serverless-cr.yaml", - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "Serverless", - "metadata": { - "name": "default", - "namespace": "kyma-system" - }, - "spec": { - "dockerRegistry": { - "enableInternal": true - } - } - }, - "resources": [ - { - "apiVersion": "apiextensions.k8s.io/v1", - "kind": "CustomResourceDefinition", - "metadata": { - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" - }, - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io" - }, - "name": "serverlesses.operator.kyma-project.io" - }, - "spec": { - "group": "operator.kyma-project.io", - "names": { - "kind": "Serverless", - "listKind": "ServerlessList", - "plural": "serverlesses", - "singular": "serverless" - }, - "scope": "Namespaced", - "versions": [ - { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.conditions[?(@.type=='Configured')].status", - "name": "Configured", - "type": "string" - }, - { - "jsonPath": ".status.conditions[?(@.type=='Installed')].status", - "name": "Installed", - "type": "string" - }, - { - "jsonPath": ".metadata.generation", - "name": "generation", - "type": "integer" - }, - { - "jsonPath": ".metadata.creationTimestamp", - "name": "age", - "type": "date" - }, - { - "jsonPath": ".status.state", - "name": "state", - "type": "string" - } - ], - "name": "v1alpha1", - "schema": { - "openAPIV3Schema": { - "description": "Serverless is the Schema for the serverlesses API", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "type": "object" - }, - "spec": { - "description": "ServerlessSpec defines the desired state of Serverless", - "properties": { - "defaultBuildJobPreset": { - "description": "Configures the default build Job preset to be used", - "type": "string" - }, - "defaultRuntimePodPreset": { - "description": "Configures the default runtime Pod preset to be used", - "type": "string" - }, - "dockerRegistry": { - "properties": { - "enableInternal": { - "description": "When set to true, the internal Docker registry is enabled", - "type": "boolean" - }, - "secretName": { - "description": "Secret used for configuration of the Docker registry", - "type": "string" - } - }, - "type": "object" - }, - "eventing": { - "description": "Used Eventing endpoint", - "properties": { - "endpoint": { - "type": "string" - } - }, - "required": [ - "endpoint" - ], - "type": "object" - }, - "functionBuildExecutorArgs": { - "description": "Specifies the arguments passed to the Function build executor", - "type": "string" - }, - "functionBuildMaxSimultaneousJobs": { - "description": "A number of simultaneous jobs that can run at the same time. The default value is `5`", - "type": "string" - }, - "functionRequeueDuration": { - "description": "Sets the requeue duration for Function. By default, the Function associated with the default configuration is requeued every 5 minutes", - "type": "string" - }, - "healthzLivenessTimeout": { - "description": "Sets the timeout for the Function health check. The default value in seconds is `10`", - "type": "string" - }, - "targetCPUUtilizationPercentage": { - "description": "Sets a custom CPU utilization threshold for scaling Function Pods", - "type": "string" - }, - "tracing": { - "description": "Used Tracing endpoint", - "properties": { - "endpoint": { - "type": "string" - } - }, - "required": [ - "endpoint" - ], - "type": "object" - } - }, - "type": "object" - }, - "status": { - "properties": { - "conditions": { - "description": "Conditions associated with CustomStatus.", - "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", - "properties": { - "lastTransitionTime": { - "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "format": "date-time", - "type": "string" - }, - "message": { - "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", - "maxLength": 32768, - "type": "string" - }, - "observedGeneration": { - "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "reason": { - "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", - "type": "string" - }, - "status": { - "description": "status of the condition, one of True, False, Unknown.", - "enum": [ - "True", - "False", - "Unknown" - ], - "type": "string" - }, - "type": { - "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", - "type": "string" - } - }, - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "defaultBuildJobPreset": { - "type": "string" - }, - "defaultRuntimePodPreset": { - "type": "string" - }, - "dockerRegistry": { - "description": "Used registry configuration.\nContains registry URL or \"internal\"", - "type": "string" - }, - "eventingEndpoint": { - "description": "Used the Eventing endpoint and the Tracing endpoint.", - "type": "string" - }, - "functionBuildExecutorArgs": { - "type": "string" - }, - "functionBuildMaxSimultaneousJobs": { - "type": "string" - }, - "functionRequeueDuration": { - "type": "string" - }, - "healthzLivenessTimeout": { - "type": "string" - }, - "served": { - "description": "Served signifies that current Serverless is managed.\nValue can be one of (\"True\", \"False\").", - "enum": [ - "True", - "False" - ], - "type": "string" - }, - "state": { - "description": "State signifies current state of Serverless.\nValue can be one of (\"Ready\", \"Processing\", \"Error\", \"Deleting\").", - "enum": [ - "Processing", - "Deleting", - "Ready", - "Error", - "Warning" - ], - "type": "string" - }, - "targetCPUUtilizationPercentage": { - "type": "string" - }, - "tracingEndpoint": { - "type": "string" - } - }, - "required": [ - "served" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io", - "app.kubernetes.io/created-by": "serverless-operator", - "app.kubernetes.io/instance": "serverless-operator-sa", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "serviceaccount", - "app.kubernetes.io/part-of": "serverless-operator" - }, - "name": "serverless-operator", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "labels": { - "app.kubernetes.io/component": "serverless-operator.kyma-project.io" - }, - "name": "serverless-operator-role" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "secrets", - "serviceaccounts", - "services" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "get", - "list", - "patch", - "watch" - ] + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "get", + "list", + "patch", + "watch" + ] }, { "apiGroups": [ @@ -27492,16 +25790,268 @@ } } } - }, + }, + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + }, + "labels": { + "app": "eventing-manager-cert-handler", + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-cert-handler", + "namespace": "kyma-system" + }, + "spec": { + "jobTemplate": { + "spec": { + "template": { + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + } + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "CRD_NAME", + "value": "subscriptions.eventing.kyma-project.io" + }, + { + "name": "SECRET_NAME", + "value": "eventing-manager-webhook-server-cert" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", + "imagePullPolicy": "IfNotPresent", + "name": "api-gateway" + } + ], + "priorityClassName": "eventing-manager-priority-class", + "restartPolicy": "Never", + "serviceAccountName": "eventing-manager-cert-handler" + } + } + } + }, + "schedule": "0 0 * * 0,4" + } + }, + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + }, + "labels": { + "app": "eventing-manager-cert-handler", + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-cert-handler", + "namespace": "kyma-system" + }, + "spec": { + "template": { + "metadata": { + "annotations": { + "sidecar.istio.io/inject": "false" + } + }, + "spec": { + "containers": [ + { + "env": [ + { + "name": "CRD_NAME", + "value": "subscriptions.eventing.kyma-project.io" + }, + { + "name": "SECRET_NAME", + "value": "eventing-manager-webhook-server-cert" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", + "imagePullPolicy": "IfNotPresent", + "name": "api-gateway" + } + ], + "priorityClassName": "eventing-manager-priority-class", + "restartPolicy": "Never", + "serviceAccountName": "eventing-manager-cert-handler" + } + } + } + }, + { + "apiVersion": "admissionregistration.k8s.io/v1", + "kind": "MutatingWebhookConfiguration", + "metadata": { + "creationTimestamp": null, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "subscription-mutating-webhook-configuration" + }, + "webhooks": [ + { + "admissionReviewVersions": [ + "v1" + ], + "clientConfig": { + "service": { + "name": "eventing-manager-webhook-service", + "namespace": "kyma-system", + "path": "/mutate-eventing-kyma-project-io-v1alpha2-subscription" + } + }, + "failurePolicy": "Fail", + "name": "msubscription.kb.io", + "rules": [ + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "apiVersions": [ + "v1alpha2" + ], + "operations": [ + "CREATE", + "UPDATE" + ], + "resources": [ + "subscriptions" + ] + } + ], + "sideEffects": "None" + } + ] + }, + { + "apiVersion": "admissionregistration.k8s.io/v1", + "kind": "ValidatingWebhookConfiguration", + "metadata": { + "creationTimestamp": null, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "subscription-validating-webhook-configuration" + }, + "webhooks": [ + { + "admissionReviewVersions": [ + "v1" + ], + "clientConfig": { + "service": { + "name": "eventing-manager-webhook-service", + "namespace": "kyma-system", + "path": "/validate-eventing-kyma-project-io-v1alpha2-subscription" + } + }, + "failurePolicy": "Fail", + "name": "vsubscription.kb.io", + "rules": [ + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "apiVersions": [ + "v1alpha2" + ], + "operations": [ + "CREATE", + "UPDATE" + ], + "resources": [ + "subscriptions" + ] + } + ], + "sideEffects": "None" + } + ] + } + ], + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.0.2", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing" + }, + { + "version": "1.2.0", + "deploymentYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-manager.yaml", + "crYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-default-cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "Eventing", + "metadata": { + "labels": { + "app.kubernetes.io/name": "eventing", + "app.kubernetes.io/instance": "eventing", + "app.kubernetes.io/part-of": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager" + }, + "name": "eventing", + "namespace": "kyma-system" + }, + "spec": { + "publisher": { + "replicas": { + "min": 2, + "max": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "64Mi" + } + } + } + } + }, + "resources": [ { - "apiVersion": "batch/v1", - "kind": "CronJob", + "apiVersion": "apiextensions.k8s.io/v1", + "kind": "CustomResourceDefinition", "metadata": { "annotations": { - "sidecar.istio.io/inject": "false" + "controller-gen.kubebuilder.io/version": "v0.14.0" }, "labels": { - "app": "eventing-manager-cert-handler", "app.kubernetes.io/component": "eventing-manager", "app.kubernetes.io/created-by": "eventing-manager", "app.kubernetes.io/instance": "eventing-manager", @@ -27510,242 +26060,425 @@ "app.kubernetes.io/part-of": "Kyma", "control-plane": "eventing-manager" }, - "name": "eventing-manager-cert-handler", - "namespace": "kyma-system" + "name": "eventings.operator.kyma-project.io" }, "spec": { - "jobTemplate": { - "spec": { - "template": { - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - } + "group": "operator.kyma-project.io", + "names": { + "kind": "Eventing", + "listKind": "EventingList", + "plural": "eventings", + "singular": "eventing" + }, + "scope": "Namespaced", + "versions": [ + { + "additionalPrinterColumns": [ + { + "description": "State of Eventing", + "jsonPath": ".status.state", + "name": "State", + "type": "string" }, - "spec": { - "containers": [ - { - "env": [ + { + "description": "Type of Eventing backend, either NATS or EventMesh", + "jsonPath": ".spec.backend.type", + "name": "Backend", + "type": "string" + }, + { + "description": "Age of the resource", + "jsonPath": ".metadata.creationTimestamp", + "name": "Age", + "type": "date" + } + ], + "name": "v1alpha1", + "schema": { + "openAPIV3Schema": { + "description": "Eventing is the Schema for the eventing API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "default": { + "logging": { + "logLevel": "Info" + }, + "publisher": { + "replicas": { + "max": 2, + "min": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + } + } + }, + "description": "EventingSpec defines the desired state of Eventing.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations allows to add annotations to resources.", + "type": "object" + }, + "backend": { + "description": "Backend defines the active backend used by Eventing.", + "properties": { + "config": { + "default": { + "natsMaxMsgsPerTopic": 1000000, + "natsStreamMaxSize": "700Mi", + "natsStreamReplicas": 3, + "natsStreamStorageType": "File" + }, + "description": "Config defines configuration for the Eventing backend.", + "properties": { + "domain": { + "description": "Domain defines the cluster public domain used to configure the EventMesh Subscriptions\nand their corresponding ApiRules.", + "pattern": "^(?:([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*)?$", + "type": "string" + }, + "eventMeshSecret": { + "description": "EventMeshSecret defines the namespaced name of the Kubernetes Secret containing EventMesh credentials. The format of name is \"namespace/name\".", + "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", + "type": "string" + }, + "eventTypePrefix": { + "default": "sap.kyma.custom", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "eventTypePrefix cannot be empty", + "rule": "self!=''" + } + ] + }, + "natsMaxMsgsPerTopic": { + "default": 1000000, + "description": "NATSMaxMsgsPerTopic limits how many messages in the NATS stream to retain per subject.", + "type": "integer" + }, + "natsStreamMaxSize": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "default": "700Mi", + "description": "NATSStreamMaxSize defines the maximum storage size for stream data.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "natsStreamReplicas": { + "default": 3, + "description": "NATSStreamReplicas defines the number of replicas for the stream.", + "type": "integer" + }, + "natsStreamStorageType": { + "default": "File", + "description": "NATSStreamStorageType defines the storage type for stream data.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "storage type can only be set to File or Memory", + "rule": "self=='File' || self=='Memory'" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "NATS", + "description": "Type defines which backend to use. The value is either `EventMesh`, or `NATS`.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "backend type can only be set to NATS or EventMesh", + "rule": "self=='NATS' || self=='EventMesh' || self==''" + } + ] + } + }, + "required": [ + "type" + ], + "type": "object", + "x-kubernetes-validations": [ + { + "message": "secret cannot be empty if EventMesh backend is used", + "rule": " (self.type != 'EventMesh') || ((self.type == 'EventMesh') && (self.config.eventMeshSecret != ''))" + } + ] + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels allows to add Labels to resources.", + "type": "object" + }, + "logging": { + "default": { + "logLevel": "Info" + }, + "description": "Logging defines the log level for eventing-manager.", + "properties": { + "logLevel": { + "default": "Info", + "description": "LogLevel defines the log level.", + "type": "string", + "x-kubernetes-validations": [ + { + "message": "logLevel can only be set to Debug, Info, Warn or Error", + "rule": "self=='Info' || self=='Warn' || self=='Error' || self=='Debug'" + } + ] + } + }, + "type": "object" + }, + "publisher": { + "default": { + "replicas": { + "max": 2, + "min": 2 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + } + }, + "description": "Publisher defines the configurations for eventing-publisher-proxy.", + "properties": { + "replicas": { + "default": { + "max": 2, + "min": 2 + }, + "description": "Replicas defines the scaling min/max for eventing-publisher-proxy.", + "properties": { + "max": { + "default": 2, + "description": "Max defines maximum number of replicas.", + "type": "integer" + }, + "min": { + "default": 2, + "description": "Min defines minimum number of replicas.", + "minimum": 0, + "type": "integer" + } + }, + "type": "object", + "x-kubernetes-validations": [ + { + "message": "min value must be smaller than the max value", + "rule": "self.min <= self.max" + } + ] + }, + "resources": { + "default": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "40m", + "memory": "256Mi" + } + }, + "description": "Resources defines resources for eventing-publisher-proxy.", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "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.\nMore info: 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.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object", + "x-kubernetes-validations": [ { - "name": "CRD_NAME", - "value": "subscriptions.eventing.kyma-project.io" + "message": "backend config cannot be deleted", + "rule": "!(oldSelf!=null && has(oldSelf.backend)) || has(self.backend)" + } + ] + }, + "status": { + "description": "EventingStatus defines the observed state of Eventing.", + "properties": { + "activeBackend": { + "type": "string" + }, + "conditions": { + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", + "maxLength": 32768, + "type": "string" + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], + "type": "string" + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" + } + }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object" + }, + "type": "array" }, - { - "name": "SECRET_NAME", - "value": "eventing-manager-webhook-server-cert" + "publisherService": { + "type": "string" + }, + "specHash": { + "format": "int64", + "type": "integer" + }, + "state": { + "description": "Defines the overall state of the Eventing custom resource.
\n- `Ready` when all the resources managed by the Eventing manager are deployed successfully and the Eventing backend is connected.
\n- `Warning` if there is a user input misconfiguration. The following are examples of user input misconfigurations:
\n  - There is no backend configured.
\n  - The backend is configured to NATS but there is no NATS module installed.
\n  - The backend is configured to EventMesh but there is no valid EventMesh Secret configured.
\n- `Processing` if the resources managed by the Eventing manager are being created or updated.
\n- `Error` if an error occurred while reconciling the Eventing custom resource.", + "type": "string" } + }, + "required": [ + "activeBackend", + "specHash", + "state" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", - "imagePullPolicy": "IfNotPresent", - "name": "api-gateway" + "type": "object" } - ], - "priorityClassName": "eventing-manager-priority-class", - "restartPolicy": "Never", - "serviceAccountName": "eventing-manager-cert-handler" + }, + "type": "object" } + }, + "served": true, + "storage": true, + "subresources": { + "status": {} } } - }, - "schedule": "0 0 * * 0,4" - } - }, - { - "apiVersion": "batch/v1", - "kind": "Job", - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - }, - "labels": { - "app": "eventing-manager-cert-handler", - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager-cert-handler", - "namespace": "kyma-system" - }, - "spec": { - "template": { - "metadata": { - "annotations": { - "sidecar.istio.io/inject": "false" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "CRD_NAME", - "value": "subscriptions.eventing.kyma-project.io" - }, - { - "name": "SECRET_NAME", - "value": "eventing-manager-webhook-server-cert" - } - ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-webhook-certificates:1.7.0", - "imagePullPolicy": "IfNotPresent", - "name": "api-gateway" - } - ], - "priorityClassName": "eventing-manager-priority-class", - "restartPolicy": "Never", - "serviceAccountName": "eventing-manager-cert-handler" - } - } + ] } }, - { - "apiVersion": "admissionregistration.k8s.io/v1", - "kind": "MutatingWebhookConfiguration", - "metadata": { - "creationTimestamp": null, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "subscription-mutating-webhook-configuration" - }, - "webhooks": [ - { - "admissionReviewVersions": [ - "v1" - ], - "clientConfig": { - "service": { - "name": "eventing-manager-webhook-service", - "namespace": "kyma-system", - "path": "/mutate-eventing-kyma-project-io-v1alpha2-subscription" - } - }, - "failurePolicy": "Fail", - "name": "msubscription.kb.io", - "rules": [ - { - "apiGroups": [ - "eventing.kyma-project.io" - ], - "apiVersions": [ - "v1alpha2" - ], - "operations": [ - "CREATE", - "UPDATE" - ], - "resources": [ - "subscriptions" - ] - } - ], - "sideEffects": "None" - } - ] - }, - { - "apiVersion": "admissionregistration.k8s.io/v1", - "kind": "ValidatingWebhookConfiguration", - "metadata": { - "creationTimestamp": null, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "subscription-validating-webhook-configuration" - }, - "webhooks": [ - { - "admissionReviewVersions": [ - "v1" - ], - "clientConfig": { - "service": { - "name": "eventing-manager-webhook-service", - "namespace": "kyma-system", - "path": "/validate-eventing-kyma-project-io-v1alpha2-subscription" - } - }, - "failurePolicy": "Fail", - "name": "vsubscription.kb.io", - "rules": [ - { - "apiGroups": [ - "eventing.kyma-project.io" - ], - "apiVersions": [ - "v1alpha2" - ], - "operations": [ - "CREATE", - "UPDATE" - ], - "resources": [ - "subscriptions" - ] - } - ], - "sideEffects": "None" - } - ] - } - ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.0.2", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing" - }, - { - "version": "1.2.0", - "deploymentYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-manager.yaml", - "crYaml": "https://github.com/kyma-project/eventing-manager/releases/download/1.2.0/eventing-default-cr.yaml", - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "Eventing", - "metadata": { - "labels": { - "app.kubernetes.io/name": "eventing", - "app.kubernetes.io/instance": "eventing", - "app.kubernetes.io/part-of": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager" - }, - "name": "eventing", - "namespace": "kyma-system" - }, - "spec": { - "publisher": { - "replicas": { - "min": 2, - "max": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "64Mi" - } - } - } - } - }, - "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", @@ -27762,43 +26495,35 @@ "app.kubernetes.io/part-of": "Kyma", "control-plane": "eventing-manager" }, - "name": "eventings.operator.kyma-project.io" + "name": "subscriptions.eventing.kyma-project.io" }, "spec": { - "group": "operator.kyma-project.io", + "group": "eventing.kyma-project.io", "names": { - "kind": "Eventing", - "listKind": "EventingList", - "plural": "eventings", - "singular": "eventing" + "kind": "Subscription", + "listKind": "SubscriptionList", + "plural": "subscriptions", + "singular": "subscription" }, "scope": "Namespaced", "versions": [ { "additionalPrinterColumns": [ { - "description": "State of Eventing", - "jsonPath": ".status.state", - "name": "State", - "type": "string" - }, - { - "description": "Type of Eventing backend, either NATS or EventMesh", - "jsonPath": ".spec.backend.type", - "name": "Backend", + "jsonPath": ".status.ready", + "name": "Ready", "type": "string" }, { - "description": "Age of the resource", "jsonPath": ".metadata.creationTimestamp", "name": "Age", "type": "date" } ], - "name": "v1alpha1", + "name": "v1alpha2", "schema": { "openAPIV3Schema": { - "description": "Eventing is the Schema for the eventing API.", + "description": "Subscription is the Schema for the subscriptions API.", "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -27812,373 +26537,1055 @@ "type": "object" }, "spec": { - "default": { - "logging": { - "logLevel": "Info" - }, - "publisher": { - "replicas": { - "max": 2, - "min": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "256Mi" - } - } - } - }, - "description": "EventingSpec defines the desired state of Eventing.", + "description": "Defines the desired state of the Subscription.", "properties": { - "annotations": { + "config": { "additionalProperties": { "type": "string" }, - "description": "Annotations allows to add annotations to resources.", + "default": { + "maxInFlightMessages": "10" + }, + "description": "Map of configuration options that will be applied on the backend.", "type": "object" }, - "backend": { - "description": "Backend defines the active backend used by Eventing.", - "properties": { - "config": { - "default": { - "natsMaxMsgsPerTopic": 1000000, - "natsStreamMaxSize": "700Mi", - "natsStreamReplicas": 3, - "natsStreamStorageType": "File" - }, - "description": "Config defines configuration for the Eventing backend.", - "properties": { - "domain": { - "description": "Domain defines the cluster public domain used to configure the EventMesh Subscriptions\nand their corresponding ApiRules.", - "pattern": "^(?:([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*)?$", - "type": "string" - }, - "eventMeshSecret": { - "description": "EventMeshSecret defines the namespaced name of the Kubernetes Secret containing EventMesh credentials. The format of name is \"namespace/name\".", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", - "type": "string" - }, - "eventTypePrefix": { - "default": "sap.kyma.custom", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "eventTypePrefix cannot be empty", - "rule": "self!=''" - } - ] - }, - "natsMaxMsgsPerTopic": { - "default": 1000000, - "description": "NATSMaxMsgsPerTopic limits how many messages in the NATS stream to retain per subject.", - "type": "integer" - }, - "natsStreamMaxSize": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "default": "700Mi", - "description": "NATSStreamMaxSize defines the maximum storage size for stream data.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "natsStreamReplicas": { - "default": 3, - "description": "NATSStreamReplicas defines the number of replicas for the stream.", - "type": "integer" - }, - "natsStreamStorageType": { - "default": "File", - "description": "NATSStreamStorageType defines the storage type for stream data.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "storage type can only be set to File or Memory", - "rule": "self=='File' || self=='Memory'" - } - ] - } - }, - "type": "object" - }, - "type": { - "default": "NATS", - "description": "Type defines which backend to use. The value is either `EventMesh`, or `NATS`.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "backend type can only be set to NATS or EventMesh", - "rule": "self=='NATS' || self=='EventMesh' || self==''" - } - ] - } - }, - "required": [ - "type" - ], - "type": "object", - "x-kubernetes-validations": [ - { - "message": "secret cannot be empty if EventMesh backend is used", - "rule": " (self.type != 'EventMesh') || ((self.type == 'EventMesh') && (self.config.eventMeshSecret != ''))" - } - ] + "id": { + "description": "Unique identifier of the Subscription, read-only.", + "type": "string" }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels allows to add Labels to resources.", - "type": "object" + "sink": { + "description": "Kubernetes Service that should be used as a target for the events that match the Subscription.\nMust exist in the same Namespace as the Subscription.", + "type": "string" }, - "logging": { - "default": { - "logLevel": "Info" - }, - "description": "Logging defines the log level for eventing-manager.", - "properties": { - "logLevel": { - "default": "Info", - "description": "LogLevel defines the log level.", - "type": "string", - "x-kubernetes-validations": [ - { - "message": "logLevel can only be set to Debug, Info, Warn or Error", - "rule": "self=='Info' || self=='Warn' || self=='Error' || self=='Debug'" - } - ] - } - }, - "type": "object" + "source": { + "description": "Defines the origin of the event.", + "type": "string" }, - "publisher": { - "default": { - "replicas": { - "max": 2, - "min": 2 - }, - "resources": { - "limits": { - "cpu": "500m", - "memory": "512Mi" - }, - "requests": { - "cpu": "40m", - "memory": "256Mi" - } - } + "typeMatching": { + "default": "standard", + "description": "Defines how types should be handled.
\n- `standard`: backend-specific logic will be applied to the configured source and types.
\n- `exact`: no further processing will be applied to the configured source and types.", + "type": "string" + }, + "types": { + "description": "List of event types that will be used for subscribing on the backend.", + "items": { + "type": "string" }, - "description": "Publisher defines the configurations for eventing-publisher-proxy.", + "type": "array" + } + }, + "required": [ + "sink", + "source", + "types" + ], + "type": "object" + }, + "status": { + "description": "SubscriptionStatus defines the observed state of Subscription.", + "properties": { + "backend": { + "description": "Backend-specific status which is applicable to the active backend only.", "properties": { - "replicas": { - "default": { - "max": 2, - "min": 2 - }, - "description": "Replicas defines the scaling min/max for eventing-publisher-proxy.", - "properties": { - "max": { - "default": 2, - "description": "Max defines maximum number of replicas.", - "type": "integer" - }, - "min": { - "default": 2, - "description": "Min defines minimum number of replicas.", - "minimum": 0, - "type": "integer" - } - }, - "type": "object", - "x-kubernetes-validations": [ - { - "message": "min value must be smaller than the max value", - "rule": "self.min <= self.max" - } - ] + "apiRuleName": { + "description": "Name of the APIRule which is used by the Subscription.", + "type": "string" }, - "resources": { - "default": { - "limits": { - "cpu": "500m", - "memory": "512Mi" + "emsSubscriptionStatus": { + "description": "Status of the Subscription as reported by EventMesh.", + "properties": { + "lastFailedDelivery": { + "description": "Timestamp of the last failed delivery.", + "type": "string" }, - "requests": { - "cpu": "40m", - "memory": "256Mi" + "lastFailedDeliveryReason": { + "description": "Reason for the last failed delivery.", + "type": "string" + }, + "lastSuccessfulDelivery": { + "description": "Timestamp of the last successful delivery.", + "type": "string" + }, + "status": { + "description": "Status of the Subscription as reported by the backend.", + "type": "string" + }, + "statusReason": { + "description": "Reason for the current status.", + "type": "string" } }, - "description": "Resources defines resources for eventing-publisher-proxy.", - "properties": { - "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers.", - "items": { - "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", - "properties": { - "name": { - "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" + "type": "object" + }, + "emsTypes": { + "description": "List of mappings from event type to EventMesh compatible types. Used only with EventMesh as the backend.", + "items": { + "properties": { + "eventMeshType": { + "description": "Event type that is used on the EventMesh backend.", + "type": "string" }, - "type": "array", - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" + "originalType": { + "description": "Event type that was originally used to subscribe.", + "type": "string" + } }, - "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 + "required": [ + "eventMeshType", + "originalType" + ], + "type": "object" + }, + "type": "array" + }, + "emshash": { + "description": "Hash used to identify an EventMesh Subscription retrieved from the server without the WebhookAuth config.", + "format": "int64", + "type": "integer" + }, + "ev2hash": { + "description": "Checksum for the Subscription custom resource.", + "format": "int64", + "type": "integer" + }, + "eventMeshLocalHash": { + "description": "Hash used to identify an EventMesh Subscription posted to the server without the WebhookAuth config.", + "format": "int64", + "type": "integer" + }, + "externalSink": { + "description": "Webhook URL used by EventMesh to trigger subscribers.", + "type": "string" + }, + "failedActivation": { + "description": "Provides the reason if a Subscription failed activation in EventMesh.", + "type": "string" + }, + "types": { + "description": "List of event type to consumer name mappings for the NATS backend.", + "items": { + "properties": { + "consumerName": { + "description": "Name of the JetStream consumer created for the event type.", + "type": "string" }, - "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" + "originalType": { + "description": "Event type that was originally used to subscribe.", + "type": "string" + } }, - "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.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "type": "object" - } + "required": [ + "originalType" + ], + "type": "object" }, - "type": "object" + "type": "array" + }, + "webhookAuthHash": { + "description": "Hash used to identify the WebhookAuth of an EventMesh Subscription existing on the server.", + "format": "int64", + "type": "integer" } }, "type": "object" + }, + "conditions": { + "description": "Current state of the Subscription.", + "items": { + "properties": { + "lastTransitionTime": { + "description": "Defines the date of the last condition status change.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "Provides more details about the condition status change.", + "type": "string" + }, + "reason": { + "description": "Defines the reason for the condition status change.", + "type": "string" + }, + "status": { + "description": "Status of the condition. The value is either `True`, `False`, or `Unknown`.", + "type": "string" + }, + "type": { + "description": "Short description of the condition.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "ready": { + "description": "Overall readiness of the Subscription.", + "type": "boolean" + }, + "types": { + "description": "List of event types after cleanup for use with the configured backend.", + "items": { + "properties": { + "cleanType": { + "description": "Event type after it was cleaned up from backend compatible characters.", + "type": "string" + }, + "originalType": { + "description": "Event type as specified in the Subscription spec.", + "type": "string" + } + }, + "required": [ + "cleanType", + "originalType" + ], + "type": "object" + }, + "type": "array" } }, - "type": "object", - "x-kubernetes-validations": [ - { - "message": "backend config cannot be deleted", - "rule": "!(oldSelf!=null && has(oldSelf.backend)) || has(self.backend)" + "required": [ + "ready", + "types" + ], + "type": "object" + } + }, + "type": "object" + } + }, + "served": true, + "storage": true, + "subresources": { + "status": {} + } + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "mutatingwebhookconfigurations" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingwebhookconfigurations" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apiextensions.k8s.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "applicationconnector.kyma-project.io" + ], + "resources": [ + "applications" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "resources": [ + "subscriptions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "eventing.kyma-project.io" + ], + "resources": [ + "subscriptions/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "gateway.kyma-project.io" + ], + "resources": [ + "apirules" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "eventings/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "operator.kyma-project.io" + ], + "resources": [ + "nats" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterrolebindings" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "security.istio.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "security.istio.io" + ], + "resources": [ + "peerauthentications" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "eventing-manager" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "eventing-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: State\n source: status.state\n widget: Badge\n\nbody:\n - name: Conditions\n source: status.conditions\n widget: Table\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n - source: \"'NATS unavailable: If you chose the NATS backend, you must enable the NATS module.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'NATSUnavailable'])\"\n - source: \"'No backend: If you enable the Eventing module, you must configure a backend.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'BackendNotSpecified'])\"\n - name: Events\n widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n defaultType: information\n", + "form": "- path: spec.backend.type\n name: Backend Type\n widget: FormGroup\n defaultExpanded: true\n enum:\n - NATS\n - EventMesh\n description: Choose a backend type from the dropdown.\n\n- simple: true\n widget: Alert\n severity: info\n alert: \"'If you choose the NATS backend, you must enable the NATS module.'\"\n visibility: \"spec.backend.type = 'NATS'\"\n\n- path: spec.backend.config.eventMeshSecret\n visibility: \"spec.backend.type = 'EventMesh'\"\n widget: ResourceRef\n defaultExpanded: false\n resource:\n kind: Secret\n version: v1\n toInternal: |\n (\n $values := $split($, '/');\n { 'namespace': $values[0], 'name': $values[1] }\n )\n toExternal: namespace & '/' & name\n\n- path: spec.publisher.replicas\n name: Publisher Replicas\n widget: FormGroup\n defaultExpanded: false\n children:\n - path: max\n - path: min\n", + "general": "resource:\n kind: Eventing\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: eventings\ncategory: Kyma\nname: Eventing\nscope: namespace\nfeatures:\n actions:\n disableCreate: false\n disableDelete: false\ndescription: >-\n {{[Eventing CR](https://github.com/kyma-project/eventing-manager/blob/main/config/samples/default.yaml)}}\n specifies eventing module.\n", + "list": "- name: State\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5", + "control-plane": "eventing-manager" + }, + "name": "eventings.operator.kyma-project.io", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message\n - name: spec.typeMatching\n source: spec.typeMatching\n - name: spec.source\n source: spec.source\n - name: spec.sink\n source: spec.sink\n widget: ResourceLink\n resource:\n name: '$substringBefore($substringAfter(spec.sink, \"http://\"), \".\")'\n namespace: $root.metadata.namespace\n kind: \"'Service'\"\nbody:\n - source: status.conditions\n widget: Table\n name: status.conditions\n children:\n - source: '$item.type'\n name: status.conditions.type\n - source: '$item.status'\n widget: Badge\n name: status.conditions.status\n - source: '$item.reason'\n name: status.conditions.reason\n - source: '$item.message'\n name: status.conditions.message\n - source: '$readableTimestamp($item.lastTransitionTime)'\n name: status.conditions.lastTransitionTime\n - name: spec.types\n source: spec.types\n widget: Table\n children:\n - name: Type\n search: true\n source: '$item'\n sort: false\n - widget: EventList\n filter: \"$matchEvents($$, $root.kind, $root.metadata.name)\"\n name: events\n defaultType: NORMAL\n hideInvolvedObjects: true", + "form": "- path: spec.config\n widget: KeyValuePair\n defaultExpanded: false\n- path: spec.types\n simple: true\n widget: SimpleList\n defaultExpanded: true\n children:\n - path: '[]'\n simple: true\n- simple: true\n type: string\n var: service\n name: Service\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [sink]\n- path: spec.sink\n name: spec.sink\n simple: true\n inputInfo: inputInfo.sink\n placeholder: placeholder.sink\n subscribe:\n sink: '\"http://\" & $service & \".\" & $root.metadata.namespace & \".svc.cluster.local\"'\n- path: spec.typeMatching\n simple: true\n enum:\n - standard\n - exact\n required: true\n- path: spec.source\n name: spec.source\n simple: true\n required: true\n visibility: \"spec.typeMatching = 'standard'\"\n widget: Resource\n resource:\n kind: Application\n group: applicationconnector.kyma-project.io\n version: v1alpha1", + "general": "resource:\n kind: Subscription\n group: eventing.kyma-project.io\n version: v1alpha2\nname: Subscriptions\ncategory: Configuration\nscope: namespace\ndescription: >-\n {{\"{{[Subscription](https://kyma-project.io/docs/kyma/latest/05-technical-reference/00-custom-resources/evnt-01-subscription#documentation-content)}}\"}} is used to subscribe to events.\nurlPath: subscriptions", + "list": "- name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message", + "presets": "- name: Default Type Matching\n default: true\n value:\n spec:\n typeMatching: standard", + "translations": "en:\n inputInfo.sink: Sink structure, 'http://{SERVICE}.{NAMESPACE}.svc.cluster.local'\n inputInfo.eventType: Event Type structure, 'sap.kyma.custom.{APP}.{EVENT.NAME}.{VERSION}'\n events: Events\n placeholder.eventType: Enter the event type, for example, sap.kyma.custom.test-app.order.cancelled.v1\n placeholder.sink: Enter the sink, for example, http://service.default.svc.cluster.local\n spec.filters: Filters\n spec.filter.eventType: Event Type\n spec.filter.eventSource: Event Source\n spec.filter.event.property: Property\n spec.filter.event.type: Type\n spec.filter.event.value: Value\n spec.types: Types\n spec.source: Source\n spec.typeMatching: Type Matching\n spec.sink: Sink\n spec.service: Service\n spec.sink.controlledBy: Controlled By\n status.cleanEventTypes: Event Types\n status.conditions: Conditions\n status.conditions.lastTransitionTime: Last Transition\n status.conditions.reason: Reason\n status.conditions.status: Status\n status.conditions.type: Type\n status.conditions.message: Message\n status.type: Type" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5", + "control-plane": "eventing-manager" + }, + "name": "subscriptions", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-health", + "namespace": "kyma-system" + }, + "spec": { + "ports": [ + { + "name": "http-status", + "port": 15020, + "protocol": "TCP", + "targetPort": 15020 + } + ], + "selector": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + }, + "type": "ClusterIP" + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "annotations": { + "prometheus.io/port": "8080", + "prometheus.io/scheme": "http", + "prometheus.io/scrape": "true" + }, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-metrics", + "namespace": "kyma-system" + }, + "spec": { + "ports": [ + { + "name": "http-metrics", + "port": 80, + "protocol": "TCP", + "targetPort": 8080 + } + ], + "selector": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + }, + "type": "ClusterIP" + } + }, + { + "apiVersion": "scheduling.k8s.io/v1", + "description": "Scheduling priority of the Eventing-Manager module. Must not be blocked by unschedulable user workloads.", + "globalDefault": false, + "kind": "PriorityClass", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager-priority-class" + }, + "value": 2000000 + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/created-by": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "eventing-manager", + "app.kubernetes.io/part-of": "Kyma", + "control-plane": "eventing-manager" + }, + "name": "eventing-manager", + "namespace": "kyma-system" + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + } + }, + "template": { + "metadata": { + "annotations": { + "kubectl.kubernetes.io/default-container": "manager", + "traffic.sidecar.istio.io/excludeInboundPorts": "9443" + }, + "labels": { + "app.kubernetes.io/component": "eventing-manager", + "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/name": "eventing-manager", + "control-plane": "eventing-manager" + } + }, + "spec": { + "containers": [ + { + "command": [ + "/manager" + ], + "env": [ + { + "name": "NAMESPACE", + "valueFrom": { + "fieldRef": { + "fieldPath": "metadata.namespace" } - ] + } }, - "status": { - "description": "EventingStatus defines the observed state of Eventing.", - "properties": { - "activeBackend": { - "type": "string" - }, - "conditions": { - "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}", - "properties": { - "lastTransitionTime": { - "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", - "format": "date-time", - "type": "string" - }, - "message": { - "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", - "maxLength": 32768, - "type": "string" - }, - "observedGeneration": { - "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "reason": { - "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", - "type": "string" - }, - "status": { - "description": "status of the condition, one of True, False, Unknown.", - "enum": [ - "True", - "False", - "Unknown" - ], - "type": "string" - }, - "type": { - "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", - "maxLength": 316, - "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", - "type": "string" - } - }, - "required": [ - "lastTransitionTime", - "message", - "reason", - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "publisherService": { - "type": "string" - }, - "specHash": { - "format": "int64", - "type": "integer" - }, - "state": { - "description": "Defines the overall state of the Eventing custom resource.
\n- `Ready` when all the resources managed by the Eventing manager are deployed successfully and the Eventing backend is connected.
\n- `Warning` if there is a user input misconfiguration. The following are examples of user input misconfigurations:
\n  - There is no backend configured.
\n  - The backend is configured to NATS but there is no NATS module installed.
\n  - The backend is configured to EventMesh but there is no valid EventMesh Secret configured.
\n- `Processing` if the resources managed by the Eventing manager are being created or updated.
\n- `Error` if an error occurred while reconciling the Eventing custom resource.", - "type": "string" - } - }, - "required": [ - "activeBackend", - "specHash", - "state" - ], - "type": "object" + { + "name": "EVENTING_CR_NAME", + "value": "eventing" + }, + { + "name": "EVENTING_CR_NAMESPACE", + "value": "kyma-system" + }, + { + "name": "NATS_URL", + "value": "eventing-nats.kyma-system.svc.cluster.local" + }, + { + "name": "PUBLISHER_REQUESTS_CPU", + "value": "10m" + }, + { + "name": "PUBLISHER_REQUESTS_MEMORY", + "value": "64Mi" + }, + { + "name": "PUBLISHER_LIMITS_CPU", + "value": "100m" + }, + { + "name": "PUBLISHER_LIMITS_MEMORY", + "value": "128Mi" + }, + { + "name": "PUBLISHER_IMAGE", + "value": "europe-docker.pkg.dev/kyma-project/prod/eventing-publisher-proxy:1.0.1" + }, + { + "name": "PUBLISHER_IMAGE_PULL_POLICY", + "value": "IfNotPresent" + }, + { + "name": "PUBLISHER_REPLICAS", + "value": "1" + }, + { + "name": "PUBLISHER_REQUEST_TIMEOUT", + "value": "10s" + }, + { + "name": "DEFAULT_MAX_IN_FLIGHT_MESSAGES", + "value": "10" + }, + { + "name": "DEFAULT_DISPATCHER_RETRY_PERIOD", + "value": "5m" + }, + { + "name": "DEFAULT_DISPATCHER_MAX_RETRIES", + "value": "10" + }, + { + "name": "APP_LOG_FORMAT", + "value": "json" + }, + { + "name": "APP_LOG_LEVEL", + "value": "info" + }, + { + "name": "JS_STREAM_NAME", + "value": "sap" + }, + { + "name": "JS_STREAM_SUBJECT_PREFIX", + "value": "kyma" + }, + { + "name": "JS_STREAM_STORAGE_TYPE", + "value": "file" + }, + { + "name": "JS_STREAM_REPLICAS", + "value": "1" + }, + { + "name": "JS_STREAM_DISCARD_POLICY", + "value": "new" + }, + { + "name": "JS_STREAM_RETENTION_POLICY", + "value": "interest" + }, + { + "name": "JS_CONSUMER_DELIVER_POLICY", + "value": "new" + }, + { + "name": "JS_STREAM_MAX_MSGS", + "value": "-1" + }, + { + "name": "JS_STREAM_MAX_BYTES", + "value": "700Mi" + }, + { + "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAME", + "value": "eventing-webhook-auth" + }, + { + "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAMESPACE", + "value": "kyma-system" + } + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", + "imagePullPolicy": "Always", + "livenessProbe": { + "httpGet": { + "path": "/healthz", + "port": 8081 + }, + "initialDelaySeconds": 15, + "periodSeconds": 20 + }, + "name": "manager", + "readinessProbe": { + "httpGet": { + "path": "/readyz", + "port": 8081 + }, + "initialDelaySeconds": 5, + "periodSeconds": 10 + }, + "resources": { + "limits": { + "cpu": "500m", + "memory": "512Mi" + }, + "requests": { + "cpu": "10m", + "memory": "128Mi" } }, - "type": "object" + "securityContext": { + "allowPrivilegeEscalation": false, + "capabilities": { + "drop": [ + "ALL" + ] + } + } + } + ], + "priorityClassName": "eventing-manager-priority-class", + "securityContext": { + "fsGroup": 10001, + "runAsGroup": 10001, + "runAsNonRoot": true, + "runAsUser": 10001, + "seccompProfile": { + "type": "RuntimeDefault" } }, - "served": true, - "storage": true, - "subresources": { - "status": {} - } + "serviceAccountName": "eventing-manager", + "terminationGracePeriodSeconds": 10 } - ] + } + } + } + ], + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing", + "channels": [ + "fast", + "regular" + ], + "documentation": "https://kyma-project.io/#/eventing-manager/user/README", + "repository": "https://github.com/kyma-project/eventing-manager.git" + } + ] + }, + { + "name": "application-connector", + "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", + "repository": "https://github.com/kyma-project/application-connector-manager.git", + "manageable": true, + "managedResources": [ + "/apis/operator.kyma-project.io/v1alpha1/applicationconnectors" + ], + "latestGithubRelease": { + "repository": "kyma-project/application-connector-manager", + "deploymentYaml": "application-connector-manager.yaml", + "crYaml": "default_application_connector_cr.yaml" + }, + "versions": [ + { + "version": "1.1.3", + "channels": [ + "experimental" + ], + "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", + "repository": "https://github.com/kyma-project/application-connector-manager.git", + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "resources": [ + { + "apiVersion": "v1", + "kind": "Namespace", + "metadata": { + "labels": { + "app.kubernetes.io/component": "manager", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "system", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "namespace", + "app.kubernetes.io/part-of": "application-connector-manager", + "control-plane": "controller-manager" + }, + "name": "kyma-system" } }, { @@ -28186,273 +27593,177 @@ "kind": "CustomResourceDefinition", "metadata": { "annotations": { - "controller-gen.kubebuilder.io/version": "v0.14.0" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "controller-gen.kubebuilder.io/version": "v0.10.0" }, - "name": "subscriptions.eventing.kyma-project.io" + "creationTimestamp": null, + "name": "applicationconnectors.operator.kyma-project.io" }, "spec": { - "group": "eventing.kyma-project.io", + "group": "operator.kyma-project.io", "names": { - "kind": "Subscription", - "listKind": "SubscriptionList", - "plural": "subscriptions", - "singular": "subscription" + "kind": "ApplicationConnector", + "listKind": "ApplicationConnectorList", + "plural": "applicationconnectors", + "singular": "applicationconnector" }, "scope": "Namespaced", "versions": [ { - "additionalPrinterColumns": [ - { - "jsonPath": ".status.ready", - "name": "Ready", - "type": "string" - }, - { - "jsonPath": ".metadata.creationTimestamp", - "name": "Age", - "type": "date" - } - ], - "name": "v1alpha2", + "name": "v1alpha1", "schema": { "openAPIV3Schema": { - "description": "Subscription is the Schema for the subscriptions API.", + "description": "ApplicationConnector is the Schema for the applicationconnectors API", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "type": "object" }, "spec": { - "description": "Defines the desired state of the Subscription.", "properties": { - "config": { - "additionalProperties": { - "type": "string" - }, + "appConnValidator": { "default": { - "maxInFlightMessages": "10" - }, - "description": "Map of configuration options that will be applied on the backend.", - "type": "object" - }, - "id": { - "description": "Unique identifier of the Subscription, read-only.", - "type": "string" - }, - "sink": { - "description": "Kubernetes Service that should be used as a target for the events that match the Subscription.\nMust exist in the same Namespace as the Subscription.", - "type": "string" - }, - "source": { - "description": "Defines the origin of the event.", - "type": "string" - }, - "typeMatching": { - "default": "standard", - "description": "Defines how types should be handled.
\n- `standard`: backend-specific logic will be applied to the configured source and types.
\n- `exact`: no further processing will be applied to the configured source and types.", - "type": "string" - }, - "types": { - "description": "List of event types that will be used for subscribing on the backend.", - "items": { - "type": "string" + "logFormat": "json", + "logLevel": "info" }, - "type": "array" - } - }, - "required": [ - "sink", - "source", - "types" - ], - "type": "object" - }, - "status": { - "description": "SubscriptionStatus defines the observed state of Subscription.", - "properties": { - "backend": { - "description": "Backend-specific status which is applicable to the active backend only.", "properties": { - "apiRuleName": { - "description": "Name of the APIRule which is used by the Subscription.", - "type": "string" - }, - "emsSubscriptionStatus": { - "description": "Status of the Subscription as reported by EventMesh.", - "properties": { - "lastFailedDelivery": { - "description": "Timestamp of the last failed delivery.", - "type": "string" - }, - "lastFailedDeliveryReason": { - "description": "Reason for the last failed delivery.", - "type": "string" - }, - "lastSuccessfulDelivery": { - "description": "Timestamp of the last successful delivery.", - "type": "string" - }, - "status": { - "description": "Status of the Subscription as reported by the backend.", - "type": "string" - }, - "statusReason": { - "description": "Reason for the current status.", - "type": "string" - } - }, - "type": "object" - }, - "emsTypes": { - "description": "List of mappings from event type to EventMesh compatible types. Used only with EventMesh as the backend.", - "items": { - "properties": { - "eventMeshType": { - "description": "Event type that is used on the EventMesh backend.", - "type": "string" - }, - "originalType": { - "description": "Event type that was originally used to subscribe.", - "type": "string" - } - }, - "required": [ - "eventMeshType", - "originalType" - ], - "type": "object" - }, - "type": "array" - }, - "emshash": { - "description": "Hash used to identify an EventMesh Subscription retrieved from the server without the WebhookAuth config.", - "format": "int64", - "type": "integer" - }, - "ev2hash": { - "description": "Checksum for the Subscription custom resource.", - "format": "int64", - "type": "integer" - }, - "eventMeshLocalHash": { - "description": "Hash used to identify an EventMesh Subscription posted to the server without the WebhookAuth config.", - "format": "int64", - "type": "integer" - }, - "externalSink": { - "description": "Webhook URL used by EventMesh to trigger subscribers.", + "logFormat": { + "enum": [ + "json", + "text" + ], "type": "string" }, - "failedActivation": { - "description": "Provides the reason if a Subscription failed activation in EventMesh.", + "logLevel": { + "enum": [ + "debug", + "panic", + "fatal", + "error", + "warn", + "info", + "debug" + ], + "type": "string" + } + }, + "required": [ + "logFormat", + "logLevel" + ], + "type": "object" + }, + "appGateway": { + "default": { + "logLevel": "info", + "proxyTimeout": "10s", + "requestTimeout": "10s" + }, + "properties": { + "logLevel": { + "enum": [ + "debug", + "panic", + "fatal", + "error", + "warn", + "info", + "debug" + ], "type": "string" }, - "types": { - "description": "List of event type to consumer name mappings for the NATS backend.", - "items": { - "properties": { - "consumerName": { - "description": "Name of the JetStream consumer created for the event type.", - "type": "string" - }, - "originalType": { - "description": "Event type that was originally used to subscribe.", - "type": "string" - } - }, - "required": [ - "originalType" - ], - "type": "object" - }, - "type": "array" + "proxyTimeout": { + "type": "string" }, - "webhookAuthHash": { - "description": "Hash used to identify the WebhookAuth of an EventMesh Subscription existing on the server.", - "format": "int64", - "type": "integer" + "requestTimeout": { + "type": "string" } }, + "required": [ + "logLevel", + "proxyTimeout", + "requestTimeout" + ], "type": "object" }, + "domainName": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "properties": { "conditions": { - "description": "Current state of the Subscription.", "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { - "description": "Defines the date of the last condition status change.", + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "Provides more details about the condition status change.", + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "maxLength": 32768, "type": "string" }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, "reason": { - "description": "Defines the reason for the condition status change.", + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string" }, "status": { - "description": "Status of the condition. The value is either `True`, `False`, or `Unknown`.", + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], "type": "string" }, "type": { - "description": "Short description of the condition.", + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string" } }, "required": [ - "status" + "lastTransitionTime", + "message", + "reason", + "status", + "type" ], "type": "object" }, "type": "array" }, - "ready": { - "description": "Overall readiness of the Subscription.", - "type": "boolean" + "served": { + "type": "string" }, - "types": { - "description": "List of event types after cleanup for use with the configured backend.", - "items": { - "properties": { - "cleanType": { - "description": "Event type after it was cleaned up from backend compatible characters.", - "type": "string" - }, - "originalType": { - "description": "Event type as specified in the Subscription spec.", - "type": "string" - } - }, - "required": [ - "cleanType", - "originalType" - ], - "type": "object" - }, - "type": "array" + "state": { + "type": "string" } }, "required": [ - "ready", - "types" + "served", + "state" ], "type": "object" } @@ -28474,32 +27785,31 @@ "kind": "ServiceAccount", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "controller-manager-sa", "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "application-connector-manager" }, - "name": "eventing-manager", + "name": "application-connector-controller-manager", "namespace": "kyma-system" } }, { "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", + "kind": "Role", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "leader-election-role", + "app.kubernetes.io/name": "role", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kubernets.io/managed-by": "kustomize" }, - "name": "eventing-manager" + "name": "application-connector-leader-election-role", + "namespace": "kyma-system" }, "rules": [ { @@ -28510,13 +27820,30 @@ "configmaps" ], "verbs": [ - "create", - "delete", "get", "list", + "watch", + "create", + "update", "patch", + "delete" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "watch", + "create", "update", - "watch" + "patch", + "delete" ] }, { @@ -28530,20 +27857,29 @@ "create", "patch" ] - }, + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": null, + "name": "application-connector-manager-role" + }, + "rules": [ { "apiGroups": [ "" ], "resources": [ - "secrets" + "configmaps" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] @@ -28553,16 +27889,14 @@ "" ], "resources": [ - "serviceaccounts" + "limitranges" ], "verbs": [ "create", "delete", "get", "list", - "patch", - "update", - "watch" + "update" ] }, { @@ -28570,71 +27904,83 @@ "" ], "resources": [ - "services" + "namespaces" ], "verbs": [ "create", - "delete", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ "get", - "list", - "patch", - "update", - "watch" + "list" ] }, { "apiGroups": [ - "admissionregistration.k8s.io" + "" ], "resources": [ - "mutatingwebhookconfigurations" + "persistentvolumes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" ], "verbs": [ - "create", - "delete", "get", "list", - "patch", - "update", - "watch" + "patch" ] }, { "apiGroups": [ - "admissionregistration.k8s.io" + "" + ], + "resourceNames": [ + "cluster-client-certificates", + "compass-agent-configuration" ], "resources": [ - "validatingwebhookconfigurations" + "secrets" ], "verbs": [ - "create", "delete", - "get", - "list", - "patch", - "update", - "watch" + "get" ] }, { "apiGroups": [ - "apiextensions.k8s.io" + "" ], "resources": [ - "customresourcedefinitions" + "serviceaccounts" ], "verbs": [ - "get", - "list", - "watch" + "*" ] }, { "apiGroups": [ - "applicationconnector.kyma-project.io" + "" ], "resources": [ - "applications" + "services" ], "verbs": [ "create", @@ -28648,27 +27994,26 @@ }, { "apiGroups": [ - "apps" + "*" ], "resources": [ - "deployments" + "secrets" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] }, { "apiGroups": [ - "autoscaling" + "apiextensions.k8s.io" ], "resources": [ - "horizontalpodautoscalers" + "customresourcedefinitions" ], "verbs": [ "create", @@ -28676,63 +28021,61 @@ "get", "list", "patch", - "update", "watch" ] }, { "apiGroups": [ - "eventing.kyma-project.io" + "applicationconnector.kyma-project.io" ], "resources": [ - "subscriptions" + "applications" ], "verbs": [ "create", "delete", "get", "list", - "patch", "update", "watch" ] }, { "apiGroups": [ - "eventing.kyma-project.io" + "apps" ], "resources": [ - "subscriptions/status" + "deployments" ], "verbs": [ + "create", + "delete", "get", + "list", "patch", - "update" + "update", + "watch" ] }, { "apiGroups": [ - "gateway.kyma-project.io" + "apps" ], "resources": [ - "apirules" + "replicasets" ], "verbs": [ - "create", "delete", - "get", "list", - "patch", - "update", "watch" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "autoscaling" ], "resources": [ - "eventings" + "horizontalpodautoscalers" ], "verbs": [ "create", @@ -28746,47 +28089,55 @@ }, { "apiGroups": [ - "operator.kyma-project.io" + "compass.kyma-project.io" ], "resources": [ - "eventings/finalizers" + "compassconnections" ], "verbs": [ - "update" + "create", + "delete", + "get", + "list", + "update", + "watch" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "metrics.k8s.io" ], "resources": [ - "eventings/status" + "nodes" ], "verbs": [ "get", - "patch", - "update" + "list" ] }, { "apiGroups": [ - "operator.kyma-project.io" + "networking.istio.io" ], "resources": [ - "nats" + "gateways" ], "verbs": [ + "create", + "delete", "get", "list", + "patch", + "update", "watch" ] }, { "apiGroups": [ - "rbac.authorization.k8s.io" + "networking.istio.io" ], "resources": [ - "clusterrolebindings" + "virtualservices" ], "verbs": [ "create", @@ -28800,10 +28151,10 @@ }, { "apiGroups": [ - "rbac.authorization.k8s.io" + "operator.kyma-project.io" ], "resources": [ - "clusterroles" + "applicationconnectors" ], "verbs": [ "create", @@ -28817,373 +28168,209 @@ }, { "apiGroups": [ - "security.istio.io" + "operator.kyma-project.io" ], "resources": [ - "customresourcedefinitions" + "applicationconnectors/finalizers" ], "verbs": [ - "get", - "list", - "watch" + "update" ] }, { "apiGroups": [ - "security.istio.io" + "operator.kyma-project.io" ], "resources": [ - "peerauthentications" + "applicationconnectors/status" ], "verbs": [ - "create", - "delete", "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "eventing-manager" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "eventing-manager", - "namespace": "kyma-system" - } - ] - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n - name: State\n source: status.state\n widget: Badge\n\nbody:\n - name: Conditions\n source: status.conditions\n widget: Table\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n - source: \"'NATS unavailable: If you chose the NATS backend, you must enable the NATS module.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'NATSUnavailable'])\"\n - source: \"'No backend: If you enable the Eventing module, you must configure a backend.'\"\n widget: Alert\n severity: warning\n visibility: \"$exists(status.conditions[reason = 'BackendNotSpecified'])\"\n - name: Events\n widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n defaultType: information\n", - "form": "- path: spec.backend.type\n name: Backend Type\n widget: FormGroup\n defaultExpanded: true\n enum:\n - NATS\n - EventMesh\n description: Choose a backend type from the dropdown.\n\n- simple: true\n widget: Alert\n severity: info\n alert: \"'If you choose the NATS backend, you must enable the NATS module.'\"\n visibility: \"spec.backend.type = 'NATS'\"\n\n- path: spec.backend.config.eventMeshSecret\n visibility: \"spec.backend.type = 'EventMesh'\"\n widget: ResourceRef\n defaultExpanded: false\n resource:\n kind: Secret\n version: v1\n toInternal: |\n (\n $values := $split($, '/');\n { 'namespace': $values[0], 'name': $values[1] }\n )\n toExternal: namespace & '/' & name\n\n- path: spec.publisher.replicas\n name: Publisher Replicas\n widget: FormGroup\n defaultExpanded: false\n children:\n - path: max\n - path: min\n", - "general": "resource:\n kind: Eventing\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: eventings\ncategory: Kyma\nname: Eventing\nscope: namespace\nfeatures:\n actions:\n disableCreate: false\n disableDelete: false\ndescription: >-\n {{[Eventing CR](https://github.com/kyma-project/eventing-manager/blob/main/config/samples/default.yaml)}}\n specifies eventing module.\n", - "list": "- name: State\n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "control-plane": "eventing-manager" - }, - "name": "eventings.operator.kyma-project.io", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "data": { - "details": "header:\n - name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message\n - name: spec.typeMatching\n source: spec.typeMatching\n - name: spec.source\n source: spec.source\n - name: spec.sink\n source: spec.sink\n widget: ResourceLink\n resource:\n name: '$substringBefore($substringAfter(spec.sink, \"http://\"), \".\")'\n namespace: $root.metadata.namespace\n kind: \"'Service'\"\nbody:\n - source: status.conditions\n widget: Table\n name: status.conditions\n children:\n - source: '$item.type'\n name: status.conditions.type\n - source: '$item.status'\n widget: Badge\n name: status.conditions.status\n - source: '$item.reason'\n name: status.conditions.reason\n - source: '$item.message'\n name: status.conditions.message\n - source: '$readableTimestamp($item.lastTransitionTime)'\n name: status.conditions.lastTransitionTime\n - name: spec.types\n source: spec.types\n widget: Table\n children:\n - name: Type\n search: true\n source: '$item'\n sort: false\n - widget: EventList\n filter: \"$matchEvents($$, $root.kind, $root.metadata.name)\"\n name: events\n defaultType: NORMAL\n hideInvolvedObjects: true", - "form": "- path: spec.config\n widget: KeyValuePair\n defaultExpanded: false\n- path: spec.types\n simple: true\n widget: SimpleList\n defaultExpanded: true\n children:\n - path: '[]'\n simple: true\n- simple: true\n type: string\n var: service\n name: Service\n widget: Resource\n resource:\n kind: Service\n version: v1\n scope: namespace\n trigger: [sink]\n- path: spec.sink\n name: spec.sink\n simple: true\n inputInfo: inputInfo.sink\n placeholder: placeholder.sink\n subscribe:\n sink: '\"http://\" & $service & \".\" & $root.metadata.namespace & \".svc.cluster.local\"'\n- path: spec.typeMatching\n simple: true\n enum:\n - standard\n - exact\n required: true\n- path: spec.source\n name: spec.source\n simple: true\n required: true\n visibility: \"spec.typeMatching = 'standard'\"\n widget: Resource\n resource:\n kind: Application\n group: applicationconnector.kyma-project.io\n version: v1alpha1", - "general": "resource:\n kind: Subscription\n group: eventing.kyma-project.io\n version: v1alpha2\nname: Subscriptions\ncategory: Configuration\nscope: namespace\ndescription: >-\n {{\"{{[Subscription](https://kyma-project.io/docs/kyma/latest/05-technical-reference/00-custom-resources/evnt-01-subscription#documentation-content)}}\"}} is used to subscribe to events.\nurlPath: subscriptions", - "list": "- name: status.conditions.status\n source: 'status.ready = false ? \"error\" : \"ready\"'\n widget: Badge\n description: status.conditions.message", - "presets": "- name: Default Type Matching\n default: true\n value:\n spec:\n typeMatching: standard", - "translations": "en:\n inputInfo.sink: Sink structure, 'http://{SERVICE}.{NAMESPACE}.svc.cluster.local'\n inputInfo.eventType: Event Type structure, 'sap.kyma.custom.{APP}.{EVENT.NAME}.{VERSION}'\n events: Events\n placeholder.eventType: Enter the event type, for example, sap.kyma.custom.test-app.order.cancelled.v1\n placeholder.sink: Enter the sink, for example, http://service.default.svc.cluster.local\n spec.filters: Filters\n spec.filter.eventType: Event Type\n spec.filter.eventSource: Event Source\n spec.filter.event.property: Property\n spec.filter.event.type: Type\n spec.filter.event.value: Value\n spec.types: Types\n spec.source: Source\n spec.typeMatching: Type Matching\n spec.sink: Sink\n spec.service: Service\n spec.sink.controlledBy: Controlled By\n status.cleanEventTypes: Event Types\n status.conditions: Conditions\n status.conditions.lastTransitionTime: Last Transition\n status.conditions.reason: Reason\n status.conditions.status: Status\n status.conditions.type: Type\n status.conditions.message: Message\n status.type: Type" - }, - "kind": "ConfigMap", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "busola.io/extension": "resource", - "busola.io/extension-version": "0.5", - "control-plane": "eventing-manager" - }, - "name": "subscriptions", - "namespace": "kyma-system" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager-health", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-status", - "port": 15020, - "protocol": "TCP", - "targetPort": 15020 - } - ], - "selector": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - }, - "type": "ClusterIP" - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "prometheus.io/port": "8080", - "prometheus.io/scheme": "http", - "prometheus.io/scrape": "true" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + "patch", + "update" + ] }, - "name": "eventing-manager-metrics", - "namespace": "kyma-system" - }, - "spec": { - "ports": [ - { - "name": "http-metrics", - "port": 80, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterrolebindings", + "clusterroles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "type": "ClusterIP" - } - }, - { - "apiVersion": "scheduling.k8s.io/v1", - "description": "Scheduling priority of the Eventing-Manager module. Must not be blocked by unschedulable user workloads.", - "globalDefault": false, - "kind": "PriorityClass", - "metadata": { - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] }, - "name": "eventing-manager-priority-class" - }, - "value": 2000000 + { + "apiGroups": [ + "scheduling.k8s.io" + ], + "resources": [ + "priorityclasses" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] }, { - "apiVersion": "apps/v1", - "kind": "Deployment", + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", "metadata": { "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/created-by": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "eventing-manager", - "app.kubernetes.io/part-of": "Kyma", - "control-plane": "eventing-manager" - }, - "name": "eventing-manager", - "namespace": "kyma-system" - }, - "spec": { - "replicas": 1, - "selector": { - "matchLabels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - } - }, - "template": { - "metadata": { - "annotations": { - "kubectl.kubernetes.io/default-container": "manager", - "traffic.sidecar.istio.io/excludeInboundPorts": "9443" - }, - "labels": { - "app.kubernetes.io/component": "eventing-manager", - "app.kubernetes.io/instance": "eventing-manager", - "app.kubernetes.io/name": "eventing-manager", - "control-plane": "eventing-manager" - } - }, - "spec": { - "containers": [ - { - "command": [ - "/manager" - ], - "env": [ - { - "name": "NAMESPACE", - "valueFrom": { - "fieldRef": { - "fieldPath": "metadata.namespace" - } - } - }, - { - "name": "EVENTING_CR_NAME", - "value": "eventing" - }, - { - "name": "EVENTING_CR_NAMESPACE", - "value": "kyma-system" - }, - { - "name": "NATS_URL", - "value": "eventing-nats.kyma-system.svc.cluster.local" - }, - { - "name": "PUBLISHER_REQUESTS_CPU", - "value": "10m" - }, - { - "name": "PUBLISHER_REQUESTS_MEMORY", - "value": "64Mi" - }, - { - "name": "PUBLISHER_LIMITS_CPU", - "value": "100m" - }, - { - "name": "PUBLISHER_LIMITS_MEMORY", - "value": "128Mi" - }, - { - "name": "PUBLISHER_IMAGE", - "value": "europe-docker.pkg.dev/kyma-project/prod/eventing-publisher-proxy:1.0.1" - }, - { - "name": "PUBLISHER_IMAGE_PULL_POLICY", - "value": "IfNotPresent" - }, - { - "name": "PUBLISHER_REPLICAS", - "value": "1" - }, - { - "name": "PUBLISHER_REQUEST_TIMEOUT", - "value": "10s" - }, - { - "name": "DEFAULT_MAX_IN_FLIGHT_MESSAGES", - "value": "10" - }, - { - "name": "DEFAULT_DISPATCHER_RETRY_PERIOD", - "value": "5m" - }, - { - "name": "DEFAULT_DISPATCHER_MAX_RETRIES", - "value": "10" - }, - { - "name": "APP_LOG_FORMAT", - "value": "json" - }, - { - "name": "APP_LOG_LEVEL", - "value": "info" - }, - { - "name": "JS_STREAM_NAME", - "value": "sap" - }, - { - "name": "JS_STREAM_SUBJECT_PREFIX", - "value": "kyma" - }, - { - "name": "JS_STREAM_STORAGE_TYPE", - "value": "file" - }, - { - "name": "JS_STREAM_REPLICAS", - "value": "1" - }, - { - "name": "JS_STREAM_DISCARD_POLICY", - "value": "new" - }, - { - "name": "JS_STREAM_RETENTION_POLICY", - "value": "interest" - }, - { - "name": "JS_CONSUMER_DELIVER_POLICY", - "value": "new" - }, - { - "name": "JS_STREAM_MAX_MSGS", - "value": "-1" - }, - { - "name": "JS_STREAM_MAX_BYTES", - "value": "700Mi" - }, - { - "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAME", - "value": "eventing-webhook-auth" - }, - { - "name": "EVENTING_WEBHOOK_AUTH_SECRET_NAMESPACE", - "value": "kyma-system" - } + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "leader-election-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "rolebinding", + "app.kubernetes.io/part-of": "application-connector-manager" + }, + "name": "application-connector-leader-election-rolebinding", + "namespace": "kyma-system" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "application-connector-leader-election-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "manager-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "application-connector-manager" + }, + "name": "application-connector-manager-rolebinding" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "application-connector-manager-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + } + ] + }, + { + "apiVersion": "v1", + "data": { + "details": "header:\n - name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\nbody:\n - name: Configuration\n widget: Panel\n children:\n - name: Domain name\n source: spec.domainName\n placeholder: Detected automatically\n - widget: Columns\n children:\n - name: Application Connector Validator\n widget: Panel\n children: \n - source: spec.appConnValidator.logLevel\n name: Validator log level\n - source: spec.appConnValidator.logFormat\n name: Validator log format\n - name: Application Connector Gateway\n widget: Panel\n children:\n - source: spec.appGateway.proxyTimeout\n name: Proxy timeout duration\n - source: spec.appGateway.requestTimeout\n name: Request timeout duration\n - source: spec.appGateway.logLevel\n name: Gateway log level\n\n - source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n\n - widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n name: events\n defaultType: information\n", + "form": "- path: spec.domainName\n name: Domain name\n\n- path: spec.appConnValidator\n widget: FormGroup\n name: Application Connector Validator Configuration\n children:\n - widget: KeyValuePair\n path: \n keyEnum: ['logLevel', 'logFormat']\n\n- path: spec.appGateway\n widget: FormGroup\n name: Application Connector Gateway Configuration\n children:\n - widget: KeyValuePair\n path: requests\n keyEnum: ['proxyTimeout', 'requestTimeout','logLevel']\n\n", + "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector CR](https://github.com/kyma-project/application-connector-manager/blob/main/config/samples/operator_v1alpha1_applicationconnector.yaml)}}\n configures application connector installation.\n", + "list": "- name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" + }, + "kind": "ConfigMap", + "metadata": { + "labels": { + "app.kubernetes.io/name": "applicationconnectors.operator.kyma-project.io", + "busola.io/extension": "resource", + "busola.io/extension-version": "0.5" + }, + "name": "application-connector-applicationconnectors.operator.kyma-project.io", + "namespace": "kyma-system" + } + }, + { + "apiVersion": "scheduling.k8s.io/v1", + "description": "Scheduling priority of application-connector-manager component. Must not be blocked by unschedulable user workloads.", + "globalDefault": false, + "kind": "PriorityClass", + "metadata": { + "name": "application-connector-priority-class" + }, + "value": 2100000 + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app.kubernetes.io/component": "manager", + "app.kubernetes.io/created-by": "application-connector-manager", + "app.kubernetes.io/instance": "controller-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "deployment", + "app.kubernetes.io/part-of": "application-connector-manager", + "control-plane": "controller-manager" + }, + "name": "application-connector-controller-manager", + "namespace": "kyma-system" + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "control-plane": "controller-manager" + } + }, + "template": { + "metadata": { + "annotations": { + "kubectl.kubernetes.io/default-container": "manager" + }, + "labels": { + "control-plane": "controller-manager" + } + }, + "spec": { + "containers": [ + { + "args": [ + "--leader-elect" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", - "imagePullPolicy": "Always", + "command": [ + "/manager" + ], + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -29221,75 +28408,48 @@ } } ], - "priorityClassName": "eventing-manager-priority-class", + "priorityClassName": "application-connector-priority-class", "securityContext": { - "fsGroup": 10001, - "runAsGroup": 10001, - "runAsNonRoot": true, - "runAsUser": 10001, - "seccompProfile": { - "type": "RuntimeDefault" - } + "runAsNonRoot": true }, - "serviceAccountName": "eventing-manager", + "serviceAccountName": "application-connector-controller-manager", "terminationGracePeriodSeconds": 10 } } } } ], - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/eventing-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/eventing-manager:1.2.0", - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/eventings/eventing", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "ApplicationConnector", + "metadata": { + "namespace": "kyma-system", + "labels": { + "app.kubernetes.io/name": "applicationconnector", + "app.kubernetes.io/instance": "applicationconnector-sample", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kuberentes.io/managed-by": "kustomize", + "app.kubernetes.io/created-by": "application-connector-manager" + }, + "name": "applicationconnector-sample" + }, + "spec": {} + }, + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/default_application_connector_cr.yaml" + }, + { + "version": "1.1.5", "channels": [ "fast", "regular" ], - "documentation": "https://kyma-project.io/#/eventing-manager/user/README", - "repository": "https://github.com/kyma-project/eventing-manager.git" - } - ] - }, - { - "name": "application-connector", - "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", - "repository": "https://github.com/kyma-project/application-connector-manager.git", - "manageable": true, - "managedResources": [ - "/apis/operator.kyma-project.io/v1alpha1/applicationconnectors" - ], - "latestGithubRelease": { - "repository": "kyma-project/application-connector-manager", - "deploymentYaml": "application-connector-manager.yaml", - "crYaml": "default_application_connector_cr.yaml" - }, - "versions": [ - { - "version": "1.1.3", - "channels": [ - "experimental" - ], "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", "repository": "https://github.com/kyma-project/application-connector-manager.git", "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", "resources": [ - { - "apiVersion": "v1", - "kind": "Namespace", - "metadata": { - "labels": { - "app.kubernetes.io/component": "manager", - "app.kubernetes.io/created-by": "application-connector-manager", - "app.kubernetes.io/instance": "system", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "namespace", - "app.kubernetes.io/part-of": "application-connector-manager", - "control-plane": "controller-manager" - }, - "name": "kyma-system" - } - }, { "apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", @@ -29404,7 +28564,7 @@ "properties": { "conditions": { "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", @@ -30007,7 +29167,7 @@ "data": { "details": "header:\n - name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\nbody:\n - name: Configuration\n widget: Panel\n children:\n - name: Domain name\n source: spec.domainName\n placeholder: Detected automatically\n - widget: Columns\n children:\n - name: Application Connector Validator\n widget: Panel\n children: \n - source: spec.appConnValidator.logLevel\n name: Validator log level\n - source: spec.appConnValidator.logFormat\n name: Validator log format\n - name: Application Connector Gateway\n widget: Panel\n children:\n - source: spec.appGateway.proxyTimeout\n name: Proxy timeout duration\n - source: spec.appGateway.requestTimeout\n name: Request timeout duration\n - source: spec.appGateway.logLevel\n name: Gateway log level\n\n - source: status.conditions\n widget: Table\n name: Reconciliation Conditions\n children:\n - source: type\n name: Type\n - source: status\n name: Status\n widget: Badge\n highlights:\n positive:\n - 'True'\n negative:\n - 'False'\n - source: reason\n name: Reason\n - source: message\n name: Message\n - source: '$readableTimestamp(lastTransitionTime)'\n name: Last transition\n sort: true\n\n - widget: EventList\n filter: '$matchEvents($$, $root.kind, $root.metadata.name)'\n name: events\n defaultType: information\n", "form": "- path: spec.domainName\n name: Domain name\n\n- path: spec.appConnValidator\n widget: FormGroup\n name: Application Connector Validator Configuration\n children:\n - widget: KeyValuePair\n path: \n keyEnum: ['logLevel', 'logFormat']\n\n- path: spec.appGateway\n widget: FormGroup\n name: Application Connector Gateway Configuration\n children:\n - widget: KeyValuePair\n path: requests\n keyEnum: ['proxyTimeout', 'requestTimeout','logLevel']\n\n", - "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector CR](https://github.com/kyma-project/application-connector-manager/blob/main/config/samples/operator_v1alpha1_applicationconnector.yaml)}}\n configures application connector installation.\n", + "general": "resource:\n kind: ApplicationConnector\n group: operator.kyma-project.io\n version: v1alpha1\nurlPath: applicationconnectors\ncategory: Kyma\nname: ApplicationConnector\nscope: namespace\nfeatures:\n actions:\n disableCreate: true\n disableDelete: true\ndescription: >-\n {{[ApplicationConnector custom resource](https://kyma-project.io/#/application-connector-manager/user/resources/06-30-application-connector)}}\n configures the Application Connector module.\n", "list": "- name: Ready \n source: status.state\n widget: Badge\n highlights:\n positive:\n - 'Ready'\n" }, "kind": "ConfigMap", @@ -30072,7 +29232,7 @@ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:v20240419-0093a6f3", + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -30138,19 +29298,29 @@ "spec": {} }, "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", - "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/application-connector-manager.yaml", - "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.3/default_application_connector_cr.yaml" + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/default_application_connector_cr.yaml" }, { - "version": "1.1.5", - "channels": [ - "fast", - "regular" - ], - "documentation": "https://kyma-project.io/#/application-connector-manager/user/README", - "repository": "https://github.com/kyma-project/application-connector-manager.git", - "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", - "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", + "version": "1.1.6", + "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.6/application-connector-manager.yaml", + "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.6/default_application_connector_cr.yaml", + "cr": { + "apiVersion": "operator.kyma-project.io/v1alpha1", + "kind": "ApplicationConnector", + "metadata": { + "namespace": "kyma-system", + "labels": { + "app.kubernetes.io/name": "applicationconnector", + "app.kubernetes.io/instance": "applicationconnector-sample", + "app.kubernetes.io/part-of": "application-connector-manager", + "app.kuberentes.io/managed-by": "kustomize", + "app.kubernetes.io/created-by": "application-connector-manager" + }, + "name": "applicationconnector-sample" + }, + "spec": {} + }, "resources": [ { "apiVersion": "apiextensions.k8s.io/v1", @@ -30266,7 +29436,7 @@ "properties": { "conditions": { "items": { - "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", @@ -30934,7 +30104,7 @@ "command": [ "/manager" ], - "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.5", + "image": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.6", "livenessProbe": { "httpGet": { "path": "/healthz", @@ -30983,25 +30153,9 @@ } } ], - "cr": { - "apiVersion": "operator.kyma-project.io/v1alpha1", - "kind": "ApplicationConnector", - "metadata": { - "namespace": "kyma-system", - "labels": { - "app.kubernetes.io/name": "applicationconnector", - "app.kubernetes.io/instance": "applicationconnector-sample", - "app.kubernetes.io/part-of": "application-connector-manager", - "app.kuberentes.io/managed-by": "kustomize", - "app.kubernetes.io/created-by": "application-connector-manager" - }, - "name": "applicationconnector-sample" - }, - "spec": {} - }, - "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample", - "deploymentYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/application-connector-manager.yaml", - "crYaml": "https://github.com/kyma-project/application-connector-manager/releases/download/1.1.5/default_application_connector_cr.yaml" + "managerPath": "/apis/apps/v1/namespaces/kyma-system/deployments/application-connector-controller-manager", + "managerImage": "europe-docker.pkg.dev/kyma-project/prod/application-connector-manager:1.1.6", + "crPath": "/apis/operator.kyma-project.io/v1alpha1/namespaces/kyma-system/applicationconnectors/applicationconnector-sample" } ] },