Skip to content

Commit e59f803

Browse files
committed
Exposing chunksize variable to utilize docker registry config
1 parent 75a1a27 commit e59f803

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3405
-40
lines changed

manifests/07-operator-ibm-cloud-managed.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ spec:
5050
value: quay.io/openshift/origin-cli:v4.0
5151
- name: AZURE_ENVIRONMENT_FILEPATH
5252
value: /tmp/azurestackcloud.json
53+
- name: OPERATOR_IMAGE_VERSION
54+
value: 0.0.1-snapshot
5355
image: docker.io/openshift/origin-cluster-image-registry-operator:latest
5456
imagePullPolicy: IfNotPresent
5557
name: cluster-image-registry-operator

manifests/07-operator.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ spec:
7777
value: quay.io/openshift/origin-cli:v4.0
7878
- name: AZURE_ENVIRONMENT_FILEPATH
7979
value: /tmp/azurestackcloud.json
80+
- name: OPERATOR_IMAGE_VERSION
81+
value: 0.0.1-snapshot
8082
terminationMessagePolicy: FallbackToLogsOnError
8183
volumeMounts:
8284
- name: trusted-ca

pkg/operator/azurepathfixcontroller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
configlisters "github.com/openshift/client-go/config/listers/config/v1"
3131
imageregistryv1informers "github.com/openshift/client-go/imageregistry/informers/externalversions/imageregistry/v1"
3232
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
33+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
3334
"github.com/openshift/library-go/pkg/operator/v1helpers"
3435

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

5253
cachesToSync []cache.InformerSynced
5354
queue workqueue.RateLimitingInterface
55+
56+
featureGateAccessor featuregates.FeatureGateAccess
5457
}
5558

5659
func NewAzurePathFixController(
@@ -64,6 +67,7 @@ func NewAzurePathFixController(
6467
proxyInformer configv1informers.ProxyInformer,
6568
openshiftConfigInformer corev1informers.ConfigMapInformer,
6669
podInformer corev1informers.PodInformer,
70+
featureGateAccessor featuregates.FeatureGateAccess,
6771
) (*AzurePathFixController, error) {
6872
c := &AzurePathFixController{
6973
batchClient: batchClient,
@@ -77,6 +81,7 @@ func NewAzurePathFixController(
7781
openshiftConfigLister: openshiftConfigInformer.Lister().ConfigMaps(defaults.OpenShiftConfigNamespace),
7882
kubeconfig: kubeconfig,
7983
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AzurePathFixController"),
84+
featureGateAccessor: featureGateAccessor,
8085
}
8186

8287
if _, err := jobInformer.Informer().AddEventHandler(c.eventHandler()); err != nil {

pkg/operator/controller.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
2929
routeclient "github.com/openshift/client-go/route/clientset/versioned"
3030
routeinformers "github.com/openshift/client-go/route/informers/externalversions"
31+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
3132
"github.com/openshift/library-go/pkg/operator/events"
3233

3334
regopclient "github.com/openshift/cluster-image-registry-operator/pkg/client"
@@ -78,12 +79,13 @@ func NewController(
7879
configInformerFactory configinformers.SharedInformerFactory,
7980
regopInformerFactory imageregistryinformers.SharedInformerFactory,
8081
routeInformerFactory routeinformers.SharedInformerFactory,
82+
featureGateAccessor featuregates.FeatureGateAccess,
8183
) (*Controller, error) {
8284
listers := &regopclient.Listers{}
8385
clients := &regopclient.Clients{}
8486
c := &Controller{
8587
kubeconfig: kubeconfig,
86-
generator: resource.NewGenerator(eventRecorder, kubeconfig, clients, listers),
88+
generator: resource.NewGenerator(eventRecorder, kubeconfig, clients, listers, featureGateAccessor),
8789
workqueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Changes"),
8890
listers: listers,
8991
clients: clients,

pkg/operator/imageregistrycertificates.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
configv1listers "github.com/openshift/client-go/config/listers/config/v1"
2121
imageregistryv1informers "github.com/openshift/client-go/imageregistry/informers/externalversions/imageregistry/v1"
2222
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
23+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
2324
"github.com/openshift/library-go/pkg/operator/v1helpers"
2425

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

4243
cachesToSync []cache.InformerSynced
4344
queue workqueue.RateLimitingInterface
45+
46+
featureGateAccessor featuregates.FeatureGateAccess
4447
}
4548

4649
func NewImageRegistryCertificatesController(
@@ -149,7 +152,7 @@ func (c *ImageRegistryCertificatesController) processNextWorkItem() bool {
149152
func (c *ImageRegistryCertificatesController) sync() error {
150153
ctx := context.TODO()
151154

152-
g := resource.NewGeneratorCAConfig(c.configMapLister, c.imageConfigLister, c.openshiftConfigLister, c.serviceLister, c.imageRegistryConfigLister, c.storageListers, c.kubeconfig, c.coreClient)
155+
g := resource.NewGeneratorCAConfig(c.configMapLister, c.imageConfigLister, c.openshiftConfigLister, c.serviceLister, c.imageRegistryConfigLister, c.storageListers, c.kubeconfig, c.coreClient, c.featureGateAccessor)
153156
err := resource.ApplyMutator(g)
154157
if err != nil {
155158
_, _, updateError := v1helpers.UpdateStatus(
@@ -174,6 +177,7 @@ func (c *ImageRegistryCertificatesController) sync() error {
174177
c.storageListers,
175178
c.kubeconfig,
176179
c.coreClient,
180+
c.featureGateAccessor,
177181
)
178182
err = resource.ApplyMutator(g)
179183
if err != nil {

pkg/operator/starter.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package operator
22

33
import (
44
"context"
5+
"fmt"
6+
"time"
57

68
kubeinformers "k8s.io/client-go/informers"
79
kubeclient "k8s.io/client-go/kubernetes"
@@ -17,8 +19,10 @@ import (
1719
imageregistryinformers "github.com/openshift/client-go/imageregistry/informers/externalversions"
1820
routeclient "github.com/openshift/client-go/route/clientset/versioned"
1921
routeinformers "github.com/openshift/client-go/route/informers/externalversions"
22+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
2023
"github.com/openshift/library-go/pkg/operator/events"
2124
"github.com/openshift/library-go/pkg/operator/loglevel"
25+
"github.com/openshift/library-go/pkg/operator/status"
2226

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

75+
desiredVersion := status.VersionForOperatorFromEnv()
76+
missingVersion := "0.0.1-snapshot"
77+
78+
// By default, this will exit(0) the process if the featuregates ever change to a different set of values.
79+
featureGateAccessor := featuregates.NewFeatureGateAccess(desiredVersion, missingVersion, configInformers.Config().V1().ClusterVersions(), configInformers.Config().V1().FeatureGates(), eventRecorder)
80+
81+
go featureGateAccessor.Run(ctx)
82+
configInformers.Start(ctx.Done())
83+
84+
select {
85+
case <-featureGateAccessor.InitialFeatureGatesObserved():
86+
featureGates, _ := featureGateAccessor.CurrentFeatureGates()
87+
klog.Infof("FeatureGates initialized: knownFeatureGates=%v", featureGates.KnownFeatures())
88+
case <-time.After(1 * time.Minute):
89+
klog.Errorf("timed out waiting for FeatureGate detection")
90+
return fmt.Errorf("timed out waiting for FeatureGate detection")
91+
}
92+
7193
controller, err := NewController(
7294
eventRecorder,
7395
kubeconfig,
@@ -82,6 +104,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
82104
configInformers,
83105
imageregistryInformers,
84106
routeInformers,
107+
featureGateAccessor,
85108
)
86109
if err != nil {
87110
return err
@@ -179,6 +202,7 @@ func RunOperator(ctx context.Context, kubeconfig *restclient.Config) error {
179202
configInformers.Config().V1().Proxies(),
180203
kubeInformersForOpenShiftConfig.Core().V1().ConfigMaps(),
181204
kubeInformers.Core().V1().Pods(),
205+
featureGateAccessor,
182206
)
183207
if err != nil {
184208
return err

pkg/resource/caconfig.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
operatorv1 "github.com/openshift/api/operator/v1"
1818
configlisters "github.com/openshift/client-go/config/listers/config/v1"
1919
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
20+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
2021

2122
"github.com/openshift/cluster-image-registry-operator/pkg/client"
2223
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
@@ -34,6 +35,7 @@ type generatorCAConfig struct {
3435
storageListers *client.StorageListers
3536
kubeconfig *restclient.Config
3637
client coreset.CoreV1Interface
38+
featureGateAccessor featuregates.FeatureGateAccess
3739
}
3840

3941
func NewGeneratorCAConfig(
@@ -45,6 +47,7 @@ func NewGeneratorCAConfig(
4547
storageListers *client.StorageListers,
4648
kubeconfig *restclient.Config,
4749
client coreset.CoreV1Interface,
50+
featureGateAccessor featuregates.FeatureGateAccess,
4851
) Mutator {
4952
return &generatorCAConfig{
5053
lister: lister,
@@ -55,6 +58,7 @@ func NewGeneratorCAConfig(
5558
storageListers: storageListers,
5659
kubeconfig: kubeconfig,
5760
client: client,
61+
featureGateAccessor: featureGateAccessor,
5862
}
5963
}
6064

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

87-
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, gcac.kubeconfig, gcac.storageListers)
91+
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, gcac.kubeconfig, gcac.storageListers, gcac.featureGateAccessor)
8892
if err == storage.ErrStorageNotConfigured || storage.IsMultiStoragesError(err) {
8993
return nil, false, nil
9094
} else if err != nil {

pkg/resource/generator.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"k8s.io/klog/v2"
1616

1717
imageregistryv1 "github.com/openshift/api/imageregistry/v1"
18+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
1819
"github.com/openshift/library-go/pkg/operator/events"
1920

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

68-
func NewGenerator(eventRecorder events.Recorder, kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers) *Generator {
69+
func NewGenerator(eventRecorder events.Recorder, kubeconfig *rest.Config, clients *client.Clients, listers *client.Listers, featureGateAccessor featuregates.FeatureGateAccess) *Generator {
6970
return &Generator{
70-
eventRecorder: eventRecorder,
71-
kubeconfig: kubeconfig,
72-
listers: listers,
73-
clients: clients,
71+
eventRecorder: eventRecorder,
72+
kubeconfig: kubeconfig,
73+
listers: listers,
74+
clients: clients,
75+
featureGateAccessor: featureGateAccessor,
7476
}
7577
}
7678

7779
type Generator struct {
78-
eventRecorder events.Recorder
79-
kubeconfig *rest.Config
80-
listers *client.Listers
81-
clients *client.Clients
80+
eventRecorder events.Recorder
81+
kubeconfig *rest.Config
82+
listers *client.Listers
83+
clients *client.Clients
84+
featureGateAccessor featuregates.FeatureGateAccess
8285
}
8386

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

97100
func (g *Generator) List(cr *imageregistryv1.Config) ([]Mutator, error) {
98-
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
101+
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
99102
if err != nil && err != storage.ErrStorageNotConfigured {
100103
return nil, err
101104
} else if err == storage.ErrStorageNotConfigured {
@@ -125,13 +128,13 @@ func (g *Generator) List(cr *imageregistryv1.Config) ([]Mutator, error) {
125128
func (g *Generator) syncStorage(cr *imageregistryv1.Config) error {
126129
var runCreate bool
127130
// Create a driver with the current configuration
128-
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
131+
driver, err := storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
129132
if err == storage.ErrStorageNotConfigured {
130133
cr.Spec.Storage, _, err = storage.GetPlatformStorage(&g.listers.StorageListers)
131134
if err != nil {
132135
return fmt.Errorf("unable to get storage configuration from cluster install config: %s", err)
133136
}
134-
driver, err = storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers)
137+
driver, err = storage.NewDriver(&cr.Spec.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
135138
}
136139
if err != nil {
137140
return err
@@ -169,11 +172,11 @@ func (g *Generator) storageReconfigured(
169172
restCfg *rest.Config,
170173
listers *client.Listers,
171174
) bool {
172-
prev, err := storage.NewDriver(&regCfg.Status.Storage, restCfg, &listers.StorageListers)
175+
prev, err := storage.NewDriver(&regCfg.Status.Storage, restCfg, &listers.StorageListers, g.featureGateAccessor)
173176
if err != nil {
174177
return false
175178
}
176-
cur, err := storage.NewDriver(&regCfg.Spec.Storage, restCfg, &listers.StorageListers)
179+
cur, err := storage.NewDriver(&regCfg.Spec.Storage, restCfg, &listers.StorageListers, g.featureGateAccessor)
177180
if err != nil {
178181
return false
179182
}
@@ -289,7 +292,7 @@ func (g *Generator) Remove(cr *imageregistryv1.Config) error {
289292
klog.Infof("object %s deleted", Name(gen))
290293
}
291294

292-
driver, err := storage.NewDriver(&cr.Status.Storage, g.kubeconfig, &g.listers.StorageListers)
295+
driver, err := storage.NewDriver(&cr.Status.Storage, g.kubeconfig, &g.listers.StorageListers, g.featureGateAccessor)
293296
if err == storage.ErrStorageNotConfigured {
294297
return nil
295298
} else if err != nil {

pkg/resource/imageregistryca.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
operatorv1 "github.com/openshift/api/operator/v1"
1818
configlisters "github.com/openshift/client-go/config/listers/config/v1"
1919
imageregistryv1listers "github.com/openshift/client-go/imageregistry/listers/imageregistry/v1"
20+
"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
2021

2122
"github.com/openshift/cluster-image-registry-operator/pkg/client"
2223
"github.com/openshift/cluster-image-registry-operator/pkg/defaults"
@@ -35,6 +36,7 @@ type generatorImageRegistryCA struct {
3536
storageListers *client.StorageListers
3637
kubeconfig *restclient.Config
3738
client coreset.CoreV1Interface
39+
featureGateAccessor featuregates.FeatureGateAccess
3840
}
3941

4042
func NewGeneratorImageRegistryCA(
@@ -47,6 +49,7 @@ func NewGeneratorImageRegistryCA(
4749
storageListers *client.StorageListers,
4850
kubeconfig *restclient.Config,
4951
client coreset.CoreV1Interface,
52+
featureGateAccessor featuregates.FeatureGateAccess,
5053
) Mutator {
5154
return &generatorImageRegistryCA{
5255
lister: lister,
@@ -58,6 +61,7 @@ func NewGeneratorImageRegistryCA(
5861
storageListers: storageListers,
5962
kubeconfig: kubeconfig,
6063
client: client,
64+
featureGateAccessor: featureGateAccessor,
6165
}
6266
}
6367

@@ -87,7 +91,7 @@ func (girca *generatorImageRegistryCA) storageDriver() (storage.Driver, bool, er
8791
return nil, false, nil
8892
}
8993

90-
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, girca.kubeconfig, girca.storageListers)
94+
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, girca.kubeconfig, girca.storageListers, girca.featureGateAccessor)
9195
if err == storage.ErrStorageNotConfigured || storage.IsMultiStoragesError(err) {
9296
return nil, false, nil
9397
} else if err != nil {

0 commit comments

Comments
 (0)