Skip to content

Commit

Permalink
app init container into a loop
Browse files Browse the repository at this point in the history
  • Loading branch information
dustinblack committed Sep 6, 2023
1 parent 6ff9d15 commit a0ba883
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 4 deletions.
41 changes: 40 additions & 1 deletion controllers/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,29 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func appinitConfigMap(cr *hyperfoilv1alpha1.Horreum) *corev1.ConfigMap {
return &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: cr.Name + "-app-init",
Namespace: cr.Namespace,
Labels: map[string]string{
"app": cr.Name,
},
},
Data: map[string]string{
// Note: 0.7.11 of Horreum used here still has grafana in the k8s-setup.sh script
"app_init.sh": `
sed -i '/grafana/d' /deployments/k8s-setup.sh
until sh -x -c /deployments/k8s-setup.sh
do
echo 'Re-trying init ...'
sleep 10
done
`,
},
}
}

func appPod(cr *hyperfoilv1alpha1.Horreum, keycloakPublicUrl, appPublicUrl string) *corev1.Pod {
keycloakInternalURL := keycloakInternalURL(cr)

Expand Down Expand Up @@ -58,6 +81,17 @@ func appPod(cr *hyperfoilv1alpha1.Horreum, keycloakPublicUrl, appPublicUrl strin
})
}
volumes := []corev1.Volume{
{
Name: "app-init",
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: cr.Name + "-app-init",
},
DefaultMode: func(i int32) *int32 { return &i }(0555),
},
},
},
{
Name: "imports",
VolumeSource: corev1.VolumeSource{
Expand Down Expand Up @@ -132,7 +166,7 @@ func appPod(cr *hyperfoilv1alpha1.Horreum, keycloakPublicUrl, appPublicUrl strin
Image: appImage(cr),
ImagePullPolicy: corev1.PullAlways,
Command: []string{
"sh", "-x", "-c", "/deployments/k8s-setup.sh",
"sh", "-x", "-c", "/deployments/app_init.sh;",
},
Env: []corev1.EnvVar{
secretEnv("KEYCLOAK_USER", keycloakAdminSecret(cr), corev1.BasicAuthUsernameKey),
Expand All @@ -153,6 +187,11 @@ func appPod(cr *hyperfoilv1alpha1.Horreum, keycloakPublicUrl, appPublicUrl strin
},
},
VolumeMounts: []corev1.VolumeMount{
{
Name: "app-init",
MountPath: "/deployments/app_init.sh",
SubPath: "app_init.sh",
},
{
Name: "imports",
MountPath: "/etc/horreum/imports",
Expand Down
10 changes: 7 additions & 3 deletions controllers/horreum_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,9 @@ func (r *HorreumReconciler) Reconcile(ctx context.Context, request ctrl.Request)
cr.Status.KeycloakUrl = keycloakPublicUrl

keycloakConfigMap := keycloakConfigMap(cr)
if err := ensureSame(r, cr, logger, keycloakConfigMap, &corev1.ConfigMap{}, compareConfigMap, nocheck); err != nil {
return reconcile.Result{}, err
}
keycloakPod := keycloakPod(cr, keycloakPublicUrl)
if cr.Spec.Keycloak.External.PublicUri != "" {
if err := ensureDeleted(r, cr, keycloakPod, &corev1.Pod{}); err != nil {
Expand All @@ -243,11 +246,12 @@ func (r *HorreumReconciler) Reconcile(ctx context.Context, request ctrl.Request)
if err := ensureSame(r, cr, logger, keycloakPod, &corev1.Pod{}, comparePods, checkPod); err != nil {
return reconcile.Result{}, err
}
if err := ensureSame(r, cr, logger, keycloakConfigMap, &corev1.ConfigMap{}, compareConfigMap, nocheck); err != nil {
return reconcile.Result{}, err
}
}

appinitConfigMap := appinitConfigMap(cr)
if err := ensureSame(r, cr, logger, appinitConfigMap, &corev1.ConfigMap{}, compareConfigMap, nocheck); err != nil {
return reconcile.Result{}, err
}
appService := appService(cr, r)
appRoute, err := appRoute(cr, r)
if err != nil {
Expand Down

0 comments on commit a0ba883

Please sign in to comment.