Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCPBUGS-34399: Exposing chunksize variable to utilize docker registry config #1026

Merged
merged 2 commits into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions manifests/02-rbac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ rules:
- apiGroups:
- config.openshift.io
resources:
- clusterversions
- featuregates
- infrastructures
verbs:
- get
Expand Down
2 changes: 2 additions & 0 deletions manifests/07-operator-ibm-cloud-managed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ spec:
value: quay.io/openshift/origin-cli:v4.0
- name: AZURE_ENVIRONMENT_FILEPATH
value: /tmp/azurestackcloud.json
- name: OPERATOR_IMAGE_VERSION
value: 0.0.1-snapshot
image: docker.io/openshift/origin-cluster-image-registry-operator:latest
imagePullPolicy: IfNotPresent
name: cluster-image-registry-operator
Expand Down
2 changes: 2 additions & 0 deletions manifests/07-operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ spec:
value: quay.io/openshift/origin-cli:v4.0
- name: AZURE_ENVIRONMENT_FILEPATH
value: /tmp/azurestackcloud.json
- name: OPERATOR_IMAGE_VERSION
value: 0.0.1-snapshot
terminationMessagePolicy: FallbackToLogsOnError
volumeMounts:
- name: trusted-ca
Expand Down
5 changes: 5 additions & 0 deletions pkg/operator/azurepathfixcontroller.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
configlisters "github.com/openshift/client-go/config/listers/config/v1"
imageregistryv1informers "github.com/openshift/client-go/imageregistry/informers/externalversions/imageregistry/v1"
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
"github.com/openshift/library-go/pkg/operator/v1helpers"

"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
Expand All @@ -51,6 +52,8 @@ type AzurePathFixController struct {

cachesToSync []cache.InformerSynced
queue workqueue.RateLimitingInterface

featureGateAccessor featuregates.FeatureGateAccess
}

func NewAzurePathFixController(
Expand All @@ -64,6 +67,7 @@ func NewAzurePathFixController(
proxyInformer configv1informers.ProxyInformer,
openshiftConfigInformer corev1informers.ConfigMapInformer,
podInformer corev1informers.PodInformer,
featureGateAccessor featuregates.FeatureGateAccess,
) (*AzurePathFixController, error) {
c := &AzurePathFixController{
batchClient: batchClient,
Expand All @@ -77,6 +81,7 @@ func NewAzurePathFixController(
openshiftConfigLister: openshiftConfigInformer.Lister().ConfigMaps(defaults.OpenShiftConfigNamespace),
kubeconfig: kubeconfig,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AzurePathFixController"),
featureGateAccessor: featureGateAccessor,
}

if _, err := jobInformer.Informer().AddEventHandler(c.eventHandler()); err != nil {
Expand Down
4 changes: 3 additions & 1 deletion pkg/operator/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
routeclient "github.com/openshift/client-go/route/clientset/versioned"
routeinformers "github.com/openshift/client-go/route/informers/externalversions"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
"github.com/openshift/library-go/pkg/operator/events"

regopclient "github.com/openshift/cluster-image-registry-operator/pkg/client"
Expand Down Expand Up @@ -78,12 +79,13 @@ func NewController(
configInformerFactory configinformers.SharedInformerFactory,
regopInformerFactory imageregistryinformers.SharedInformerFactory,
routeInformerFactory routeinformers.SharedInformerFactory,
featureGateAccessor featuregates.FeatureGateAccess,
) (*Controller, error) {
listers := &regopclient.Listers{}
clients := &regopclient.Clients{}
c := &Controller{
kubeconfig: kubeconfig,
generator: resource.NewGenerator(eventRecorder, kubeconfig, clients, listers),
generator: resource.NewGenerator(eventRecorder, kubeconfig, clients, listers, featureGateAccessor),
workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Changes"),
listers: listers,
clients: clients,
Expand Down
6 changes: 5 additions & 1 deletion pkg/operator/imageregistrycertificates.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
configv1listers "github.com/openshift/client-go/config/listers/config/v1"
imageregistryv1informers "github.com/openshift/client-go/imageregistry/informers/externalversions/imageregistry/v1"
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
"github.com/openshift/library-go/pkg/operator/v1helpers"

"github.com/openshift/cluster-image-registry-operator/pkg/client"
Expand All @@ -41,6 +42,8 @@ type ImageRegistryCertificatesController struct {

cachesToSync []cache.InformerSynced
queue workqueue.RateLimitingInterface

featureGateAccessor featuregates.FeatureGateAccess
}

func NewImageRegistryCertificatesController(
Expand Down Expand Up @@ -149,7 +152,7 @@ func (c *ImageRegistryCertificatesController) processNextWorkItem() bool {
func (c *ImageRegistryCertificatesController) sync() error {
ctx := context.TODO()

g := resource.NewGeneratorCAConfig(c.configMapLister, c.imageConfigLister, c.openshiftConfigLister, c.serviceLister, c.imageRegistryConfigLister, c.storageListers, c.kubeconfig, c.coreClient)
g := resource.NewGeneratorCAConfig(c.configMapLister, c.imageConfigLister, c.openshiftConfigLister, c.serviceLister, c.imageRegistryConfigLister, c.storageListers, c.kubeconfig, c.coreClient, c.featureGateAccessor)
err := resource.ApplyMutator(g)
if err != nil {
_, _, updateError := v1helpers.UpdateStatus(
Expand All @@ -174,6 +177,7 @@ func (c *ImageRegistryCertificatesController) sync() error {
c.storageListers,
c.kubeconfig,
c.coreClient,
c.featureGateAccessor,
)
err = resource.ApplyMutator(g)
if err != nil {
Expand Down
24 changes: 24 additions & 0 deletions pkg/operator/starter.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package operator

import (
"context"
"fmt"
"time"

kubeinformers "k8s.io/client-go/informers"
kubeclient "k8s.io/client-go/kubernetes"
Expand All @@ -17,8 +19,10 @@ import (
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
routeclient "github.com/openshift/client-go/route/clientset/versioned"
routeinformers "github.com/openshift/client-go/route/informers/externalversions"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
"github.com/openshift/library-go/pkg/operator/events"
"github.com/openshift/library-go/pkg/operator/loglevel"
"github.com/openshift/library-go/pkg/operator/status"

"github.com/openshift/cluster-image-registry-operator/pkg/client"
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
Expand Down Expand Up @@ -68,6 +72,24 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
}
eventRecorder := events.NewKubeRecorder(kubeClient.CoreV1().Events(defaults.ImageRegistryOperatorNamespace), "image-registry-operator", controllerRef)

desiredVersion := status.VersionForOperatorFromEnv()
deepsm007 marked this conversation as resolved.
Show resolved Hide resolved
missingVersion := "0.0.1-snapshot"

// By default, this will exit(0) the process if the featuregates ever change to a different set of values.
featureGateAccessor := featuregates.NewFeatureGateAccess(desiredVersion, missingVersion, configInformers.Config().V1().ClusterVersions(), configInformers.Config().V1().FeatureGates(), eventRecorder)

go featureGateAccessor.Run(ctx)
flavianmissi marked this conversation as resolved.
Show resolved Hide resolved
configInformers.Start(ctx.Done())

select {
case <-featureGateAccessor.InitialFeatureGatesObserved():
featureGates, _ := featureGateAccessor.CurrentFeatureGates()
klog.Infof("FeatureGates initialized: knownFeatureGates=%v", featureGates.KnownFeatures())
case <-time.After(1 * time.Minute):
klog.Errorf("timed out waiting for FeatureGate detection")
return fmt.Errorf("timed out waiting for FeatureGate detection")
}

controller, err := NewController(
eventRecorder,
kubeconfig,
Expand All @@ -82,6 +104,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
configInformers,
imageregistryInformers,
routeInformers,
featureGateAccessor,
)
if err != nil {
return err
Expand Down Expand Up @@ -179,6 +202,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
configInformers.Config().V1().Proxies(),
kubeInformersForOpenShiftConfig.Core().V1().ConfigMaps(),
kubeInformers.Core().V1().Pods(),
featureGateAccessor,
)
if err != nil {
return err
Expand Down
6 changes: 5 additions & 1 deletion pkg/resource/caconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
operatorv1 "github.com/openshift/api/operator/v1"
configlisters "github.com/openshift/client-go/config/listers/config/v1"
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"

"github.com/openshift/cluster-image-registry-operator/pkg/client"
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
Expand All @@ -34,6 +35,7 @@ type generatorCAConfig struct {
storageListers *client.StorageListers
kubeconfig *restclient.Config
client coreset.CoreV1Interface
featureGateAccessor featuregates.FeatureGateAccess
}

func NewGeneratorCAConfig(
Expand All @@ -45,6 +47,7 @@ func NewGeneratorCAConfig(
storageListers *client.StorageListers,
kubeconfig *restclient.Config,
client coreset.CoreV1Interface,
featureGateAccessor featuregates.FeatureGateAccess,
) Mutator {
return &generatorCAConfig{
lister: lister,
Expand All @@ -55,6 +58,7 @@ func NewGeneratorCAConfig(
storageListers: storageListers,
kubeconfig: kubeconfig,
client: client,
featureGateAccessor: featureGateAccessor,
}
}

Expand Down Expand Up @@ -84,7 +88,7 @@ func (gcac *generatorCAConfig) storageDriver() (storage.Driver, bool, error) {
return nil, false, nil
}

driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, gcac.kubeconfig, gcac.storageListers)
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, gcac.kubeconfig, gcac.storageListers, gcac.featureGateAccessor)
if err == storage.ErrStorageNotConfigured || storage.IsMultiStoragesError(err) {
return nil, false, nil
} else if err != nil {
Expand Down
33 changes: 18 additions & 15 deletions pkg/resource/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"k8s.io/klog/v2"

imageregistryv1 "github.com/openshift/api/imageregistry/v1"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
"github.com/openshift/library-go/pkg/operator/events"

"github.com/openshift/cluster-image-registry-operator/pkg/client"
Expand Down Expand Up @@ -65,20 +66,22 @@ func ApplyMutator(gen Mutator) error {
})
}

func NewGenerator(eventRecorder events.Recorder, kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers) *Generator {
func NewGenerator(eventRecorder events.Recorder, kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers, featureGateAccessor featuregates.FeatureGateAccess) *Generator {
return &Generator{
eventRecorder: eventRecorder,
kubeconfig: kubeconfig,
listers: listers,
clients: clients,
eventRecorder: eventRecorder,
kubeconfig: kubeconfig,
listers: listers,
clients: clients,
featureGateAccessor: featureGateAccessor,
}
}

type Generator struct {
eventRecorder events.Recorder
kubeconfig *rest.Config
listers *client.Listers
clients *client.Clients
eventRecorder events.Recorder
kubeconfig *rest.Config
listers *client.Listers
clients *client.Clients
featureGateAccessor featuregates.FeatureGateAccess
}

func (g *Generator) listRoutes(cr *imageregistryv1.Config) []Mutator {
Expand All @@ -95,7 +98,7 @@ func (g *Generator) listRoutes(cr *imageregistryv1.Config) []Mutator {
}

func (g *Generator) List(cr *imageregistryv1.Config) ([]Mutator, error) {
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
if err != nil && err != storage.ErrStorageNotConfigured {
return nil, err
} else if err == storage.ErrStorageNotConfigured {
Expand Down Expand Up @@ -125,13 +128,13 @@ func (g *Generator) List(cr *imageregistryv1.Config) ([]Mutator, error) {
func (g *Generator) syncStorage(cr *imageregistryv1.Config) error {
var runCreate bool
// Create a driver with the current configuration
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
if err == storage.ErrStorageNotConfigured {
cr.Spec.Storage, _, err = storage.GetPlatformStorage(&g.listers.StorageListers)
if err != nil {
return fmt.Errorf("unable to get storage configuration from cluster install config: %s", err)
}
driver, err = storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
driver, err = storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
}
if err != nil {
return err
Expand Down Expand Up @@ -169,11 +172,11 @@ func (g *Generator) storageReconfigured(
restCfg *rest.Config,
listers *client.Listers,
) bool {
prev, err := storage.NewDriver(&regCfg.Status.Storage, restCfg, &listers.StorageListers)
prev, err := storage.NewDriver(&regCfg.Status.Storage, restCfg, &listers.StorageListers, g.featureGateAccessor)
if err != nil {
return false
}
cur, err := storage.NewDriver(&regCfg.Spec.Storage, restCfg, &listers.StorageListers)
cur, err := storage.NewDriver(&regCfg.Spec.Storage, restCfg, &listers.StorageListers, g.featureGateAccessor)
if err != nil {
return false
}
Expand Down Expand Up @@ -289,7 +292,7 @@ func (g *Generator) Remove(cr *imageregistryv1.Config) error {
klog.Infof("object %s deleted", Name(gen))
}

driver, err := storage.NewDriver(&cr.Status.Storage, g.kubeconfig, &g.listers.StorageListers)
driver, err := storage.NewDriver(&cr.Status.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
if err == storage.ErrStorageNotConfigured {
return nil
} else if err != nil {
Expand Down
6 changes: 5 additions & 1 deletion pkg/resource/imageregistryca.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
operatorv1 "github.com/openshift/api/operator/v1"
configlisters "github.com/openshift/client-go/config/listers/config/v1"
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"

"github.com/openshift/cluster-image-registry-operator/pkg/client"
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
Expand All @@ -35,6 +36,7 @@ type generatorImageRegistryCA struct {
storageListers *client.StorageListers
kubeconfig *restclient.Config
client coreset.CoreV1Interface
featureGateAccessor featuregates.FeatureGateAccess
}

func NewGeneratorImageRegistryCA(
Expand All @@ -47,6 +49,7 @@ func NewGeneratorImageRegistryCA(
storageListers *client.StorageListers,
kubeconfig *restclient.Config,
client coreset.CoreV1Interface,
featureGateAccessor featuregates.FeatureGateAccess,
) Mutator {
return &generatorImageRegistryCA{
lister: lister,
Expand All @@ -58,6 +61,7 @@ func NewGeneratorImageRegistryCA(
storageListers: storageListers,
kubeconfig: kubeconfig,
client: client,
featureGateAccessor: featureGateAccessor,
}
}

Expand Down Expand Up @@ -87,7 +91,7 @@ func (girca *generatorImageRegistryCA) storageDriver() (storage.Driver, bool, er
return nil, false, nil
}

driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, girca.kubeconfig, girca.storageListers)
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, girca.kubeconfig, girca.storageListers, girca.featureGateAccessor)
if err == storage.ErrStorageNotConfigured || storage.IsMultiStoragesError(err) {
return nil, false, nil
} else if err != nil {
Expand Down
Loading