diff --git a/apis/installer/v1alpha1/kubestash_operator_types.go b/apis/installer/v1alpha1/kubestash_operator_types.go
index 5b8922fe..f951432b 100644
--- a/apis/installer/v1alpha1/kubestash_operator_types.go
+++ b/apis/installer/v1alpha1/kubestash_operator_types.go
@@ -88,6 +88,23 @@ type KubestashOperatorSpec struct {
NetVolAccessor NetVolAccessor `json:"netVolAccessor"`
// +optional
License string `json:"license"`
+ // List of sources to populate environment variables in the container.
+ // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+ // will be reported as an event when the container is starting. When a key exists in multiple
+ // sources, the value associated with the last source will take precedence.
+ // Values defined by an Env with a duplicate key will take precedence.
+ // Cannot be updated.
+ // +optional
+ // +listType=atomic
+ EnvFrom []core.EnvFromSource `json:"envFrom"`
+ // List of environment variables to set in the container.
+ // Cannot be updated.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ // +listType=map
+ // +listMapKey=name
+ Env []core.EnvVar `json:"env"`
}
type ImageRef struct {
diff --git a/apis/installer/v1alpha1/zz_generated.deepcopy.go b/apis/installer/v1alpha1/zz_generated.deepcopy.go
index 206bddd6..7fcafc2c 100644
--- a/apis/installer/v1alpha1/zz_generated.deepcopy.go
+++ b/apis/installer/v1alpha1/zz_generated.deepcopy.go
@@ -499,6 +499,20 @@ func (in *KubestashOperatorSpec) DeepCopyInto(out *KubestashOperatorSpec) {
out.Security = in.Security
out.Platform = in.Platform
out.NetVolAccessor = in.NetVolAccessor
+ if in.EnvFrom != nil {
+ in, out := &in.EnvFrom, &out.EnvFrom
+ *out = make([]v1.EnvFromSource, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Env != nil {
+ in, out := &in.Env, &out.Env
+ *out = make([]v1.EnvVar, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
return
}
diff --git a/charts/kubestash-operator/README.md b/charts/kubestash-operator/README.md
index e8eb56a0..b9863f70 100644
--- a/charts/kubestash-operator/README.md
+++ b/charts/kubestash-operator/README.md
@@ -106,6 +106,8 @@ The following table lists the configurable parameters of the `kubestash-operator
| netVolAccessor.memory | Memory for each network volume accessor deployment | "128Mi"
|
| netVolAccessor.runAsUser | Run the network volume accessor with this UID. | 2000
|
| netVolAccessor.privileged | Run the network volume accessor deployments in privileged mode | false
|
+| envFrom | List of sources to populate environment variables in the container | []
|
+| env | List of environment variables to set in the container | []
|
Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example:
diff --git a/charts/kubestash-operator/templates/operator/deployment.yaml b/charts/kubestash-operator/templates/operator/deployment.yaml
index 19fe253e..9cdc06ca 100644
--- a/charts/kubestash-operator/templates/operator/deployment.yaml
+++ b/charts/kubestash-operator/templates/operator/deployment.yaml
@@ -47,7 +47,14 @@ spec:
{{- if include "appscode.licenseSecretName" . }}
- --license-file=/var/run/secrets/appscode/license/key.txt
{{- end }}
+ {{- with .Values.envFrom }}
+ envFrom:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
env:
+ {{- with .Values.env }}
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
- name: POD_NAME
valueFrom:
fieldRef:
diff --git a/charts/kubestash-operator/values.openapiv3_schema.yaml b/charts/kubestash-operator/values.openapiv3_schema.yaml
index 9110318f..ce843423 100644
--- a/charts/kubestash-operator/values.openapiv3_schema.yaml
+++ b/charts/kubestash-operator/values.openapiv3_schema.yaml
@@ -2143,6 +2143,175 @@ properties:
type: object
criticalAddon:
type: boolean
+ env:
+ description: List of environment variables to set in the container. Cannot be
+ updated.
+ items:
+ description: EnvVar represents an environment variable present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a C_IDENTIFIER.
+ type: string
+ value:
+ description: '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. "$$(VAR_NAME)" will produce
+ the string literal "$(VAR_NAME)". Escaped references will never be expanded,
+ regardless of whether the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value. Cannot be used
+ if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name, metadata.namespace,
+ `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath is written in terms
+ of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ x-kubernetes-map-type: atomic
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only resources limits
+ and requests (limits.cpu, limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage) are
+ currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes, optional for
+ env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the exposed resources,
+ defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ x-kubernetes-map-type: atomic
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must be a valid
+ secret key.
+ type: string
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ envFrom:
+ description: List of sources to populate environment variables in the container.
+ The keys defined within a source must be a C_IDENTIFIER. All invalid keys will
+ be reported as an event when the container is starting. When a key exists in
+ multiple sources, the value associated with the last source will take precedence.
+ Values defined by an Env with a duplicate key will take precedence. Cannot be
+ updated.
+ items:
+ description: EnvFromSource represents the source of a set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t need
+ it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must be defined
+ type: boolean
+ type: object
+ x-kubernetes-map-type: atomic
+ prefix:
+ description: An optional identifier to prepend to each key in the ConfigMap.
+ Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t need
+ it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the Secret must be defined
+ type: boolean
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
fullnameOverride:
type: string
imagePullPolicy:
diff --git a/charts/kubestash-operator/values.yaml b/charts/kubestash-operator/values.yaml
index 71388d1e..b10d9c23 100644
--- a/charts/kubestash-operator/values.yaml
+++ b/charts/kubestash-operator/values.yaml
@@ -189,3 +189,9 @@ netVolAccessor:
runAsUser: 2000
# Run the network volume accessor deployments in privileged mode
privileged: false
+
+
+# List of sources to populate environment variables in the container
+envFrom: []
+# List of environment variables to set in the container
+env: []
diff --git a/charts/kubestash/values.openapiv3_schema.yaml b/charts/kubestash/values.openapiv3_schema.yaml
index d5a733ce..9747b205 100644
--- a/charts/kubestash/values.openapiv3_schema.yaml
+++ b/charts/kubestash/values.openapiv3_schema.yaml
@@ -2328,6 +2328,181 @@ properties:
type: boolean
enabled:
type: boolean
+ env:
+ description: List of environment variables to set in the container. Cannot
+ be updated.
+ items:
+ description: EnvVar represents an environment variable present in a Container.
+ properties:
+ name:
+ description: Name of the environment variable. Must be a C_IDENTIFIER.
+ type: string
+ value:
+ description: '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.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped
+ references will never be expanded, regardless of whether the variable
+ exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's value. Cannot be
+ used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively
+ required, but due to backwards compatibility is allowed to
+ be empty. Instances of this type with an empty value here
+ are almost certainly wrong. TODO: Add other useful fields.
+ apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or its key must be
+ defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ fieldRef:
+ description: 'Selects a field of the pod: supports metadata.name,
+ metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`,
+ spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath is written
+ in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in the specified API
+ version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ x-kubernetes-map-type: atomic
+ resourceFieldRef:
+ description: 'Selects a resource of the container: only resources
+ limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for volumes, optional
+ for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of the exposed resources,
+ defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ x-kubernetes-map-type: atomic
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select from. Must be
+ a valid secret key.
+ type: string
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively
+ required, but due to backwards compatibility is allowed to
+ be empty. Instances of this type with an empty value here
+ are almost certainly wrong. TODO: Add other useful fields.
+ apiVersion, kind, uid? More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the Secret or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ envFrom:
+ description: List of sources to populate environment variables in the container.
+ The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+ will be reported as an event when the container is starting. When a key
+ exists in multiple sources, the value associated with the last source will
+ take precedence. Values defined by an Env with a duplicate key will take
+ precedence. Cannot be updated.
+ items:
+ description: EnvFromSource represents the source of a set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must be defined
+ type: boolean
+ type: object
+ x-kubernetes-map-type: atomic
+ prefix:
+ description: An optional identifier to prepend to each key in the ConfigMap.
+ Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ default: ''
+ description: 'Name of the referent. This field is effectively required,
+ but due to backwards compatibility is allowed to be empty. Instances
+ of this type with an empty value here are almost certainly wrong.
+ TODO: Add other useful fields. apiVersion, kind, uid? More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Drop `kubebuilder:default` when controller-gen doesn''t
+ need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.'
+ type: string
+ optional:
+ description: Specify whether the Secret must be defined
+ type: boolean
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
fullnameOverride:
type: string
imagePullPolicy: