Skip to content

Commit 1c75b2a

Browse files
authored
Merge pull request #380 from arangodb/feature/user-sidecars
Added user sidecars.
2 parents 1932867 + 55a2ea3 commit 1c75b2a

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

pkg/apis/deployment/v1alpha/server_group_spec.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ type ServerGroupSpec struct {
6060
Probes *ServerGroupProbesSpec `json:"probes,omitempty"`
6161
// PriorityClassName specifies a priority class name
6262
PriorityClassName string `json:"priorityClassName,omitempty"`
63+
// Sidecars specifies a list of additional containers to be started
64+
Sidecars []v1.Container `json:"sidecars,omitempty"`
6365
}
6466

6567
// ServerGroupProbesSpec contains specification for probes for pods of the server group
@@ -84,6 +86,11 @@ type ServerGroupProbesSpec struct {
8486
// return s.ReadinessProbeOverride != nil
8587
// }
8688

89+
// GetSidecars returns a list of sidecars the use wish to add
90+
func (s ServerGroupSpec) GetSidecars() []v1.Container {
91+
return s.Sidecars
92+
}
93+
8794
// IsLivenessProbeDisabled returns true if liveness probes are disabled
8895
func (s ServerGroupProbesSpec) IsLivenessProbeDisabled() bool {
8996
return util.BoolOrDefault(s.LivenessProbeDisabled)

pkg/apis/deployment/v1alpha/zz_generated.deepcopy.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/deployment/images.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, ima
198198
}
199199
}
200200
if err := k8sutil.CreateArangodPod(ib.KubeCli, true, ib.APIObject, role, id, podName, "", image, "", "", ib.Spec.GetImagePullPolicy(), "", false, terminationGracePeriod, args, env, nil, nil, nil,
201-
tolerations, serviceAccountName, "", "", "", nil, "", v1.ResourceRequirements{}, nil); err != nil {
201+
tolerations, serviceAccountName, "", "", "", nil, "", v1.ResourceRequirements{}, nil, nil); err != nil {
202202
log.Debug().Err(err).Msg("Failed to create image ID pod")
203203
return true, maskAny(err)
204204
}

pkg/deployment/resources/pod_creator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ func (r *Resources) createPodForMember(spec api.DeploymentSpec, memberID string,
660660
finalizers := r.createPodFinalizers(group)
661661
if err := k8sutil.CreateArangodPod(kubecli, spec.IsDevelopment(), apiObject, role, m.ID, m.PodName, m.PersistentVolumeClaimName, imageInfo.ImageID, lifecycleImage, alpineImage, spec.GetImagePullPolicy(),
662662
engine, requireUUID, terminationGracePeriod, args, env, finalizers, livenessProbe, readinessProbe, tolerations, serviceAccountName, tlsKeyfileSecretName, rocksdbEncryptionSecretName,
663-
clusterJWTSecretName, groupSpec.GetNodeSelector(), groupSpec.PriorityClassName, groupSpec.Resources, exporter); err != nil {
663+
clusterJWTSecretName, groupSpec.GetNodeSelector(), groupSpec.PriorityClassName, groupSpec.Resources, exporter, groupSpec.GetSidecars()); err != nil {
664664
return maskAny(err)
665665
}
666666
log.Debug().Str("pod-name", m.PodName).Msg("Created pod")
@@ -743,7 +743,7 @@ func (r *Resources) createPodForMember(spec api.DeploymentSpec, memberID string,
743743
}
744744
if err := k8sutil.CreateArangoSyncPod(kubecli, spec.IsDevelopment(), apiObject, role, m.ID, m.PodName, imageID, lifecycleImage, spec.GetImagePullPolicy(), terminationGracePeriod, args, env,
745745
livenessProbe, tolerations, serviceAccountName, tlsKeyfileSecretName, clientAuthCASecretName, masterJWTSecretName, clusterJWTSecretName, affinityWithRole, groupSpec.GetNodeSelector(),
746-
groupSpec.PriorityClassName, groupSpec.Resources); err != nil {
746+
groupSpec.PriorityClassName, groupSpec.Resources, groupSpec.GetSidecars()); err != nil {
747747
return maskAny(err)
748748
}
749749
log.Debug().Str("pod-name", m.PodName).Msg("Created pod")

pkg/util/k8sutil/pods.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ func CreateArangodPod(kubecli kubernetes.Interface, developmentMode bool, deploy
530530
args []string, env map[string]EnvValue, finalizers []string,
531531
livenessProbe *HTTPProbeConfig, readinessProbe *HTTPProbeConfig, tolerations []v1.Toleration, serviceAccountName string,
532532
tlsKeyfileSecretName, rocksdbEncryptionSecretName string, clusterJWTSecretName string, nodeSelector map[string]string,
533-
podPriorityClassName string, resources v1.ResourceRequirements, exporter *ArangodbExporterContainerConf) error {
533+
podPriorityClassName string, resources v1.ResourceRequirements, exporter *ArangodbExporterContainerConf, sidecars []v1.Container) error {
534534
// Prepare basic pod
535535
p := newPod(deployment.GetName(), deployment.GetNamespace(), role, id, podName, finalizers, tolerations, serviceAccountName, nodeSelector)
536536
terminationGracePeriodSeconds := int64(math.Ceil(terminationGracePeriod.Seconds()))
@@ -579,6 +579,11 @@ func CreateArangodPod(kubecli kubernetes.Interface, developmentMode bool, deploy
579579
p.Labels[LabelKeyArangoExporter] = "yes"
580580
}
581581

582+
// Add sidecars
583+
if len(sidecars) > 0 {
584+
p.Spec.Containers = append(p.Spec.Containers, sidecars...)
585+
}
586+
582587
// Add priorityClassName
583588
p.Spec.PriorityClassName = podPriorityClassName
584589

@@ -680,7 +685,7 @@ func CreateArangodPod(kubecli kubernetes.Interface, developmentMode bool, deploy
680685
func CreateArangoSyncPod(kubecli kubernetes.Interface, developmentMode bool, deployment APIObject, role, id, podName, image, lifecycleImage string, imagePullPolicy v1.PullPolicy,
681686
terminationGracePeriod time.Duration, args []string, env map[string]EnvValue, livenessProbe *HTTPProbeConfig, tolerations []v1.Toleration, serviceAccountName string,
682687
tlsKeyfileSecretName, clientAuthCASecretName, masterJWTSecretName, clusterJWTSecretName, affinityWithRole string, nodeSelector map[string]string,
683-
podPriorityClassName string, resources v1.ResourceRequirements) error {
688+
podPriorityClassName string, resources v1.ResourceRequirements, sidecars []v1.Container) error {
684689
// Prepare basic pod
685690
p := newPod(deployment.GetName(), deployment.GetNamespace(), role, id, podName, nil, tolerations, serviceAccountName, nodeSelector)
686691
terminationGracePeriodSeconds := int64(math.Ceil(terminationGracePeriod.Seconds()))
@@ -721,6 +726,11 @@ func CreateArangoSyncPod(kubecli kubernetes.Interface, developmentMode bool, dep
721726
}
722727
p.Spec.Containers = append(p.Spec.Containers, c)
723728

729+
// Add sidecars
730+
if len(sidecars) > 0 {
731+
p.Spec.Containers = append(p.Spec.Containers, sidecars...)
732+
}
733+
724734
// Add priorityClassName
725735
p.Spec.PriorityClassName = podPriorityClassName
726736

0 commit comments

Comments
 (0)