diff --git a/config/crd/bases/dynatrace.com_dynakubes.yaml b/config/crd/bases/dynatrace.com_dynakubes.yaml index d723383cb3..73d2fe4a34 100644 --- a/config/crd/bases/dynatrace.com_dynakubes.yaml +++ b/config/crd/bases/dynatrace.com_dynakubes.yaml @@ -100,8 +100,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -284,7 +283,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -321,8 +320,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -391,10 +389,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -418,7 +413,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -434,16 +429,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -504,8 +495,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -683,7 +673,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -714,8 +704,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -784,10 +773,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -811,7 +797,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -827,16 +813,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -969,7 +951,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object useCSIDriver: @@ -996,7 +978,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1026,8 +1007,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1201,7 +1181,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1238,8 +1218,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1269,7 +1248,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1303,8 +1281,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1466,7 +1443,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -1539,7 +1516,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1576,8 +1553,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1609,7 +1585,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1639,8 +1614,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1814,7 +1788,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1851,8 +1825,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1916,8 +1889,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -2095,7 +2067,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -2126,8 +2098,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -2196,10 +2167,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -2223,7 +2191,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -2239,16 +2207,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -2374,7 +2338,6 @@ spec: 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_])?$ @@ -2551,8 +2514,7 @@ spec: values:\n\t- `routing` enables OneAgent routing.\n\t- `kubernetes-monitoring` enables Kubernetes API monitoring.\n\t- `metrics-ingest` opens the metrics ingest endpoint on the DynaKube ActiveGate and redirects - all pods to it.\n\t- `dynatrace-api` enables calling the Dynatrace - API via ActiveGate." + all pods to it." items: type: string type: array @@ -2588,8 +2550,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -2776,7 +2737,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -2813,8 +2774,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -2883,10 +2843,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -2910,7 +2867,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -2926,16 +2883,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -2949,7 +2902,7 @@ spec: Dynatrace `apiUrl`, including the `/api` path at the end. - For SaaS, set `YOUR_ENVIRONMENT_ID` to your environment ID. - For Managed, change the `apiUrl` address. - For instructions on how to determine the environment ID and how to configure the apiUrl address, see Environment ID (https://www.dynatrace. + For instructions on how to determine the environment ID and how to configure the apiUrl address, see Environment ID (https://www. type: string customPullSecret: description: |- @@ -3099,7 +3052,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object namespaceSelector: @@ -3175,7 +3128,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3206,8 +3158,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -3382,7 +3333,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -3423,8 +3374,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -3456,7 +3406,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3491,8 +3440,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -3654,7 +3602,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -3776,7 +3724,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -3817,8 +3765,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -3855,7 +3802,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3886,8 +3832,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -4062,7 +4007,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -4103,8 +4048,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -4253,7 +4197,6 @@ spec: 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_])?$ @@ -4484,8 +4427,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -4668,7 +4610,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -4705,8 +4647,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -4775,10 +4716,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -4802,7 +4740,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -4818,16 +4756,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -4871,6 +4805,18 @@ spec: type: object logMonitoring: description: General configuration about the LogMonitoring feature. + properties: + ingestRuleMatchers: + items: + properties: + attribute: + type: string + values: + items: + type: string + type: array + type: object + type: array type: object metadataEnrichment: description: Configuration for Metadata Enrichment. @@ -5002,7 +4948,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object namespaceSelector: @@ -5078,7 +5024,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5108,8 +5053,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5283,7 +5227,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -5324,8 +5268,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -5356,7 +5299,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5390,8 +5332,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5553,7 +5494,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -5674,7 +5615,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -5715,8 +5656,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -5749,7 +5689,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5779,8 +5718,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5954,7 +5892,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -5995,8 +5933,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6080,10 +6017,7 @@ spec: dataSource: description: |- dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. + * An existing VolumeSnapshot object (snapshot.storage.k8s. properties: apiGroup: description: |- @@ -6135,7 +6069,6 @@ spec: If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. - More info: https://kubernetes. properties: limits: additionalProperties: @@ -6159,7 +6092,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object selector: @@ -6218,8 +6151,7 @@ spec: description: |- volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined - in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, - it can be changed after the claim is created. + in the corresponding VolumeAttributesClass. type: string volumeMode: description: |- @@ -6288,7 +6220,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsRefName: @@ -6322,8 +6254,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6392,10 +6323,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -6419,7 +6347,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -6435,16 +6363,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -6486,8 +6410,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -6646,7 +6569,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6680,7 +6602,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6709,8 +6630,7 @@ spec: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. + at some point during pod execution (e.g. properties: nodeSelectorTerms: description: Required. A list of node selector terms. @@ -6744,7 +6664,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6778,7 +6697,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6866,7 +6784,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -6898,8 +6816,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6926,7 +6843,6 @@ spec: can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. - Absolute number is calculated from percentage by rounding up to a minimum of 1. x-kubernetes-int-or-string: true maxUnavailable: anyOf: @@ -6937,8 +6853,6 @@ spec: update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. - This cannot be 0 if MaxSurge is 0 - Default value is 1. x-kubernetes-int-or-string: true type: object type: @@ -7049,7 +6963,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object secCompProfile: @@ -7085,8 +6999,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -7183,7 +7096,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsRefName: @@ -7216,8 +7129,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -7286,10 +7198,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -7313,7 +7222,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -7329,16 +7238,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -7460,7 +7365,6 @@ spec: 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_])?$ diff --git a/config/crd/bases/dynatrace.com_edgeconnects.yaml b/config/crd/bases/dynatrace.com_edgeconnects.yaml index b9daf7367f..d56e1ccc41 100644 --- a/config/crd/bases/dynatrace.com_edgeconnects.yaml +++ b/config/crd/bases/dynatrace.com_edgeconnects.yaml @@ -90,8 +90,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. Cannot @@ -339,7 +338,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object serviceAccountName: @@ -375,8 +374,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -445,10 +443,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -472,7 +467,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -488,16 +483,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -545,7 +536,6 @@ spec: 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_])?$ @@ -679,8 +669,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. Cannot @@ -929,7 +918,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object serviceAccountName: @@ -964,8 +953,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1034,10 +1022,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -1061,7 +1046,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -1077,16 +1062,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -1134,7 +1115,6 @@ spec: 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_])?$ diff --git a/config/helm/chart/default/templates/Common/crd/dynatrace-operator-crd.yaml b/config/helm/chart/default/templates/Common/crd/dynatrace-operator-crd.yaml index 6c0570d016..e614478054 100644 --- a/config/helm/chart/default/templates/Common/crd/dynatrace-operator-crd.yaml +++ b/config/helm/chart/default/templates/Common/crd/dynatrace-operator-crd.yaml @@ -112,8 +112,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -296,7 +295,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -333,8 +332,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -403,10 +401,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -430,7 +425,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -446,16 +441,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -516,8 +507,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -695,7 +685,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -726,8 +716,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -796,10 +785,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -823,7 +809,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -839,16 +825,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -981,7 +963,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object useCSIDriver: @@ -1008,7 +990,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1038,8 +1019,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1213,7 +1193,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1250,8 +1230,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1281,7 +1260,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1315,8 +1293,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1478,7 +1455,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -1551,7 +1528,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1588,8 +1565,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1621,7 +1597,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -1651,8 +1626,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -1826,7 +1800,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -1863,8 +1837,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -1928,8 +1901,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -2107,7 +2079,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -2138,8 +2110,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -2208,10 +2179,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -2235,7 +2203,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -2251,16 +2219,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -2386,7 +2350,6 @@ spec: 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_])?$ @@ -2563,8 +2526,7 @@ spec: values:\n\t- `routing` enables OneAgent routing.\n\t- `kubernetes-monitoring` enables Kubernetes API monitoring.\n\t- `metrics-ingest` opens the metrics ingest endpoint on the DynaKube ActiveGate and redirects - all pods to it.\n\t- `dynatrace-api` enables calling the Dynatrace - API via ActiveGate." + all pods to it." items: type: string type: array @@ -2600,8 +2562,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -2788,7 +2749,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -2825,8 +2786,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -2895,10 +2855,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -2922,7 +2879,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -2938,16 +2895,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -2961,7 +2914,7 @@ spec: Dynatrace `apiUrl`, including the `/api` path at the end. - For SaaS, set `YOUR_ENVIRONMENT_ID` to your environment ID. - For Managed, change the `apiUrl` address. - For instructions on how to determine the environment ID and how to configure the apiUrl address, see Environment ID (https://www.dynatrace. + For instructions on how to determine the environment ID and how to configure the apiUrl address, see Environment ID (https://www. type: string customPullSecret: description: |- @@ -3111,7 +3064,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object namespaceSelector: @@ -3187,7 +3140,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3218,8 +3170,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -3394,7 +3345,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -3435,8 +3386,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -3468,7 +3418,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3503,8 +3452,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -3666,7 +3614,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -3788,7 +3736,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -3829,8 +3777,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -3867,7 +3814,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -3898,8 +3844,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -4074,7 +4019,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -4115,8 +4060,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -4265,7 +4209,6 @@ spec: 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_])?$ @@ -4496,8 +4439,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -4680,7 +4622,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsSecretName: @@ -4717,8 +4659,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -4787,10 +4728,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -4814,7 +4752,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -4830,16 +4768,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -4883,6 +4817,18 @@ spec: type: object logMonitoring: description: General configuration about the LogMonitoring feature. + properties: + ingestRuleMatchers: + items: + properties: + attribute: + type: string + values: + items: + type: string + type: array + type: object + type: array type: object metadataEnrichment: description: Configuration for Metadata Enrichment. @@ -5014,7 +4960,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object namespaceSelector: @@ -5090,7 +5036,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5120,8 +5065,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5295,7 +5239,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -5336,8 +5280,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -5368,7 +5311,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5402,8 +5344,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5565,7 +5506,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object labels: @@ -5686,7 +5627,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -5727,8 +5668,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -5761,7 +5701,6 @@ spec: description: |- Set additional arguments to the OneAgent installer. For available options, see Linux custom installation (https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-oneagent/installation-and-operation/linux/installation/customize-oneagent-installation-on-linux). - For the list of limitations, see Limitations (https://www.dynatrace. items: type: string type: array @@ -5791,8 +5730,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -5966,7 +5904,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object priorityClassName: @@ -6007,8 +5945,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6092,10 +6029,7 @@ spec: dataSource: description: |- dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. + * An existing VolumeSnapshot object (snapshot.storage.k8s. properties: apiGroup: description: |- @@ -6147,7 +6081,6 @@ spec: If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. - More info: https://kubernetes. properties: limits: additionalProperties: @@ -6171,7 +6104,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object selector: @@ -6230,8 +6163,7 @@ spec: description: |- volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined - in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, - it can be changed after the claim is created. + in the corresponding VolumeAttributesClass. type: string volumeMode: description: |- @@ -6300,7 +6232,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsRefName: @@ -6334,8 +6266,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6404,10 +6335,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -6431,7 +6359,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -6447,16 +6375,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -6498,8 +6422,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. @@ -6658,7 +6581,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6692,7 +6614,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6721,8 +6642,7 @@ spec: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. + at some point during pod execution (e.g. properties: nodeSelectorTerms: description: Required. A list of node selector terms. @@ -6756,7 +6676,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6790,7 +6709,6 @@ spec: the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. items: type: string type: array @@ -6878,7 +6796,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tolerations: @@ -6910,8 +6828,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -6938,7 +6855,6 @@ spec: can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. - Absolute number is calculated from percentage by rounding up to a minimum of 1. x-kubernetes-int-or-string: true maxUnavailable: anyOf: @@ -6949,8 +6865,6 @@ spec: update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. - This cannot be 0 if MaxSurge is 0 - Default value is 1. x-kubernetes-int-or-string: true type: object type: @@ -7061,7 +6975,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object secCompProfile: @@ -7097,8 +7011,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -7195,7 +7108,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object tlsRefName: @@ -7228,8 +7141,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -7298,10 +7210,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -7325,7 +7234,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -7341,16 +7250,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -7472,7 +7377,6 @@ spec: 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_])?$ @@ -7735,8 +7639,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. Cannot @@ -7984,7 +7887,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object serviceAccountName: @@ -8020,8 +7923,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -8090,10 +7992,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -8117,7 +8016,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -8133,16 +8032,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -8190,7 +8085,6 @@ spec: 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_])?$ @@ -8324,8 +8218,7 @@ spec: Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + the reference in the input string will be unchanged. type: string valueFrom: description: Source for the environment variable's value. Cannot @@ -8574,7 +8467,7 @@ spec: Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + More info: https://kubernetes. type: object type: object serviceAccountName: @@ -8609,8 +8502,7 @@ spec: description: |- TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. + it is not set, which means tolerate the taint forever (do not evict). format: int64 type: integer value: @@ -8679,10 +8571,7 @@ spec: matchLabelKeys: description: |- MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. + spreading will be calculated. items: type: string type: array @@ -8706,7 +8595,7 @@ spec: NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. type: string nodeTaintsPolicy: description: |- @@ -8722,16 +8611,12 @@ spec: and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. - We define a domain as a particular instance of a topology. type: string whenUnsatisfiable: description: |- WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. type: string required: - maxSkew @@ -8779,7 +8664,6 @@ spec: 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_])?$ diff --git a/hack/make/manifests/config.mk b/hack/make/manifests/config.mk index c45721f4bd..f148f61315 100644 --- a/hack/make/manifests/config.mk +++ b/hack/make/manifests/config.mk @@ -1,4 +1,4 @@ -CRD_OPTIONS ?= "crd:crdVersions=v1,maxDescLen=350,ignoreUnexportedFields=true" +CRD_OPTIONS ?= "crd:crdVersions=v1,maxDescLen=300,ignoreUnexportedFields=true" OLM ?= false diff --git a/pkg/api/v1beta3/dynakube/logmonitoring/ingestrulematchers.go b/pkg/api/v1beta3/dynakube/logmonitoring/ingestrulematchers.go new file mode 100644 index 0000000000..f3bb407722 --- /dev/null +++ b/pkg/api/v1beta3/dynakube/logmonitoring/ingestrulematchers.go @@ -0,0 +1,10 @@ +package logmonitoring + +// +kubebuilder:object:generate=true +type IngestRuleMatchers struct { + // +kubebuilder:validation:Optional + Attribute string `json:"attribute,omitempty"` + + // +kubebuilder:validation:Optional + Values []string `json:"values,omitempty"` +} diff --git a/pkg/api/v1beta3/dynakube/logmonitoring/spec.go b/pkg/api/v1beta3/dynakube/logmonitoring/spec.go index 83be35ef2b..78294d383a 100644 --- a/pkg/api/v1beta3/dynakube/logmonitoring/spec.go +++ b/pkg/api/v1beta3/dynakube/logmonitoring/spec.go @@ -19,6 +19,7 @@ type LogMonitoring struct { // +kubebuilder:object:generate=true type Spec struct { + IngestRuleMatchers []IngestRuleMatchers `json:"ingestRuleMatchers,omitempty"` } // +kubebuilder:object:generate=true diff --git a/pkg/api/v1beta3/dynakube/logmonitoring/zz_generated.deepcopy.go b/pkg/api/v1beta3/dynakube/logmonitoring/zz_generated.deepcopy.go index 5a08718fb7..2290bd8826 100644 --- a/pkg/api/v1beta3/dynakube/logmonitoring/zz_generated.deepcopy.go +++ b/pkg/api/v1beta3/dynakube/logmonitoring/zz_generated.deepcopy.go @@ -22,9 +22,36 @@ import ( "k8s.io/api/core/v1" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngestRuleMatchers) DeepCopyInto(out *IngestRuleMatchers) { + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngestRuleMatchers. +func (in *IngestRuleMatchers) DeepCopy() *IngestRuleMatchers { + if in == nil { + return nil + } + out := new(IngestRuleMatchers) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Spec) DeepCopyInto(out *Spec) { *out = *in + if in.IngestRuleMatchers != nil { + in, out := &in.IngestRuleMatchers, &out.IngestRuleMatchers + *out = make([]IngestRuleMatchers, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Spec. diff --git a/pkg/api/v1beta3/dynakube/zz_generated.deepcopy.go b/pkg/api/v1beta3/dynakube/zz_generated.deepcopy.go index 052032b8e3..b0708f4e8a 100644 --- a/pkg/api/v1beta3/dynakube/zz_generated.deepcopy.go +++ b/pkg/api/v1beta3/dynakube/zz_generated.deepcopy.go @@ -189,7 +189,7 @@ func (in *DynaKubeSpec) DeepCopyInto(out *DynaKubeSpec) { if in.LogMonitoring != nil { in, out := &in.LogMonitoring, &out.LogMonitoring *out = new(logmonitoring.Spec) - **out = **in + (*in).DeepCopyInto(*out) } if in.Kspm != nil { in, out := &in.Kspm, &out.Kspm diff --git a/pkg/clients/dynatrace/client.go b/pkg/clients/dynatrace/client.go index 596b926a11..b4b3e36e8d 100644 --- a/pkg/clients/dynatrace/client.go +++ b/pkg/clients/dynatrace/client.go @@ -10,6 +10,7 @@ import ( "strings" "time" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" "github.com/pkg/errors" "golang.org/x/net/http/httpproxy" ) @@ -68,6 +69,9 @@ type Client interface { // CreateOrUpdateKubernetesSetting returns the object id of the created k8s settings if successful, or an api error otherwise CreateOrUpdateKubernetesSetting(ctx context.Context, name, kubeSystemUUID, scope string) (string, error) + // CreateLogMonitoringSetting returns the object id of the created logmonitoring settings if successful, or an api error otherwise + CreateLogMonitoringSetting(ctx context.Context, scope, clusterName string, ingestRuleMatchers []logmonitoring.IngestRuleMatchers) (string, error) + // CreateOrUpdateKubernetesAppSetting returns the object id of the created k8s app settings if successful, or an api error otherwise CreateOrUpdateKubernetesAppSetting(ctx context.Context, scope string) (string, error) @@ -79,6 +83,10 @@ type Client interface { // or an api error otherwise GetSettingsForMonitoredEntity(ctx context.Context, monitoredEntity *MonitoredEntity, schemaId string) (GetSettingsResponse, error) + // GetSettingsForLogModule returns the settings response with the number of settings objects, + // or an api error otherwise + GetSettingsForLogModule(ctx context.Context, monitoredEntity string) (GetLogMonSettingsResponse, error) + GetRulesSettings(ctx context.Context, kubeSystemUUID string, entityID string) (GetRulesSettingsResponse, error) GetActiveGateAuthToken(ctx context.Context, dynakubeName string) (*ActiveGateAuthTokenInfo, error) diff --git a/pkg/clients/dynatrace/settings.go b/pkg/clients/dynatrace/settings.go index 1adb05ccd8..79242b1cbd 100644 --- a/pkg/clients/dynatrace/settings.go +++ b/pkg/clients/dynatrace/settings.go @@ -27,6 +27,11 @@ type GetSettingsResponse struct { TotalCount int `json:"totalCount"` } +type GetLogMonSettingsResponse struct { + Items []logMonSettingsItem `json:"items"` + TotalCount int `json:"totalCount"` +} + type postSettingsResponse struct { ObjectId string `json:"objectId"` } @@ -118,6 +123,40 @@ func (dtc *dynatraceClient) GetSettingsForMonitoredEntity(ctx context.Context, m return resDataJson, nil } +func (dtc *dynatraceClient) GetSettingsForLogModule(ctx context.Context, monitoredEntity string) (GetLogMonSettingsResponse, error) { + if monitoredEntity == "" { + return GetLogMonSettingsResponse{TotalCount: 0}, nil + } + + req, err := createBaseRequest(ctx, dtc.getSettingsUrl(true), http.MethodGet, dtc.apiToken, nil) + if err != nil { + return GetLogMonSettingsResponse{}, err + } + + q := req.URL.Query() + q.Add(schemaIDsQueryParam, logMonitoringSettingsSchemaId) + q.Add(scopesQueryParam, monitoredEntity) + req.URL.RawQuery = q.Encode() + + res, err := dtc.httpClient.Do(req) + defer utils.CloseBodyAfterRequest(res) + + if err != nil { + log.Info("failed to retrieve logmonitoring settings") + + return GetLogMonSettingsResponse{}, err + } + + var resDataJson GetLogMonSettingsResponse + + err = dtc.unmarshalToJson(res, &resDataJson) + if err != nil { + return GetLogMonSettingsResponse{}, fmt.Errorf("error parsing response body: %w", err) + } + + return resDataJson, nil +} + func (dtc *dynatraceClient) unmarshalToJson(res *http.Response, resDataJson any) error { resData, err := dtc.getServerResponseData(res) if err != nil { diff --git a/pkg/clients/dynatrace/settings_kubernetes.go b/pkg/clients/dynatrace/settings_kubernetes.go index 545c37121a..f60745625e 100644 --- a/pkg/clients/dynatrace/settings_kubernetes.go +++ b/pkg/clients/dynatrace/settings_kubernetes.go @@ -52,7 +52,7 @@ const ( appTransitionSchemaVersion = "1.0.1" ) -func (dtc *dynatraceClient) performCreateOrUpdateKubernetesSetting(ctx context.Context, body []postKubernetesSettingsBody) (string, error) { +func (dtc *dynatraceClient) performCreateOrUpdateKubernetesSetting(ctx context.Context, body []postKubernetesSettingsBody) (string, error) { //nolint:dupl bodyData, err := json.Marshal(body) if err != nil { return "", err diff --git a/pkg/clients/dynatrace/settings_logmonitoring.go b/pkg/clients/dynatrace/settings_logmonitoring.go new file mode 100644 index 0000000000..5f7e0e53d2 --- /dev/null +++ b/pkg/clients/dynatrace/settings_logmonitoring.go @@ -0,0 +1,125 @@ +package dynatrace + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + "github.com/Dynatrace/dynatrace-operator/pkg/clients/utils" +) + +type IngestRuleMatchers struct { + Attribute string `json:"attribute,omitempty"` + Operator string `json:"operator,omitempty"` + Values []string `json:"values,omitempty"` +} + +type logMonSettingsValue struct { + ConfigItemTitle string `json:"config-item-title"` + Matchers []IngestRuleMatchers `json:"matchers"` + Enabled bool `json:"enabled"` + SendToStorage bool `json:"send-to-storage"` +} + +type logMonSettingsItem struct { + ObjectID string `json:"objectId"` + LogMonitoringValue logMonSettingsValue `json:"value"` +} + +type posLogMonSettingsBody struct { + SchemaId string `json:"schemaId"` + SchemaVersion string `json:"schemaVersion"` + Scope string `json:"scope,omitempty"` + Value logMonSettingsValue `json:"value"` +} + +const ( + logMonitoringSettingsSchemaId = "builtin:logmonitoring.log-storage-settings" +) + +func (dtc *dynatraceClient) performCreateLogMonSetting(ctx context.Context, body []posLogMonSettingsBody) (string, error) { //nolint:dupl + bodyData, err := json.Marshal(body) + if err != nil { + return "", err + } + + req, err := createBaseRequest(ctx, dtc.getSettingsUrl(false), http.MethodPost, dtc.apiToken, bytes.NewReader(bodyData)) + if err != nil { + return "", err + } + + res, err := dtc.httpClient.Do(req) + defer utils.CloseBodyAfterRequest(res) + + if err != nil { + return "", fmt.Errorf("error making post request to dynatrace api: %w", err) + } + + resData, err := io.ReadAll(res.Body) + if err != nil { + return "", fmt.Errorf("error reading response: %w", err) + } + + if res.StatusCode != http.StatusOK && + res.StatusCode != http.StatusCreated { + return "", handleErrorArrayResponseFromAPI(resData, res.StatusCode) + } + + var resDataJson []postSettingsResponse + + err = json.Unmarshal(resData, &resDataJson) + if err != nil { + return "", err + } + + if len(resDataJson) != 1 { + return "", fmt.Errorf("response is not containing exactly one entry %s", resData) + } + + return resDataJson[0].ObjectId, nil +} + +func createBaseLogMonSettings(clusterName, schemaId string, schemaVersion string, scope string, ingestRuleMatchers []logmonitoring.IngestRuleMatchers) posLogMonSettingsBody { + matchers := []IngestRuleMatchers{} + + for _, ingestRuleMatcher := range ingestRuleMatchers { + matcher := IngestRuleMatchers{ + Attribute: ingestRuleMatcher.Attribute, + Operator: "MATCHES", + Values: ingestRuleMatcher.Values, + } + matchers = append(matchers, matcher) + } + + base := posLogMonSettingsBody{ + SchemaId: schemaId, + SchemaVersion: schemaVersion, + Value: logMonSettingsValue{ + SendToStorage: true, + Enabled: true, + ConfigItemTitle: clusterName, + Matchers: matchers, + }, + } + + if scope != "" { + base.Scope = scope + } + + return base +} + +func (dtc *dynatraceClient) CreateLogMonitoringSetting(ctx context.Context, scope, clusterName string, matchers []logmonitoring.IngestRuleMatchers) (string, error) { + settings := createBaseLogMonSettings(clusterName, logMonitoringSettingsSchemaId, "1.0.0", scope, matchers) + + objectId, err := dtc.performCreateLogMonSetting(ctx, []posLogMonSettingsBody{settings}) + if err != nil { + return "", err + } + + return objectId, nil +} diff --git a/pkg/clients/dynatrace/settings_logmonitoring_test.go b/pkg/clients/dynatrace/settings_logmonitoring_test.go new file mode 100644 index 0000000000..75ead5cbea --- /dev/null +++ b/pkg/clients/dynatrace/settings_logmonitoring_test.go @@ -0,0 +1,77 @@ +package dynatrace + +import ( + "context" + "net/http" + "net/http/httptest" + "testing" + + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDynatraceClient_CreateLogMonitoringSetting(t *testing.T) { + ctx := context.Background() + + t.Run("create settings logmonitoring settings with default rule matchers", func(t *testing.T) { + // arrange + dynakube := dynakube.DynaKube{ + Spec: dynakube.DynaKubeSpec{ + LogMonitoring: &logmonitoring.Spec{}, + }, + } + + dynatraceServer := httptest.NewServer(mockDynatraceServerV2Handler(createKubernetesSettingsMockParams(1, testObjectID, http.StatusOK))) + defer dynatraceServer.Close() + + skipCert := SkipCertificateValidation(true) + dtc, err := NewClient(dynatraceServer.URL, apiToken, paasToken, skipCert) + require.NoError(t, err) + require.NotNil(t, dtc) + + // act + actual, err := dtc.CreateLogMonitoringSetting(ctx, testScope, testName, dynakube.LogMonitoring().IngestRuleMatchers) + + // assert + require.NotNil(t, actual) + require.NoError(t, err) + assert.Len(t, actual, len(testObjectID)) + assert.EqualValues(t, testObjectID, actual) + }) + t.Run("create settings logmonitoring settings with custom rule matchers", func(t *testing.T) { + // arrange + dynakube := dynakube.DynaKube{ + Spec: dynakube.DynaKubeSpec{ + LogMonitoring: &logmonitoring.Spec{ + IngestRuleMatchers: []logmonitoring.IngestRuleMatchers{ + { + Attribute: "test-attribute", + Values: []string{ + "test-value", + }, + }, + }, + }, + }, + } + + dynatraceServer := httptest.NewServer(mockDynatraceServerV2Handler(createKubernetesSettingsMockParams(1, testObjectID, http.StatusOK))) + defer dynatraceServer.Close() + + skipCert := SkipCertificateValidation(true) + dtc, err := NewClient(dynatraceServer.URL, apiToken, paasToken, skipCert) + require.NoError(t, err) + require.NotNil(t, dtc) + + // act + actual, err := dtc.CreateLogMonitoringSetting(ctx, testScope, testName, dynakube.LogMonitoring().IngestRuleMatchers) + + // assert + require.NotNil(t, actual) + require.NoError(t, err) + assert.Len(t, actual, len(testObjectID)) + assert.EqualValues(t, testObjectID, actual) + }) +} diff --git a/pkg/controllers/dynakube/controller.go b/pkg/controllers/dynakube/controller.go index 7e53020225..ac9f3dde67 100644 --- a/pkg/controllers/dynakube/controller.go +++ b/pkg/controllers/dynakube/controller.go @@ -332,8 +332,6 @@ func (controller *Controller) reconcileComponents(ctx context.Context, dynatrace componentErrors = append(componentErrors, err) } - log.Info("start reconciling app injection") - log.Info("start reconciling LogMonitoring") logMonitoringReconciler := controller.logMonitoringReconcilerBuilder(controller.client, controller.apiReader, dynatraceClient, dk) @@ -353,6 +351,8 @@ func (controller *Controller) reconcileComponents(ctx context.Context, dynatrace componentErrors = append(componentErrors, err) } + log.Info("start reconciling app injection") + err = controller.injectionReconcilerBuilder(controller.client, controller.apiReader, dynatraceClient, diff --git a/pkg/controllers/dynakube/controller_system_test.go b/pkg/controllers/dynakube/controller_system_test.go index 1a628d874d..1f95f5695c 100644 --- a/pkg/controllers/dynakube/controller_system_test.go +++ b/pkg/controllers/dynakube/controller_system_test.go @@ -10,6 +10,7 @@ import ( "github.com/Dynatrace/dynatrace-operator/pkg/api/status" "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/activegate" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" ag "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/activegate" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/activegate/capability" @@ -18,7 +19,7 @@ import ( "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/extension" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/injection" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/kspm" - "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/logmonitoring" + logmon "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/logmonitoring" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/oneagent" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/proxy" "github.com/Dynatrace/dynatrace-operator/pkg/util/kubeobjects/labels" @@ -60,7 +61,8 @@ func TestReconcileActiveGate_Reconcile(t *testing.T) { Namespace: testNamespace, }, Spec: dynakube.DynaKubeSpec{ - APIURL: testApiUrl, + APIURL: testApiUrl, + LogMonitoring: &logmonitoring.Spec{}, }, } controller := createFakeClientAndReconciler(t, mockClient, dk, testPaasToken, testAPIToken) @@ -88,7 +90,8 @@ func TestReconcileActiveGate_Reconcile(t *testing.T) { Value: "https://proxy:1234", ValueFrom: "", }, - ActiveGate: activegate.Spec{Capabilities: []activegate.CapabilityDisplayName{activegate.KubeMonCapability.DisplayName}}, + LogMonitoring: &logmonitoring.Spec{}, + ActiveGate: activegate.Spec{Capabilities: []activegate.CapabilityDisplayName{activegate.KubeMonCapability.DisplayName}}, }, Status: *getTestDynkubeStatus(), @@ -131,6 +134,7 @@ func TestReconcileActiveGate_Reconcile(t *testing.T) { activegate.KubeMonCapability.DisplayName, }, }, + LogMonitoring: &logmonitoring.Spec{}, }, Status: *getTestDynkubeStatus(), } @@ -170,7 +174,8 @@ func TestReconcileOnlyOneTokenProvided_Reconcile(t *testing.T) { Namespace: testNamespace, }, Spec: dynakube.DynaKubeSpec{ - APIURL: testApiUrl, + APIURL: testApiUrl, + LogMonitoring: &logmonitoring.Spec{}, }} controller := createFakeClientAndReconciler(t, mockClient, dk, "", testAPIToken) @@ -214,6 +219,7 @@ func TestReconcile_ActiveGateMultiCapability(t *testing.T) { activegate.RoutingCapability.DisplayName, }, }, + LogMonitoring: &logmonitoring.Spec{}, }, } @@ -290,6 +296,7 @@ func TestAPIError(t *testing.T) { activegate.KubeMonCapability.DisplayName, }, }, + LogMonitoring: &logmonitoring.Spec{}, }, Status: *getTestDynkubeStatus(), } @@ -373,6 +380,10 @@ func createDTMockClient(t *testing.T, paasTokenScopes, apiTokenScopes dtclient.T }, nil).Maybe() mockClient.On("GetProcessModuleConfig", mock.AnythingOfType("context.backgroundCtx"), mock.AnythingOfType("uint")). Return(&dtclient.ProcessModuleConfig{}, nil).Maybe() + mockClient.On("GetSettingsForLogModule", mock.AnythingOfType("context.backgroundCtx"), "KUBERNETES_CLUSTER-0E30FE4BF2007587"). + Return(dtclient.GetLogMonSettingsResponse{}, nil).Maybe() + mockClient.On("CreateLogMonitoringSetting", mock.AnythingOfType("context.backgroundCtx"), "KUBERNETES_CLUSTER-0E30FE4BF2007587", "operator test entity 1", []logmonitoring.IngestRuleMatchers{}). + Return(testObjectID, nil).Maybe() return mockClient } @@ -422,7 +433,7 @@ func createFakeClientAndReconciler(t *testing.T, mockClient dtclient.Client, dk apiMonitoringReconcilerBuilder: apimonitoring.NewReconciler, injectionReconcilerBuilder: injection.NewReconciler, oneAgentReconcilerBuilder: oneagent.NewReconciler, - logMonitoringReconcilerBuilder: logmonitoring.NewReconciler, + logMonitoringReconcilerBuilder: logmon.NewReconciler, proxyReconcilerBuilder: proxy.NewReconciler, extensionReconcilerBuilder: extension.NewReconciler, kspmReconcilerBuilder: kspm.NewReconciler, diff --git a/pkg/controllers/dynakube/logmonitoring/logmonsettings/conditions.go b/pkg/controllers/dynakube/logmonitoring/logmonsettings/conditions.go new file mode 100644 index 0000000000..27b3ff7b16 --- /dev/null +++ b/pkg/controllers/dynakube/logmonitoring/logmonsettings/conditions.go @@ -0,0 +1,22 @@ +package logmonsettings + +import ( + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + settingsExistReason = "LogMonSettingsExist" + + conditionType = "LogMonitoringSettings" +) + +func setLogMonitoringSettingExists(conditions *[]metav1.Condition, conditionType string) { + condition := metav1.Condition{ + Type: conditionType, + Status: metav1.ConditionTrue, + Reason: settingsExistReason, + Message: "LogMonitoring settings already exist, will not create new ones.", + } + _ = meta.SetStatusCondition(conditions, condition) +} diff --git a/pkg/controllers/dynakube/logmonitoring/logmonsettings/config.go b/pkg/controllers/dynakube/logmonitoring/logmonsettings/config.go new file mode 100644 index 0000000000..36fd2ed804 --- /dev/null +++ b/pkg/controllers/dynakube/logmonitoring/logmonsettings/config.go @@ -0,0 +1,9 @@ +package logmonsettings + +import ( + "github.com/Dynatrace/dynatrace-operator/pkg/logd" +) + +var ( + log = logd.Get().WithName("logmonitoring-settings") +) diff --git a/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler.go b/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler.go new file mode 100644 index 0000000000..7085b668a9 --- /dev/null +++ b/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler.go @@ -0,0 +1,84 @@ +package logmonsettings + +import ( + "context" + + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" + "github.com/Dynatrace/dynatrace-operator/pkg/controllers" + "github.com/Dynatrace/dynatrace-operator/pkg/util/conditions" + "github.com/Dynatrace/dynatrace-operator/pkg/util/timeprovider" + "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/api/meta" +) + +type reconciler struct { + dk *dynakube.DynaKube + dtc dtclient.Client + + timeProvider *timeprovider.Provider +} + +type ReconcilerBuilder func(dtc dtclient.Client, dk *dynakube.DynaKube) controllers.Reconciler + +var _ ReconcilerBuilder = NewReconciler + +func NewReconciler(dtc dtclient.Client, dk *dynakube.DynaKube) controllers.Reconciler { + return &reconciler{ + dk: dk, + dtc: dtc, + timeProvider: timeprovider.New(), + } +} + +func (r *reconciler) Reconcile(ctx context.Context) error { + if !conditions.IsOutdated(r.timeProvider, r.dk, conditionType) { + return nil + } + + if !r.dk.LogMonitoring().IsEnabled() { + meta.RemoveStatusCondition(r.dk.Conditions(), conditionType) + + return nil + } + + err := r.checkLogMonitoringSettings(ctx) + if err != nil { + return err + } + + return nil +} + +func (r *reconciler) checkLogMonitoringSettings(ctx context.Context) error { + log.Info("start reconciling log monitoring settings") + + logMonitoringSettings, err := r.dtc.GetSettingsForLogModule(ctx, r.dk.Status.KubernetesClusterMEID) + if err != nil { + return errors.WithMessage(err, "error trying to check if setting exists") + } + + if logMonitoringSettings.TotalCount > 0 { + log.Info("there are already settings", "settings", logMonitoringSettings) + + setLogMonitoringSettingExists(r.dk.Conditions(), conditionType) + + return nil + } + + matchers := []logmonitoring.IngestRuleMatchers{} + if len(r.dk.LogMonitoring().IngestRuleMatchers) > 0 { + matchers = r.dk.LogMonitoring().IngestRuleMatchers + } + + objectId, err := r.dtc.CreateLogMonitoringSetting(ctx, r.dk.Status.KubernetesClusterMEID, r.dk.Status.KubernetesClusterName, matchers) + + if err != nil { + return errors.WithMessage(err, "error when creating log monitoring setting") + } + + log.Info("logmonitoring setting created", "settings", objectId) + + return nil +} diff --git a/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler_test.go b/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler_test.go new file mode 100644 index 0000000000..cb90233c07 --- /dev/null +++ b/pkg/controllers/dynakube/logmonitoring/logmonsettings/reconciler_test.go @@ -0,0 +1,126 @@ +package logmonsettings + +import ( + "context" + "errors" + "testing" + + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" + dtclientmock "github.com/Dynatrace/dynatrace-operator/test/mocks/pkg/clients/dynatrace" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" +) + +func TestCheckLogMonitoringSettings(t *testing.T) { + ctx := context.Background() + + t.Run("error fetching log monitoring settings", func(t *testing.T) { + mockClient := dtclientmock.NewClient(t) + mockClient.On("GetSettingsForLogModule", mock.Anything, "meid"). + Return(dtclient.GetLogMonSettingsResponse{}, errors.New("error when fetching settings")) + + dk := &dynakube.DynaKube{ + Status: dynakube.DynaKubeStatus{ + KubernetesClusterMEID: "meid", + }, + } + + r := &reconciler{ + dk: dk, + dtc: mockClient, + } + + err := r.checkLogMonitoringSettings(ctx) + require.Error(t, err) + require.Contains(t, err.Error(), "error when fetching settings") + + mockClient.AssertCalled(t, "GetSettingsForLogModule", ctx, "meid") + }) + + t.Run("log monitoring settings already exist", func(t *testing.T) { + mockClient := dtclientmock.NewClient(t) + mockClient.On("GetSettingsForLogModule", mock.Anything, "meid"). + Return(dtclient.GetLogMonSettingsResponse{TotalCount: 1}, nil) + + dk := &dynakube.DynaKube{ + Status: dynakube.DynaKubeStatus{ + KubernetesClusterMEID: "meid", + }, + } + + r := &reconciler{ + dk: dk, + dtc: mockClient, + } + + err := r.checkLogMonitoringSettings(ctx) + require.NoError(t, err) + + mockClient.AssertCalled(t, "GetSettingsForLogModule", ctx, "meid") + }) + + t.Run("create log monitoring settings", func(t *testing.T) { + mockClient := dtclientmock.NewClient(t) + mockClient.On("GetSettingsForLogModule", mock.Anything, "meid"). + Return(dtclient.GetLogMonSettingsResponse{TotalCount: 0}, nil) + mockClient.On("CreateLogMonitoringSetting", mock.Anything, "meid", "cluster-name", mock.Anything). + Return("test-object-id", nil) + + dk := &dynakube.DynaKube{ + Status: dynakube.DynaKubeStatus{ + KubernetesClusterMEID: "meid", + KubernetesClusterName: "cluster-name", + }, + Spec: dynakube.DynaKubeSpec{ + LogMonitoring: &logmonitoring.Spec{ + IngestRuleMatchers: []logmonitoring.IngestRuleMatchers{}, + }, + }, + } + + r := &reconciler{ + dk: dk, + dtc: mockClient, + } + + err := r.checkLogMonitoringSettings(ctx) + require.NoError(t, err) + + mockClient.AssertCalled(t, "GetSettingsForLogModule", ctx, "meid") + mockClient.AssertCalled(t, "CreateLogMonitoringSetting", ctx, "meid", "cluster-name", mock.Anything) + }) + + t.Run("error creating log monitoring settings", func(t *testing.T) { + mockClient := dtclientmock.NewClient(t) + mockClient.On("GetSettingsForLogModule", mock.Anything, "meid"). + Return(dtclient.GetLogMonSettingsResponse{TotalCount: 0}, nil) + mockClient.On("CreateLogMonitoringSetting", mock.Anything, "meid", "cluster-name", mock.Anything). + Return("", errors.New("error when creating")) + + dk := &dynakube.DynaKube{ + Status: dynakube.DynaKubeStatus{ + KubernetesClusterMEID: "meid", + KubernetesClusterName: "cluster-name", + }, + Spec: dynakube.DynaKubeSpec{ + LogMonitoring: &logmonitoring.Spec{ + IngestRuleMatchers: []logmonitoring.IngestRuleMatchers{}, + }, + }, + } + + r := &reconciler{ + dk: dk, + dtc: mockClient, + } + + err := r.checkLogMonitoringSettings(ctx) + require.Error(t, err) + require.Contains(t, err.Error(), "error when creating") + + mockClient.AssertCalled(t, "GetSettingsForLogModule", ctx, "meid") + mockClient.AssertCalled(t, "CreateLogMonitoringSetting", ctx, "meid", "cluster-name", mock.Anything) + }) +} diff --git a/pkg/controllers/dynakube/logmonitoring/reconciler.go b/pkg/controllers/dynakube/logmonitoring/reconciler.go index f1ebacbe9b..6c91997f11 100644 --- a/pkg/controllers/dynakube/logmonitoring/reconciler.go +++ b/pkg/controllers/dynakube/logmonitoring/reconciler.go @@ -9,6 +9,7 @@ import ( oaconnectioninfo "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/connectioninfo/oneagent" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/logmonitoring/configsecret" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/logmonitoring/daemonset" + "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/logmonitoring/logmonsettings" "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/monitoredentities" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -23,6 +24,7 @@ type Reconciler struct { daemonsetReconciler controllers.Reconciler oneAgentConnectionInfoReconciler controllers.Reconciler monitoredEntitiesReconciler controllers.Reconciler + logmonsettingsReconciler controllers.Reconciler } type ReconcilerBuilder func(clt client.Client, apiReader client.Reader, dtc dtclient.Client, dk *dynakube.DynaKube) controllers.Reconciler @@ -41,6 +43,7 @@ func NewReconciler(clt client.Client, daemonsetReconciler: daemonset.NewReconciler(clt, apiReader, dk), oneAgentConnectionInfoReconciler: oaconnectioninfo.NewReconciler(clt, apiReader, dtc, dk), monitoredEntitiesReconciler: monitoredentities.NewReconciler(dtc, dk), + logmonsettingsReconciler: logmonsettings.NewReconciler(dtc, dk), } } @@ -65,5 +68,10 @@ func (r *Reconciler) Reconcile(ctx context.Context) error { return err } + err = r.logmonsettingsReconciler.Reconcile(ctx) + if err != nil { + return err + } + return nil } diff --git a/pkg/controllers/dynakube/logmonitoring/reconciler_test.go b/pkg/controllers/dynakube/logmonitoring/reconciler_test.go index a06dd0b064..4e95719e7d 100644 --- a/pkg/controllers/dynakube/logmonitoring/reconciler_test.go +++ b/pkg/controllers/dynakube/logmonitoring/reconciler_test.go @@ -6,6 +6,9 @@ import ( "testing" "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" + "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" + dtclientmock "github.com/Dynatrace/dynatrace-operator/test/mocks/pkg/clients/dynatrace" controllermock "github.com/Dynatrace/dynatrace-operator/test/mocks/pkg/controllers" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -55,7 +58,18 @@ func TestReconcile(t *testing.T) { passOAConnectionInfo := createPassingReconciler(t) passConfigSecret := createPassingReconciler(t) passDaemonSet := createPassingReconciler(t) - dk := &dynakube.DynaKube{} + passLogMonSetting := createPassingReconciler(t) + dk := &dynakube.DynaKube{ + Spec: dynakube.DynaKubeSpec{ + LogMonitoring: &logmonitoring.Spec{}, + }, + } + mockClient := dtclientmock.NewClient(t) + mockClient.On("GetSettingsForLogModule", mock.AnythingOfType("context.backgroundCtx"), "meid"). + Return(dtclient.GetLogMonSettingsResponse{}, nil).Maybe() + mockClient.On("CreateLogMonitoringSetting", mock.AnythingOfType("context.backgroundCtx"), "meid", "cluster-name", []logmonitoring.IngestRuleMatchers{}). + Return("test-object-id", nil).Maybe() + passMonitoredEntity := createPassingMonitoredEntityReconciler(t, dk) r := Reconciler{ dk: dk, @@ -63,6 +77,8 @@ func TestReconcile(t *testing.T) { oneAgentConnectionInfoReconciler: passOAConnectionInfo, configSecretReconciler: passConfigSecret, daemonsetReconciler: passDaemonSet, + logmonsettingsReconciler: passLogMonSetting, + dtc: mockClient, } err := r.Reconcile(ctx) diff --git a/test/mocks/cmd/manager/provider.go b/test/mocks/cmd/manager/provider.go index c9cab732ce..95961179d7 100644 --- a/test/mocks/cmd/manager/provider.go +++ b/test/mocks/cmd/manager/provider.go @@ -4,8 +4,9 @@ package mocks import ( mock "github.com/stretchr/testify/mock" - rest "k8s.io/client-go/rest" manager "sigs.k8s.io/controller-runtime/pkg/manager" + + rest "k8s.io/client-go/rest" ) // Provider is an autogenerated mock type for the Provider type diff --git a/test/mocks/cmd/remote_command/executor.go b/test/mocks/cmd/remote_command/executor.go index b49fe3b692..16299af9dd 100644 --- a/test/mocks/cmd/remote_command/executor.go +++ b/test/mocks/cmd/remote_command/executor.go @@ -86,8 +86,8 @@ func (_c *Executor_Exec_Call) Run(run func(ctx context.Context, config *rest.Con return _c } -func (_c *Executor_Exec_Call) Return(_a0 *bytes.Buffer, _a1 *bytes.Buffer, _a2 error) *Executor_Exec_Call { - _c.Call.Return(_a0, _a1, _a2) +func (_c *Executor_Exec_Call) Return(stdOut *bytes.Buffer, stdErr *bytes.Buffer, err error) *Executor_Exec_Call { + _c.Call.Return(stdOut, stdErr, err) return _c } diff --git a/test/mocks/pkg/clients/dynatrace/client.go b/test/mocks/pkg/clients/dynatrace/client.go index 1efdbdd4fb..0bb92f83d0 100644 --- a/test/mocks/pkg/clients/dynatrace/client.go +++ b/test/mocks/pkg/clients/dynatrace/client.go @@ -7,6 +7,9 @@ import ( io "io" dynatrace "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" + + logmonitoring "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube/logmonitoring" + mock "github.com/stretchr/testify/mock" ) @@ -23,6 +26,65 @@ func (_m *Client) EXPECT() *Client_Expecter { return &Client_Expecter{mock: &_m.Mock} } +// CreateLogMonitoringSetting provides a mock function with given fields: ctx, scope, clusterName, ingestRuleMatchers +func (_m *Client) CreateLogMonitoringSetting(ctx context.Context, scope string, clusterName string, ingestRuleMatchers []logmonitoring.IngestRuleMatchers) (string, error) { + ret := _m.Called(ctx, scope, clusterName, ingestRuleMatchers) + + if len(ret) == 0 { + panic("no return value specified for CreateLogMonitoringSetting") + } + + var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, []logmonitoring.IngestRuleMatchers) (string, error)); ok { + return rf(ctx, scope, clusterName, ingestRuleMatchers) + } + if rf, ok := ret.Get(0).(func(context.Context, string, string, []logmonitoring.IngestRuleMatchers) string); ok { + r0 = rf(ctx, scope, clusterName, ingestRuleMatchers) + } else { + r0 = ret.Get(0).(string) + } + + if rf, ok := ret.Get(1).(func(context.Context, string, string, []logmonitoring.IngestRuleMatchers) error); ok { + r1 = rf(ctx, scope, clusterName, ingestRuleMatchers) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Client_CreateLogMonitoringSetting_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateLogMonitoringSetting' +type Client_CreateLogMonitoringSetting_Call struct { + *mock.Call +} + +// CreateLogMonitoringSetting is a helper method to define mock.On call +// - ctx context.Context +// - scope string +// - clusterName string +// - ingestRuleMatchers []logmonitoring.IngestRuleMatchers +func (_e *Client_Expecter) CreateLogMonitoringSetting(ctx interface{}, scope interface{}, clusterName interface{}, ingestRuleMatchers interface{}) *Client_CreateLogMonitoringSetting_Call { + return &Client_CreateLogMonitoringSetting_Call{Call: _e.mock.On("CreateLogMonitoringSetting", ctx, scope, clusterName, ingestRuleMatchers)} +} + +func (_c *Client_CreateLogMonitoringSetting_Call) Run(run func(ctx context.Context, scope string, clusterName string, ingestRuleMatchers []logmonitoring.IngestRuleMatchers)) *Client_CreateLogMonitoringSetting_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string), args[2].(string), args[3].([]logmonitoring.IngestRuleMatchers)) + }) + return _c +} + +func (_c *Client_CreateLogMonitoringSetting_Call) Return(_a0 string, _a1 error) *Client_CreateLogMonitoringSetting_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Client_CreateLogMonitoringSetting_Call) RunAndReturn(run func(context.Context, string, string, []logmonitoring.IngestRuleMatchers) (string, error)) *Client_CreateLogMonitoringSetting_Call { + _c.Call.Return(run) + return _c +} + // CreateOrUpdateKubernetesAppSetting provides a mock function with given fields: ctx, scope func (_m *Client) CreateOrUpdateKubernetesAppSetting(ctx context.Context, scope string) (string, error) { ret := _m.Called(ctx, scope) @@ -1104,6 +1166,63 @@ func (_c *Client_GetRulesSettings_Call) RunAndReturn(run func(context.Context, s return _c } +// GetSettingsForLogModule provides a mock function with given fields: ctx, monitoredEntity +func (_m *Client) GetSettingsForLogModule(ctx context.Context, monitoredEntity string) (dynatrace.GetLogMonSettingsResponse, error) { + ret := _m.Called(ctx, monitoredEntity) + + if len(ret) == 0 { + panic("no return value specified for GetSettingsForLogModule") + } + + var r0 dynatrace.GetLogMonSettingsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (dynatrace.GetLogMonSettingsResponse, error)); ok { + return rf(ctx, monitoredEntity) + } + if rf, ok := ret.Get(0).(func(context.Context, string) dynatrace.GetLogMonSettingsResponse); ok { + r0 = rf(ctx, monitoredEntity) + } else { + r0 = ret.Get(0).(dynatrace.GetLogMonSettingsResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, monitoredEntity) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Client_GetSettingsForLogModule_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSettingsForLogModule' +type Client_GetSettingsForLogModule_Call struct { + *mock.Call +} + +// GetSettingsForLogModule is a helper method to define mock.On call +// - ctx context.Context +// - monitoredEntity string +func (_e *Client_Expecter) GetSettingsForLogModule(ctx interface{}, monitoredEntity interface{}) *Client_GetSettingsForLogModule_Call { + return &Client_GetSettingsForLogModule_Call{Call: _e.mock.On("GetSettingsForLogModule", ctx, monitoredEntity)} +} + +func (_c *Client_GetSettingsForLogModule_Call) Run(run func(ctx context.Context, monitoredEntity string)) *Client_GetSettingsForLogModule_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(string)) + }) + return _c +} + +func (_c *Client_GetSettingsForLogModule_Call) Return(_a0 dynatrace.GetLogMonSettingsResponse, _a1 error) *Client_GetSettingsForLogModule_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *Client_GetSettingsForLogModule_Call) RunAndReturn(run func(context.Context, string) (dynatrace.GetLogMonSettingsResponse, error)) *Client_GetSettingsForLogModule_Call { + _c.Call.Return(run) + return _c +} + // GetSettingsForMonitoredEntity provides a mock function with given fields: ctx, monitoredEntity, schemaId func (_m *Client) GetSettingsForMonitoredEntity(ctx context.Context, monitoredEntity *dynatrace.MonitoredEntity, schemaId string) (dynatrace.GetSettingsResponse, error) { ret := _m.Called(ctx, monitoredEntity, schemaId) diff --git a/test/mocks/pkg/controllers/dynakube/dynatraceclient/builder.go b/test/mocks/pkg/controllers/dynakube/dynatraceclient/builder.go index 9c0fbd683f..28de949c0c 100644 --- a/test/mocks/pkg/controllers/dynakube/dynatraceclient/builder.go +++ b/test/mocks/pkg/controllers/dynakube/dynatraceclient/builder.go @@ -7,9 +7,12 @@ import ( dynakube "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" dynatrace "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" + dynatraceclient "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/dynatraceclient" - token "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/token" + mock "github.com/stretchr/testify/mock" + + token "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/token" ) // Builder is an autogenerated mock type for the Builder type diff --git a/test/mocks/pkg/controllers/dynakube/istio/reconciler.go b/test/mocks/pkg/controllers/dynakube/istio/reconciler.go index 77b8ea312d..18d001080c 100644 --- a/test/mocks/pkg/controllers/dynakube/istio/reconciler.go +++ b/test/mocks/pkg/controllers/dynakube/istio/reconciler.go @@ -6,6 +6,7 @@ import ( context "context" dynakube "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube" + mock "github.com/stretchr/testify/mock" ) diff --git a/test/mocks/pkg/controllers/dynakube/version/status_updater.go b/test/mocks/pkg/controllers/dynakube/version/status_updater.go index edd48ba9dd..9876280843 100644 --- a/test/mocks/pkg/controllers/dynakube/version/status_updater.go +++ b/test/mocks/pkg/controllers/dynakube/version/status_updater.go @@ -5,9 +5,10 @@ package mocks import ( context "context" - status "github.com/Dynatrace/dynatrace-operator/pkg/api/status" dynatrace "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace" mock "github.com/stretchr/testify/mock" + + status "github.com/Dynatrace/dynatrace-operator/pkg/api/status" ) // StatusUpdater is an autogenerated mock type for the StatusUpdater type diff --git a/test/mocks/pkg/oci/registry/image_getter.go b/test/mocks/pkg/oci/registry/image_getter.go index ae5a108197..9bd1d6dc9e 100644 --- a/test/mocks/pkg/oci/registry/image_getter.go +++ b/test/mocks/pkg/oci/registry/image_getter.go @@ -6,8 +6,9 @@ import ( context "context" registry "github.com/Dynatrace/dynatrace-operator/pkg/oci/registry" - v1 "github.com/google/go-containerregistry/pkg/v1" mock "github.com/stretchr/testify/mock" + + v1 "github.com/google/go-containerregistry/pkg/v1" ) // ImageGetter is an autogenerated mock type for the ImageGetter type diff --git a/test/mocks/sigs.k8s.io/controller-runtime/pkg/manager/manager.go b/test/mocks/sigs.k8s.io/controller-runtime/pkg/manager/manager.go index 02714586ab..8b8ee50c94 100644 --- a/test/mocks/sigs.k8s.io/controller-runtime/pkg/manager/manager.go +++ b/test/mocks/sigs.k8s.io/controller-runtime/pkg/manager/manager.go @@ -3,20 +3,31 @@ package mocks import ( + cache "sigs.k8s.io/controller-runtime/pkg/cache" + client "sigs.k8s.io/controller-runtime/pkg/client" + + config "sigs.k8s.io/controller-runtime/pkg/config" + context "context" + + healthz "sigs.k8s.io/controller-runtime/pkg/healthz" + http "net/http" logr "github.com/go-logr/logr" - mock "github.com/stretchr/testify/mock" + + manager "sigs.k8s.io/controller-runtime/pkg/manager" + meta "k8s.io/apimachinery/pkg/api/meta" - runtime "k8s.io/apimachinery/pkg/runtime" - rest "k8s.io/client-go/rest" + + mock "github.com/stretchr/testify/mock" + record "k8s.io/client-go/tools/record" - cache "sigs.k8s.io/controller-runtime/pkg/cache" - client "sigs.k8s.io/controller-runtime/pkg/client" - config "sigs.k8s.io/controller-runtime/pkg/config" - healthz "sigs.k8s.io/controller-runtime/pkg/healthz" - manager "sigs.k8s.io/controller-runtime/pkg/manager" + + rest "k8s.io/client-go/rest" + + runtime "k8s.io/apimachinery/pkg/runtime" + webhook "sigs.k8s.io/controller-runtime/pkg/webhook" )