diff --git a/deploy/operator.yaml b/deploy/operator.yaml index bc171ab45ba..b4ffeddac26 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -250,6 +250,7 @@ rules: - scylla.scylladb.com resources: - scyllaoperatorconfigs + - scyllaoperatorconfigs/status verbs: - create - delete @@ -5003,12 +5004,37 @@ spec: description: spec defines the desired state of the operator. properties: scyllaUtilsImage: - description: scyllaUtilsImage is a Scylla image used for running scylla utilities. - minLength: 1 + description: scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities. + type: string + unsupportedBashToolsImageOverride: + description: unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk. + type: string + unsupportedGrafanaImageOverride: + description: unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + type: string + unsupportedPrometheusVersionOverride: + description: unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. type: string type: object status: description: status defines the observed state of the operator. + properties: + bashToolsImage: + description: bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes. + type: string + grafanaImage: + description: grafanaImage is the image used by the operator to create a Grafana instance. + type: string + observedGeneration: + description: observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig's generation, which is updated on mutation by the API Server. + format: int64 + type: integer + prometheusVersion: + description: prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance. + type: string + scyllaDBUtilsImage: + description: scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities. + type: string type: object type: object served: true @@ -5242,6 +5268,7 @@ webhooks: - UPDATE resources: - nodeconfigs + - scyllaoperatorconfigs --- apiVersion: policy/v1 diff --git a/deploy/operator/00_clusterrole_def.yaml b/deploy/operator/00_clusterrole_def.yaml index a819a2f397a..fadc0536f7f 100644 --- a/deploy/operator/00_clusterrole_def.yaml +++ b/deploy/operator/00_clusterrole_def.yaml @@ -240,6 +240,7 @@ rules: - scylla.scylladb.com resources: - scyllaoperatorconfigs + - scyllaoperatorconfigs/status verbs: - create - delete diff --git a/docs/source/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst b/docs/source/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst index 682affc865e..fee8be92d66 100755 --- a/docs/source/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst +++ b/docs/source/api-reference/groups/scylla.scylladb.com/scyllaoperatorconfigs.rst @@ -77,7 +77,16 @@ object - Description * - scyllaUtilsImage - string - - scyllaUtilsImage is a Scylla image used for running scylla utilities. + - scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities. + * - unsupportedBashToolsImageOverride + - string + - unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedGrafanaImageOverride + - string + - unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + * - unsupportedPrometheusVersionOverride + - string + - unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. .. _api-scylla.scylladb.com-scyllaoperatorconfigs-v1alpha1-.status: @@ -92,3 +101,26 @@ Type """" object + +.. list-table:: + :widths: 25 10 150 + :header-rows: 1 + + * - Property + - Type + - Description + * - bashToolsImage + - string + - bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes. + * - grafanaImage + - string + - grafanaImage is the image used by the operator to create a Grafana instance. + * - observedGeneration + - integer + - observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig's generation, which is updated on mutation by the API Server. + * - prometheusVersion + - string + - prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance. + * - scyllaDBUtilsImage + - string + - scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities. diff --git a/examples/eks/cluster.yaml b/examples/eks/cluster.yaml index 39a5e45f8e1..e4ed4ffb189 100644 --- a/examples/eks/cluster.yaml +++ b/examples/eks/cluster.yaml @@ -3,9 +3,7 @@ apiVersion: v1 kind: Namespace metadata: name: scylla - --- - # Scylla Cluster apiVersion: scylla.scylladb.com/v1 kind: ScyllaCluster @@ -16,88 +14,88 @@ spec: agentVersion: 3.3.0 version: 6.1.0 sysctls: - - "fs.aio-max-nr=2097152" + - fs.aio-max-nr=2097152 datacenter: name: us-east-1 racks: - - name: a - members: 1 - storage: - storageClassName: scylladb-local-xfs - capacity: 1800G - resources: - limits: - cpu: 7 - memory: 56G - placement: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: topology.kubernetes.io/zone - operator: In - values: - - us-east-1a - - key: scylla.scylladb.com/node-type - operator: In - values: - - scylla - tolerations: - - key: role - operator: Equal - value: scylla-clusters - effect: NoSchedule - - name: b - members: 1 - storage: - storageClassName: scylladb-local-xfs - capacity: 1800G - resources: - limits: - cpu: 7 - memory: 56G - placement: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: topology.kubernetes.io/zone - operator: In - values: - - us-east-1b - - key: scylla.scylladb.com/node-type - operator: In - values: - - scylla - tolerations: - - key: role - operator: Equal - value: scylla-clusters - effect: NoSchedule - - name: c - members: 1 - storage: - storageClassName: scylladb-local-xfs - capacity: 1800G - resources: - limits: - cpu: 7 - memory: 56G - placement: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: topology.kubernetes.io/zone - operator: In - values: - - us-east-1c - - key: scylla.scylladb.com/node-type - operator: In - values: - - scylla - tolerations: - - key: role - operator: Equal - value: scylla-clusters - effect: NoSchedule + - name: a + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + resources: + limits: + cpu: 7 + memory: 56G + placement: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1a + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: b + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + resources: + limits: + cpu: 7 + memory: 56G + placement: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1b + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule + - name: c + members: 1 + storage: + storageClassName: scylladb-local-xfs + capacity: 1800G + resources: + limits: + cpu: 7 + memory: 56G + placement: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: + - us-east-1c + - key: scylla.scylladb.com/node-type + operator: In + values: + - scylla + tolerations: + - key: role + operator: Equal + value: scylla-clusters + effect: NoSchedule diff --git a/examples/generic/cluster.yaml b/examples/generic/cluster.yaml index dfc0f464000..921ce7d43a6 100644 --- a/examples/generic/cluster.yaml +++ b/examples/generic/cluster.yaml @@ -3,9 +3,7 @@ apiVersion: v1 kind: Namespace metadata: name: scylla - --- - # Simple Scylla Cluster apiVersion: scylla.scylladb.com/v1 kind: ScyllaCluster @@ -22,8 +20,8 @@ spec: name: us-east-1 racks: - name: us-east-1a - scyllaConfig: "scylla-config" - scyllaAgentConfig: "scylla-agent-config" + scyllaConfig: scylla-config + scyllaAgentConfig: scylla-agent-config members: 3 storage: capacity: 5Gi diff --git a/examples/gke/cluster.yaml b/examples/gke/cluster.yaml index e2c9e3e9e66..c117ce39ff4 100644 --- a/examples/gke/cluster.yaml +++ b/examples/gke/cluster.yaml @@ -3,9 +3,7 @@ apiVersion: v1 kind: Namespace metadata: name: scylla - --- - # Scylla Cluster apiVersion: scylla.scylladb.com/v1 kind: ScyllaCluster @@ -17,13 +15,13 @@ spec: version: 6.1.0 automaticOrphanedNodeCleanup: true sysctls: - - "fs.aio-max-nr=2097152" + - fs.aio-max-nr=2097152 datacenter: name: racks: - name: - scyllaConfig: "scylla-config" - scyllaAgentConfig: "scylla-agent-config" + scyllaConfig: scylla-config + scyllaAgentConfig: scylla-agent-config members: 2 storage: storageClassName: scylladb-local-xfs @@ -40,10 +38,10 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - - key: failure-domain.beta.kubernetes.io/zone - operator: In - values: - - + - key: failure-domain.beta.kubernetes.io/zone + operator: In + values: + - tolerations: - key: role operator: Equal diff --git a/examples/helm/values.cluster.yaml b/examples/helm/values.cluster.yaml index 2df1390ebaa..4d0f77bee21 100644 --- a/examples/helm/values.cluster.yaml +++ b/examples/helm/values.cluster.yaml @@ -3,20 +3,19 @@ scyllaImage: tag: 6.1.0 agentImage: tag: 3.3.0 - # Cluster information developerMode: true datacenter: us-east-1 racks: -- name: us-east-1b - members: 2 - storage: - capacity: 5Gi - storageClassName: scylladb-local-xfs - resources: - limits: - cpu: 1 - memory: 1Gi - requests: - cpu: 1 - memory: 1Gi + - name: us-east-1b + members: 2 + storage: + capacity: 5Gi + storageClassName: scylladb-local-xfs + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi diff --git a/examples/helm/values.manager.yaml b/examples/helm/values.manager.yaml index 7f470e080d4..80d6b82e51d 100644 --- a/examples/helm/values.manager.yaml +++ b/examples/helm/values.manager.yaml @@ -1,7 +1,6 @@ # Scylla Manager image image: tag: 3.3.0 - # Resources allocated to Scylla Manager pods resources: limits: @@ -18,7 +17,6 @@ controllerResources: requests: cpu: 200m memory: 32Mi - # Scylla instance for Manager scylla: developerMode: true diff --git a/examples/scylladb/scylla.scyllacluster.yaml b/examples/scylladb/scylla.scyllacluster.yaml index e851b7826d8..0cdd8b1796a 100644 --- a/examples/scylladb/scylla.scyllacluster.yaml +++ b/examples/scylladb/scylla.scyllacluster.yaml @@ -8,19 +8,19 @@ spec: developerMode: true automaticOrphanedNodeCleanup: true sysctls: - - "fs.aio-max-nr=30000000" + - fs.aio-max-nr=30000000 datacenter: name: us-east-1 racks: - - name: us-east-1a - members: 1 - storage: - capacity: 1Gi - storageClassName: scylladb-local-xfs - resources: - requests: - cpu: 10m - memory: 100Mi - limits: - cpu: 1 - memory: 1Gi + - name: us-east-1a + members: 1 + storage: + capacity: 1Gi + storageClassName: scylladb-local-xfs + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: 1 + memory: 1Gi diff --git a/helm/deploy/manager_prod.yaml b/helm/deploy/manager_prod.yaml index f6387b55450..7cceceffb75 100644 --- a/helm/deploy/manager_prod.yaml +++ b/helm/deploy/manager_prod.yaml @@ -1,12 +1,9 @@ # Scylla Manager image image: repository: docker.io/scylladb - controllerImage: repository: docker.io/scylladb - logLevel: info - # Resources allocated to Scylla Manager pods resources: requests: @@ -17,7 +14,6 @@ controllerResources: requests: cpu: 10m memory: 20Mi - # Scylla instance for Manager scylla: fullnameOverride: scylla-manager-cluster @@ -31,15 +27,15 @@ scylla: cpuset: true datacenter: manager-dc racks: - - name: manager-rack - members: 1 - storage: - capacity: 5Gi - storageClassName: scylladb-local-xfs - resources: - limits: - cpu: 1 - memory: 200Mi - requests: - cpu: 1 - memory: 200Mi + - name: manager-rack + members: 1 + storage: + capacity: 5Gi + storageClassName: scylladb-local-xfs + resources: + limits: + cpu: 1 + memory: 200Mi + requests: + cpu: 1 + memory: 200Mi diff --git a/helm/scylla-manager/values.yaml b/helm/scylla-manager/values.yaml index 2b489bb3249..22d608f0163 100644 --- a/helm/scylla-manager/values.yaml +++ b/helm/scylla-manager/values.yaml @@ -2,20 +2,17 @@ nameOverride: "" # Allows to override names used in Scylla Manager k8s objects. fullnameOverride: "" - # Allows to customize Scylla Manager image image: repository: scylladb pullPolicy: IfNotPresent tag: 3.3.0@sha256:e8c5b62c9330f91dfca24f109b033df78113d3ffaac306edf6d3c4346e1fa0bf - # Allows to customize Scylla Manager Controller image controllerImage: repository: scylladb pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "" - # Scylla Manager log level, allowed values are: error, warn, info, debug, trace logLevel: info # Resources allocated to Scylla Manager pods @@ -29,29 +26,21 @@ controllerResources: cpu: 10m memory: 20Mi # Node selector for Scylla Manager pod -nodeSelector: { } - +nodeSelector: {} # Tolerations for Scylla Manager pod -tolerations: [ ] - +tolerations: [] # Affinity for Scylla Manager pod -affinity: { } - +affinity: {} ## SecurityContext holds pod-level security attributes securityContext: {} - # Node selector for Scylla Manager Controller pod -controllerNodeSelector: { } - +controllerNodeSelector: {} # Tolerations for Scylla Manager Controller pod -controllerTolerations: [ ] - +controllerTolerations: [] # Affinity for Scylla Manager Controller pod -controllerAffinity: { } - +controllerAffinity: {} ## ControllerSecurityContext holds pod-level security attributes controllerSecurityContext: {} - serviceAccount: # Specifies whether a service account should be created create: true @@ -60,7 +49,6 @@ serviceAccount: # The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" - controllerServiceAccount: # Specifies whether a service account should be created create: true @@ -69,7 +57,6 @@ controllerServiceAccount: # The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" - scylla: developerMode: true scyllaImage: @@ -78,19 +65,18 @@ scylla: tag: 3.3.0 datacenter: manager-dc racks: - - name: manager-rack - members: 1 - storage: - capacity: 5Gi - storageClassName: scylladb-local-xfs - resources: - limits: - cpu: 1 - memory: 200Mi - requests: - cpu: 1 - memory: 200Mi - + - name: manager-rack + members: 1 + storage: + capacity: 5Gi + storageClassName: scylladb-local-xfs + resources: + limits: + cpu: 1 + memory: 200Mi + requests: + cpu: 1 + memory: 200Mi # Whether to create Prometheus ServiceMonitor serviceMonitor: create: false diff --git a/helm/scylla/values.yaml b/helm/scylla/values.yaml index fed2e9bfd16..ed2f27f1b58 100644 --- a/helm/scylla/values.yaml +++ b/helm/scylla/values.yaml @@ -2,7 +2,6 @@ nameOverride: "" # Allows to override names used in Scylla k8s objects. fullnameOverride: "" - # Allows to customize Scylla image scyllaImage: repository: scylladb/scylla @@ -13,20 +12,17 @@ agentImage: repository: scylladb/scylla-manager-agent # Overrides the image tag whose default is the chart appVersion. tag: 3.3.0 - serviceAccount: # Specifies whether a service account should be created create: true # Annotations to add to the service account annotations: {} - alternator: # Allows to enable Alternator (DynamoDB compatible API) frontend enabled: false # Enables insecure HTTP port to be backwards compatible. This should be set to "false" in the overrides. insecureEnableHTTP: true - writeIsolation: "always" - + writeIsolation: always # If set to a non-empty string, it forces a rolling restart of Scylla. Change it again to trigger a new restart. forceRedeploymentReason: "" # Whether developer mode should be enabled. @@ -39,42 +35,37 @@ hostNetworking: false automaticOrphanedNodeCleanup: false # Sysctl properties to be applied during initialization given as a list of key=value pairs sysctls: [] - # Scylla Manager Backups task definition backups: [] # Scylla Manager Repair task definition repairs: [] - # scyllaArgs will be appended to Scylla binary startup parameters. scyllaArgs: "" - # ImagePullSecrets used for pulling Scylla and Agent images imagePullSecrets: [] - # Name of datacenter -datacenter: "us-east-1" +datacenter: us-east-1 # List of racks racks: -- name: "us-east-1a" - # Name of additional scylla config configMap - scyllaConfig: "scylla-config" - # Name of additional scylla manager agent config stored as secret - scyllaAgentConfig: "scylla-agent-config" - # Number of rack members (nodes) - members: 3 - # Storage definition - storage: - storageClassName: scylladb-local-xfs - capacity: 10Gi - # Scylla container resource definition - resources: - limits: - cpu: 1 - memory: 4Gi - requests: - cpu: 1 - memory: 4Gi - + - name: us-east-1a + # Name of additional scylla config configMap + scyllaConfig: scylla-config + # Name of additional scylla manager agent config stored as secret + scyllaAgentConfig: scylla-agent-config + # Number of rack members (nodes) + members: 3 + # Storage definition + storage: + storageClassName: scylladb-local-xfs + capacity: 10Gi + # Scylla container resource definition + resources: + limits: + cpu: 1 + memory: 4Gi + requests: + cpu: 1 + memory: 4Gi # Whether to create Prometheus ServiceMonitor serviceMonitor: create: false diff --git a/pkg/api/scylla/v1alpha1/scylla.scylladb.com_scyllaoperatorconfigs.yaml b/pkg/api/scylla/v1alpha1/scylla.scylladb.com_scyllaoperatorconfigs.yaml index fb228bfa479..3319c8c09d7 100644 --- a/pkg/api/scylla/v1alpha1/scylla.scylladb.com_scyllaoperatorconfigs.yaml +++ b/pkg/api/scylla/v1alpha1/scylla.scylladb.com_scyllaoperatorconfigs.yaml @@ -36,12 +36,37 @@ spec: description: spec defines the desired state of the operator. properties: scyllaUtilsImage: - description: scyllaUtilsImage is a Scylla image used for running scylla utilities. - minLength: 1 + description: scyllaUtilsImage is a ScyllaDB image used for running ScyllaDB utilities. + type: string + unsupportedBashToolsImageOverride: + description: unsupportedBashToolsImageOverride allows to adjust a generic Bash image with extra tools used by the operator for auxiliary purposes. Setting this field renders your cluster unsupported. Use at your own risk. + type: string + unsupportedGrafanaImageOverride: + description: unsupportedGrafanaImageOverride allows to adjust Grafana image used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. + type: string + unsupportedPrometheusVersionOverride: + description: unsupportedPrometheusVersionOverride allows to adjust Prometheus version used by the operator for testing, dev or emergencies. Setting this field renders your cluster unsupported. Use at your own risk. type: string type: object status: description: status defines the observed state of the operator. + properties: + bashToolsImage: + description: bashToolsImage is a generic Bash image with extra tools used by the operator for auxiliary purposes. + type: string + grafanaImage: + description: grafanaImage is the image used by the operator to create a Grafana instance. + type: string + observedGeneration: + description: observedGeneration is the most recent generation observed for this ScyllaOperatorConfig. It corresponds to the ScyllaOperatorConfig's generation, which is updated on mutation by the API Server. + format: int64 + type: integer + prometheusVersion: + description: prometheusVersion is the Prometheus version used by the operator to create a Prometheus instance. + type: string + scyllaDBUtilsImage: + description: scyllaDBUtilsImage is the ScyllaDB image used for running ScyllaDB utilities. + type: string type: object type: object served: true diff --git a/pkg/api/scylla/v1alpha1/zz_generated.deepcopy.go b/pkg/api/scylla/v1alpha1/zz_generated.deepcopy.go index 37b055d0e16..57c425a3040 100644 --- a/pkg/api/scylla/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/api/scylla/v1alpha1/zz_generated.deepcopy.go @@ -700,8 +700,8 @@ func (in *ScyllaOperatorConfig) DeepCopyInto(out *ScyllaOperatorConfig) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - out.Spec = in.Spec - out.Status = in.Status + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) return } @@ -759,6 +759,21 @@ func (in *ScyllaOperatorConfigList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScyllaOperatorConfigSpec) DeepCopyInto(out *ScyllaOperatorConfigSpec) { *out = *in + if in.UnsupportedBashToolsImageOverride != nil { + in, out := &in.UnsupportedBashToolsImageOverride, &out.UnsupportedBashToolsImageOverride + *out = new(string) + **out = **in + } + if in.UnsupportedGrafanaImageOverride != nil { + in, out := &in.UnsupportedGrafanaImageOverride, &out.UnsupportedGrafanaImageOverride + *out = new(string) + **out = **in + } + if in.UnsupportedPrometheusVersionOverride != nil { + in, out := &in.UnsupportedPrometheusVersionOverride, &out.UnsupportedPrometheusVersionOverride + *out = new(string) + **out = **in + } return } @@ -775,6 +790,31 @@ func (in *ScyllaOperatorConfigSpec) DeepCopy() *ScyllaOperatorConfigSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScyllaOperatorConfigStatus) DeepCopyInto(out *ScyllaOperatorConfigStatus) { *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + if in.ScyllaDBUtilsImage != nil { + in, out := &in.ScyllaDBUtilsImage, &out.ScyllaDBUtilsImage + *out = new(string) + **out = **in + } + if in.BashToolsImage != nil { + in, out := &in.BashToolsImage, &out.BashToolsImage + *out = new(string) + **out = **in + } + if in.GrafanaImage != nil { + in, out := &in.GrafanaImage, &out.GrafanaImage + *out = new(string) + **out = **in + } + if in.PrometheusVersion != nil { + in, out := &in.PrometheusVersion, &out.PrometheusVersion + *out = new(string) + **out = **in + } return }