This is an automated email from the ASF dual-hosted git repository.
caigy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-operator.git
The following commit(s) were added to refs/heads/master by this push:
new bd3757e fix #207: Support to set environment variables in NameServer
pod. (#208)
bd3757e is described below
commit bd3757e0813c3394fcb7634b3f3ecb66e32cc5e3
Author: Jin Shang <[email protected]>
AuthorDate: Sun Feb 4 14:56:46 2024 +0800
fix #207: Support to set environment variables in NameServer pod. (#208)
Co-authored-by: jim.sj <[email protected]>
---
.../crds/rocketmq.apache.org_nameservices.yaml | 105 +++++++++++++++++++++
deploy/crds/rocketmq.apache.org_nameservices.yaml | 105 +++++++++++++++++++++
pkg/apis/rocketmq/v1alpha1/nameservice_types.go | 2 +
.../nameservice/nameservice_controller.go | 1 +
4 files changed, 213 insertions(+)
diff --git
a/charts/rocketmq-operator/crds/rocketmq.apache.org_nameservices.yaml
b/charts/rocketmq-operator/crds/rocketmq.apache.org_nameservices.yaml
index 315d85e..49317b0 100644
--- a/charts/rocketmq-operator/crds/rocketmq.apache.org_nameservices.yaml
+++ b/charts/rocketmq-operator/crds/rocketmq.apache.org_nameservices.yaml
@@ -1023,6 +1023,111 @@ spec:
dnsPolicy:
description: dnsPolicy defines how a pod's DNS will be
configured
type: string
+ env:
+ description: Env defines custom env, e.g. JAVA_OPT_EXT
+ 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:
+ description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or
its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
metadata.name,
+ metadata.namespace, `metadata.labels[''<KEY>'']`,
`metadata.annotations[''<KEY>'']`,
+ 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
+ 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
+ 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:
+ description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
key must
+ be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
hostNetwork:
description: HostNetwork can be true or false
type: boolean
diff --git a/deploy/crds/rocketmq.apache.org_nameservices.yaml
b/deploy/crds/rocketmq.apache.org_nameservices.yaml
index 315d85e..49317b0 100644
--- a/deploy/crds/rocketmq.apache.org_nameservices.yaml
+++ b/deploy/crds/rocketmq.apache.org_nameservices.yaml
@@ -1023,6 +1023,111 @@ spec:
dnsPolicy:
description: dnsPolicy defines how a pod's DNS will be
configured
type: string
+ env:
+ description: Env defines custom env, e.g. JAVA_OPT_EXT
+ 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:
+ description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap or
its key
+ must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
metadata.name,
+ metadata.namespace, `metadata.labels[''<KEY>'']`,
`metadata.annotations[''<KEY>'']`,
+ 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
+ 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
+ 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:
+ description: 'Name of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
key must
+ be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
hostNetwork:
description: HostNetwork can be true or false
type: boolean
diff --git a/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
b/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
index a6f4ace..007b6e0 100644
--- a/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
+++ b/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
@@ -47,6 +47,8 @@ type NameServiceSpec struct {
StorageMode string `json:"storageMode"`
// HostPath is the local path to store data
HostPath string `json:"hostPath"`
+ // Env defines custom env, e.g. JAVA_OPT_EXT
+ Env []corev1.EnvVar `json:"env,omitempty"`
// VolumeClaimTemplates defines the StorageClass
VolumeClaimTemplates []corev1.PersistentVolumeClaim
`json:"volumeClaimTemplates"`
// Pod Security Context
diff --git a/pkg/controller/nameservice/nameservice_controller.go
b/pkg/controller/nameservice/nameservice_controller.go
index ece34de..88fe0fa 100644
--- a/pkg/controller/nameservice/nameservice_controller.go
+++ b/pkg/controller/nameservice/nameservice_controller.go
@@ -374,6 +374,7 @@ func (r *ReconcileNameService)
statefulSetForNameService(nameService *rocketmqv1
// Name must be lower case !
Name: "name-service",
ImagePullPolicy:
nameService.Spec.ImagePullPolicy,
+ Env:
nameService.Spec.Env,
Ports: []corev1.ContainerPort{{
ContainerPort:
cons.NameServiceMainContainerPort,
Name:
cons.NameServiceMainContainerPortName,