Skip to content

Commit

Permalink
Merge pull request #286 from yersan/issue-285
Browse files Browse the repository at this point in the history
[285] Fix image stream processing
  • Loading branch information
yersan committed Nov 24, 2023
2 parents fab0001 + 32b7e73 commit a157f50
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 16 deletions.
13 changes: 7 additions & 6 deletions controllers/wildflyserver_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@ import (
corev1 "k8s.io/api/core/v1"
apiErrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime/schema"
"reflect"

"k8s.io/client-go/tools/record"
"os"
"reflect"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"sigs.k8s.io/controller-runtime/pkg/source"
"strconv"
"strings"

Expand Down Expand Up @@ -105,7 +106,7 @@ func (r *WildFlyServerReconciler) Reconcile(ctx context.Context, request ctrl.Re

// Check if the statefulSet already exists, if not create a new one
statefulSet, err := statefulsets.GetOrCreateNewStatefulSet(wildflyServer, r.Client, r.Scheme,
LabelsForWildFly(wildflyServer), desiredReplicaSizeForNewStatefulSet)
LabelsForWildFly(wildflyServer), desiredReplicaSizeForNewStatefulSet, r.IsOpenShift)
if err != nil {
return reconcile.Result{}, err
} else if statefulSet == nil {
Expand Down Expand Up @@ -284,8 +285,7 @@ func (r *WildFlyServerReconciler) SetupWithManager(mgr ctrl.Manager) error {
builder := ctrl.NewControllerManagedBy(mgr).
For(&wildflyv1alpha1.WildFlyServer{})

builder.Owns(&appsv1.StatefulSet{}).
Owns(&corev1.Service{})
builder.Owns(&corev1.Service{})

if hasServiceMonitor() {
builder.Owns(&monitoringv1.ServiceMonitor{})
Expand All @@ -296,6 +296,7 @@ func (r *WildFlyServerReconciler) SetupWithManager(mgr ctrl.Manager) error {
builder.Owns(&routev1.Route{})
}

builder.Watches(&source.Kind{Type: &appsv1.StatefulSet{}}, &handler.EnqueueRequestForOwner{OwnerType: &wildflyv1alpha1.WildFlyServer{}, IsController: false})
return builder.Complete(r)
}

Expand Down Expand Up @@ -364,7 +365,7 @@ func (r *WildFlyServerReconciler) checkStatefulSet(wildflyServer *wildflyv1alpha
}

if !resources.IsCurrentGeneration(wildflyServer, foundStatefulSet) {
statefulSet := statefulsets.NewStatefulSet(wildflyServer, LabelsForWildFly(wildflyServer), desiredStatefulSetReplicaSize)
statefulSet := statefulsets.NewStatefulSet(wildflyServer, LabelsForWildFly(wildflyServer), desiredStatefulSetReplicaSize, r.IsOpenShift)
delete := false
// changes to VolumeClaimTemplates can not be updated and requires a delete/create of the statefulset
if len(statefulSet.Spec.VolumeClaimTemplates) > 0 {
Expand Down
2 changes: 1 addition & 1 deletion pkg/resources/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func Create(w *wildflyv1alpha1.WildFlyServer, client client.Client, scheme *runt
// mark the object with the current server generation
MarkServerGeneration(w, meta)

if err := controllerutil.SetControllerReference(w, meta, scheme); err != nil {
if err := controllerutil.SetOwnerReference(w, meta, scheme); err != nil {
logger.Error(err, "Failed to set controller reference for new resource")
return err
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/resources/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ const (
ImageTypeGeneric = "generic"
// ImageTypeGeneric is one of the possible values for MarkerImageType annotation denoting a bootable JAR type image
ImageTypeBootable = "bootable-jar"
// SecretsDir is the the directory to mount volumes from Secrets
// SecretsDir is the directory to mount volumes from Secrets
SecretsDir = "/etc/secrets/"
// ConfigMapsDir is the the directory to mount volumes from ConfigMaps
// ConfigMapsDir is the directory to mount volumes from ConfigMaps
ConfigMapsDir = "/etc/configmaps/"
// StatefuleSetTemplateLabelsEnvVarName is the name of the envvar containg label/value map for pods created from the statefulset's template
StatefuleSetTemplateLabelsEnvVarName string = "STATEFULSET_TEMPLATE_LABELS"
Expand Down
18 changes: 11 additions & 7 deletions pkg/resources/statefulsets/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ import (
var log = logf.Log.WithName("wildflyserver_statefulsets")

// GetOrCreateNewStatefulSet either returns the statefulset or create it
func GetOrCreateNewStatefulSet(w *wildflyv1alpha1.WildFlyServer, client client.Client, scheme *runtime.Scheme, labels map[string]string, desiredReplicaSize int32) (*appsv1.StatefulSet, error) {
func GetOrCreateNewStatefulSet(w *wildflyv1alpha1.WildFlyServer, client client.Client, scheme *runtime.Scheme, labels map[string]string, desiredReplicaSize int32, isOpenShift bool) (*appsv1.StatefulSet, error) {
statefulSet := &appsv1.StatefulSet{}
if err := resources.Get(w, types.NamespacedName{Name: w.Name, Namespace: w.Namespace}, client, statefulSet); err != nil {
if errors.IsNotFound(err) {
if err := resources.Create(w, client, scheme, NewStatefulSet(w, labels, desiredReplicaSize)); err != nil {
if err := resources.Create(w, client, scheme, NewStatefulSet(w, labels, desiredReplicaSize, isOpenShift)); err != nil {
return nil, err
}
return nil, nil
Expand All @@ -42,7 +42,7 @@ func GetOrCreateNewStatefulSet(w *wildflyv1alpha1.WildFlyServer, client client.C
}

// NewStatefulSet returns a new statefulset
func NewStatefulSet(w *wildflyv1alpha1.WildFlyServer, labels map[string]string, desiredReplicaSize int32) *appsv1.StatefulSet {
func NewStatefulSet(w *wildflyv1alpha1.WildFlyServer, labels map[string]string, desiredReplicaSize int32, isOpenShift bool) *appsv1.StatefulSet {
replicas := desiredReplicaSize
applicationImage := w.Spec.ApplicationImage

Expand All @@ -56,6 +56,12 @@ func NewStatefulSet(w *wildflyv1alpha1.WildFlyServer, labels map[string]string,
wildflyImageTypeAnnotation = resources.ImageTypeBootable
}

podAnnotations := make(map[string]string)
podAnnotations[resources.MarkerImageType] = wildflyImageTypeAnnotation
if isOpenShift {
podAnnotations["alpha.image.policy.openshift.io/resolve-names"] = "*"
}

statefulSet := &appsv1.StatefulSet{
TypeMeta: metav1.TypeMeta{
APIVersion: "apps/v1",
Expand All @@ -78,10 +84,8 @@ func NewStatefulSet(w *wildflyv1alpha1.WildFlyServer, labels map[string]string,
},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: labelsForActiveWildflyPod,
Annotations: map[string]string{
resources.MarkerImageType: wildflyImageTypeAnnotation,
},
Labels: labelsForActiveWildflyPod,
Annotations: podAnnotations,
},
Spec: corev1.PodSpec{
SecurityContext: &corev1.PodSecurityContext{
Expand Down

0 comments on commit a157f50

Please sign in to comment.