Skip to content

Commit 684d27b

Browse files
Merge pull request #20546 from deads2k/server-08-image
clean up image registry hostname retrieval
2 parents 095b814 + b2c582b commit 684d27b

File tree

21 files changed

+173
-146
lines changed

21 files changed

+173
-146
lines changed

pkg/cmd/server/admission/init.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
userinformer "github.com/openshift/client-go/user/informers/externalversions"
99
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
10-
imageapi "github.com/openshift/origin/pkg/image/apis/image"
10+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
1111
"github.com/openshift/origin/pkg/project/cache"
1212
"github.com/openshift/origin/pkg/quota/controller/clusterquotamapping"
1313
quotainformer "github.com/openshift/origin/pkg/quota/generated/informers/internalversion/quota/internalversion"
@@ -21,7 +21,7 @@ type PluginInitializer struct {
2121
RESTClientConfig restclient.Config
2222
ClusterResourceQuotaInformer quotainformer.ClusterResourceQuotaInformer
2323
ClusterQuotaMapper clusterquotamapping.ClusterQuotaMapper
24-
RegistryHostnameRetriever imageapi.RegistryHostnameRetriever
24+
RegistryHostnameRetriever registryhostname.RegistryHostnameRetriever
2525
SecurityInformers securityinformer.SharedInformerFactory
2626
UserInformers userinformer.SharedInformerFactory
2727
}

pkg/cmd/server/origin/admission/plugin_initializer.go

+6-20
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ package admission
33
import (
44
"fmt"
55
"io/ioutil"
6-
"os"
76

87
"k8s.io/apimachinery/pkg/api/meta"
9-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
108
"k8s.io/apimachinery/pkg/runtime/schema"
119
"k8s.io/apiserver/pkg/admission"
1210
"k8s.io/apiserver/pkg/admission/initializer"
@@ -28,15 +26,14 @@ import (
2826
oadmission "github.com/openshift/origin/pkg/cmd/server/admission"
2927
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
3028
kubernetes "github.com/openshift/origin/pkg/cmd/server/kubernetes/master"
31-
imageapi "github.com/openshift/origin/pkg/image/apis/image"
29+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
3230
imageinformer "github.com/openshift/origin/pkg/image/generated/informers/internalversion"
3331
imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset"
3432
projectcache "github.com/openshift/origin/pkg/project/cache"
3533
"github.com/openshift/origin/pkg/quota/controller/clusterquotamapping"
3634
quotainformer "github.com/openshift/origin/pkg/quota/generated/informers/internalversion"
3735
"github.com/openshift/origin/pkg/quota/image"
3836
securityinformer "github.com/openshift/origin/pkg/security/generated/informers/internalversion"
39-
"github.com/openshift/origin/pkg/service"
4037
)
4138

4239
type InformerAccess interface {
@@ -61,7 +58,7 @@ func NewPluginInitializer(
6158
if err != nil {
6259
return nil, err
6360
}
64-
kubeClientGoClientSet, err := kubeclientgoclient.NewForConfig(privilegedLoopbackConfig)
61+
kubeClient, err := kubeclientgoclient.NewForConfig(privilegedLoopbackConfig)
6562
if err != nil {
6663
return nil, err
6764
}
@@ -80,11 +77,9 @@ func NewPluginInitializer(
8077
quotaRegistry.Add(imageEvaluators[i])
8178
}
8279

83-
defaultRegistry := env("OPENSHIFT_DEFAULT_REGISTRY", "${DOCKER_REGISTRY_SERVICE_HOST}:${DOCKER_REGISTRY_SERVICE_PORT}")
84-
svcCache := service.NewServiceResolverCache(kubeInternalClient.Core().Services(metav1.NamespaceDefault).Get)
85-
defaultRegistryFunc, err := svcCache.Defer(defaultRegistry)
80+
registryHostnameRetriever, err := registryhostname.DefaultRegistryHostnameRetriever(privilegedLoopbackConfig, options.ImagePolicyConfig.ExternalRegistryHostname, options.ImagePolicyConfig.InternalRegistryHostname)
8681
if err != nil {
87-
return nil, fmt.Errorf("OPENSHIFT_DEFAULT_REGISTRY variable is invalid %q: %v", defaultRegistry, err)
82+
return nil, err
8883
}
8984

9085
// punch through layers to build this in order to get a string for a cloud provider file
@@ -104,7 +99,7 @@ func NewPluginInitializer(
10499
}
105100
// note: we are passing a combined quota registry here...
106101
genericInitializer := initializer.New(
107-
kubeClientGoClientSet,
102+
kubeClient,
108103
informers.GetKubernetesInformers(),
109104
authorizer,
110105
legacyscheme.Scheme,
@@ -145,19 +140,10 @@ func NewPluginInitializer(
145140
RESTClientConfig: *privilegedLoopbackConfig,
146141
ClusterResourceQuotaInformer: informers.GetInternalOpenshiftQuotaInformers().Quota().InternalVersion().ClusterResourceQuotas(),
147142
ClusterQuotaMapper: clusterQuotaMappingController.GetClusterQuotaMapper(),
148-
RegistryHostnameRetriever: imageapi.DefaultRegistryHostnameRetriever(defaultRegistryFunc, options.ImagePolicyConfig.ExternalRegistryHostname, options.ImagePolicyConfig.InternalRegistryHostname),
143+
RegistryHostnameRetriever: registryHostnameRetriever,
149144
SecurityInformers: informers.GetInternalOpenshiftSecurityInformers(),
150145
UserInformers: informers.GetOpenshiftUserInformers(),
151146
}
152147

153148
return admission.PluginInitializers{genericInitializer, webhookInitializer, kubePluginInitializer, openshiftPluginInitializer}, nil
154149
}
155-
156-
// env returns an environment variable, or the defaultValue if it is not set.
157-
func env(key string, defaultValue string) string {
158-
val := os.Getenv(key)
159-
if len(val) == 0 {
160-
return defaultValue
161-
}
162-
return val
163-
}

pkg/cmd/server/origin/master.go

-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"io/ioutil"
66
"net/http"
7-
"os"
87
"strings"
98
"time"
109

@@ -462,15 +461,6 @@ func (c *MasterConfig) RouteAllocator() *routeallocationcontroller.RouteAllocati
462461
return factory.Create(plugin)
463462
}
464463

465-
// env returns an environment variable, or the defaultValue if it is not set.
466-
func env(key string, defaultValue string) string {
467-
val := os.Getenv(key)
468-
if len(val) == 0 {
469-
return defaultValue
470-
}
471-
return val
472-
}
473-
474464
func WithPatternPrefixHandler(handler http.Handler, patternHandler http.Handler, prefixes ...string) http.Handler {
475465
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
476466
for _, p := range prefixes {

pkg/cmd/server/origin/master_config.go

+6-10
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"k8s.io/client-go/restmapper"
1010

1111
kapierrors "k8s.io/apimachinery/pkg/api/errors"
12-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1312
"k8s.io/apimachinery/pkg/labels"
1413
"k8s.io/apimachinery/pkg/runtime/schema"
1514
"k8s.io/apiserver/pkg/admission"
@@ -40,7 +39,6 @@ import (
4039
kubernetes "github.com/openshift/origin/pkg/cmd/server/kubernetes/master"
4140
originadmission "github.com/openshift/origin/pkg/cmd/server/origin/admission"
4241
originrest "github.com/openshift/origin/pkg/cmd/server/origin/rest"
43-
imageapi "github.com/openshift/origin/pkg/image/apis/image"
4442
imageadmission "github.com/openshift/origin/pkg/image/apiserver/admission/limitrange"
4543
imageinformer "github.com/openshift/origin/pkg/image/generated/informers/internalversion"
4644
networkinformer "github.com/openshift/origin/pkg/network/generated/informers/internalversion"
@@ -51,8 +49,8 @@ import (
5149
quotainformer "github.com/openshift/origin/pkg/quota/generated/informers/internalversion"
5250
templateinformer "github.com/openshift/origin/pkg/template/generated/informers/internalversion"
5351

52+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
5453
securityinformer "github.com/openshift/origin/pkg/security/generated/informers/internalversion"
55-
"github.com/openshift/origin/pkg/service"
5654
"github.com/openshift/origin/pkg/util/restoptions"
5755
)
5856

@@ -77,7 +75,7 @@ type MasterConfig struct {
7775

7876
// RegistryHostnameRetriever retrieves the name of the integrated registry, or false if no such registry
7977
// is available.
80-
RegistryHostnameRetriever imageapi.RegistryHostnameRetriever
78+
RegistryHostnameRetriever registryhostname.RegistryHostnameRetriever
8179

8280
// PrivilegedLoopbackClientConfig is the client configuration used to call OpenShift APIs from system components
8381
// To apply different access control to a system component, create a client config specifically for that component.
@@ -171,11 +169,9 @@ func BuildMasterConfig(
171169
return nil, err
172170
}
173171

174-
defaultRegistry := env("OPENSHIFT_DEFAULT_REGISTRY", "${DOCKER_REGISTRY_SERVICE_HOST}:${DOCKER_REGISTRY_SERVICE_PORT}")
175-
svcCache := service.NewServiceResolverCache(kubeInternalClient.Core().Services(metav1.NamespaceDefault).Get)
176-
defaultRegistryFunc, err := svcCache.Defer(defaultRegistry)
172+
registryHostnameRetriever, err := registryhostname.DefaultRegistryHostnameRetriever(privilegedLoopbackConfig, options.ImagePolicyConfig.ExternalRegistryHostname, options.ImagePolicyConfig.InternalRegistryHostname)
177173
if err != nil {
178-
return nil, fmt.Errorf("OPENSHIFT_DEFAULT_REGISTRY variable is invalid %q: %v", defaultRegistry, err)
174+
return nil, err
179175
}
180176

181177
authenticator, authenticatorPostStartHooks, err := NewAuthenticator(options, privilegedLoopbackConfig, informers)
@@ -188,7 +184,7 @@ func BuildMasterConfig(
188184
return nil, err
189185
}
190186
clusterQuotaMappingController := newClusterQuotaMappingController(informers)
191-
discoveryClient := cacheddiscovery.NewMemCacheClient(kubeInternalClient.Discovery())
187+
discoveryClient := cacheddiscovery.NewMemCacheClient(privilegedLoopbackKubeClientsetExternal.Discovery())
192188
restMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
193189
admissionInitializer, err := originadmission.NewPluginInitializer(options, privilegedLoopbackConfig, informers, authorizer, projectCache, restMapper, clusterQuotaMappingController)
194190
if err != nil {
@@ -246,7 +242,7 @@ func BuildMasterConfig(
246242
ClusterQuotaMappingController: clusterQuotaMappingController,
247243
RESTMapper: restMapper,
248244

249-
RegistryHostnameRetriever: imageapi.DefaultRegistryHostnameRetriever(defaultRegistryFunc, options.ImagePolicyConfig.ExternalRegistryHostname, options.ImagePolicyConfig.InternalRegistryHostname),
245+
RegistryHostnameRetriever: registryHostnameRetriever,
250246

251247
PrivilegedLoopbackClientConfig: *privilegedLoopbackConfig,
252248
PrivilegedLoopbackKubernetesClientsetInternal: kubeInternalClient,

pkg/cmd/server/origin/openshift_apiserver.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ import (
3737
buildapiserver "github.com/openshift/origin/pkg/build/apiserver"
3838
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
3939
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy"
40-
imageapi "github.com/openshift/origin/pkg/image/apis/image"
4140
imageapiserver "github.com/openshift/origin/pkg/image/apiserver"
4241
imageadmission "github.com/openshift/origin/pkg/image/apiserver/admission/limitrange"
42+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
4343
networkapiserver "github.com/openshift/origin/pkg/network/apiserver"
4444
oauthapiserver "github.com/openshift/origin/pkg/oauth/apiserver"
4545
projectapiserver "github.com/openshift/origin/pkg/project/apiserver"
@@ -92,7 +92,7 @@ type OpenshiftAPIExtraConfig struct {
9292
LimitVerifier imageadmission.LimitVerifier
9393
// RegistryHostnameRetriever retrieves the internal and external hostname of
9494
// the integrated registry, or false if no such registry is available.
95-
RegistryHostnameRetriever imageapi.RegistryHostnameRetriever
95+
RegistryHostnameRetriever registryhostname.RegistryHostnameRetriever
9696
AllowedRegistriesForImport *configapi.AllowedRegistries
9797
MaxImagesBulkImportedPerRepository int
9898
AdditionalTrustedCA []byte

pkg/image/apis/image/helper.go

-53
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ const (
3333

3434
// TagReferenceAnnotationTagHidden indicates that a given TagReference is hidden from search results
3535
TagReferenceAnnotationTagHidden = "hidden"
36-
37-
// ImportRegistryNotAllowed indicates that the image tag was not imported due to
38-
// untrusted registry.
39-
ImportRegistryNotAllowed = "registry is not allowed for import"
4036
)
4137

4238
var errNoRegistryURLPathAllowed = errors.New("no path after <host>[:<port>] is allowed")
@@ -59,55 +55,6 @@ var ErrCrossImageStreamReference = errors.New("reference tag points to another i
5955
// ErrInvalidReference is an error when reference tag is invalid.
6056
var ErrInvalidReference = errors.New("reference tag is invalid")
6157

62-
// RegistryHostnameRetriever represents an interface for retrieving the hostname
63-
// of internal and external registry.
64-
type RegistryHostnameRetriever interface {
65-
InternalRegistryHostname() (string, bool)
66-
ExternalRegistryHostname() (string, bool)
67-
}
68-
69-
// DefaultRegistryHostnameRetriever is a default implementation of
70-
// RegistryHostnameRetriever.
71-
// The first argument is a function that lazy-loads the value of
72-
// OPENSHIFT_DEFAULT_REGISTRY environment variable which should be deprecated in
73-
// future.
74-
func DefaultRegistryHostnameRetriever(deprecatedDefaultRegistryEnvFn func() (string, bool), external, internal string) RegistryHostnameRetriever {
75-
return &defaultRegistryHostnameRetriever{
76-
deprecatedDefaultFn: deprecatedDefaultRegistryEnvFn,
77-
externalHostname: external,
78-
internalHostname: internal,
79-
}
80-
}
81-
82-
type defaultRegistryHostnameRetriever struct {
83-
// deprecatedDefaultFn points to a function that will lazy-load the value of
84-
// OPENSHIFT_DEFAULT_REGISTRY.
85-
deprecatedDefaultFn func() (string, bool)
86-
internalHostname string
87-
externalHostname string
88-
}
89-
90-
// InternalRegistryHostnameFn returns a function that can be used to lazy-load
91-
// the internal Docker Registry hostname. If the master configuration properly
92-
// InternalRegistryHostname is set, it will prefer that over the lazy-loaded
93-
// environment variable 'OPENSHIFT_DEFAULT_REGISTRY'.
94-
func (r *defaultRegistryHostnameRetriever) InternalRegistryHostname() (string, bool) {
95-
if len(r.internalHostname) > 0 {
96-
return r.internalHostname, true
97-
}
98-
if r.deprecatedDefaultFn != nil {
99-
return r.deprecatedDefaultFn()
100-
}
101-
return "", false
102-
}
103-
104-
// ExternalRegistryHostnameFn returns a function that can be used to retrieve an
105-
// external/public hostname of Docker Registry. External location can be
106-
// configured in master config using 'ExternalRegistryHostname' property.
107-
func (r *defaultRegistryHostnameRetriever) ExternalRegistryHostname() (string, bool) {
108-
return r.externalHostname, len(r.externalHostname) > 0
109-
}
110-
11158
// ParseImageStreamImageName splits a string into its name component and ID component, and returns an error
11259
// if the string is not in the right form.
11360
func ParseImageStreamImageName(input string) (name string, id string, err error) {

pkg/image/apis/image/validation/validation_test.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -1252,10 +1252,7 @@ func TestValidateISTUpdateWithWhitelister(t *testing.T) {
12521252
Tag: tc.newTagRef,
12531253
}
12541254

1255-
hostnameFunc := imageapi.DefaultRegistryHostnameRetriever(func() (string, bool) {
1256-
return tc.registryURL, len(tc.registryURL) > 0
1257-
}, "", "")
1258-
whitelister, err := whitelist.NewRegistryWhitelister(*tc.whitelist, hostnameFunc)
1255+
whitelister, err := whitelist.NewRegistryWhitelister(*tc.whitelist, &simpleHostnameRetriever{registryURL: tc.registryURL})
12591256
if err != nil {
12601257
t.Fatal(err)
12611258
}
@@ -1267,6 +1264,18 @@ func TestValidateISTUpdateWithWhitelister(t *testing.T) {
12671264
}
12681265
}
12691266

1267+
type simpleHostnameRetriever struct {
1268+
registryURL string
1269+
}
1270+
1271+
func (r *simpleHostnameRetriever) InternalRegistryHostname() (string, bool) {
1272+
return r.registryURL, len(r.registryURL) > 0
1273+
}
1274+
1275+
func (r *simpleHostnameRetriever) ExternalRegistryHostname() (string, bool) {
1276+
return "", false
1277+
}
1278+
12701279
func TestValidateRegistryAllowedForImport(t *testing.T) {
12711280
const fieldName = "fieldName"
12721281

pkg/image/apis/image/validation/whitelist/whitelister.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ type RegistryWhitelister interface {
4949
Copy() RegistryWhitelister
5050
}
5151

52+
// RegistryHostnameRetriever represents an interface for retrieving the hostname
53+
// of internal and external registry.
54+
type RegistryHostnameRetriever interface {
55+
InternalRegistryHostname() (string, bool)
56+
ExternalRegistryHostname() (string, bool)
57+
}
58+
5259
type allowedHostPortGlobs struct {
5360
host string
5461
port string
@@ -57,7 +64,7 @@ type allowedHostPortGlobs struct {
5764
type registryWhitelister struct {
5865
whitelist []allowedHostPortGlobs
5966
pullSpecs sets.String
60-
registryHostRetriever imageapi.RegistryHostnameRetriever
67+
registryHostRetriever RegistryHostnameRetriever
6168
}
6269

6370
var _ RegistryWhitelister = &registryWhitelister{}
@@ -66,7 +73,7 @@ var _ RegistryWhitelister = &registryWhitelister{}
6673
// list of allowed registries and the current domain name of the integrated Docker registry.
6774
func NewRegistryWhitelister(
6875
whitelist serverapi.AllowedRegistries,
69-
registryHostRetriever imageapi.RegistryHostnameRetriever,
76+
registryHostRetriever RegistryHostnameRetriever,
7077
) (RegistryWhitelister, error) {
7178
errs := []error{}
7279
rw := registryWhitelister{

pkg/image/apiserver/apiserver.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
imageapiv1 "github.com/openshift/api/image/v1"
2323
imageclientv1 "github.com/openshift/client-go/image/clientset/versioned"
2424
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
25-
imageapi "github.com/openshift/origin/pkg/image/apis/image"
2625
"github.com/openshift/origin/pkg/image/apis/image/validation/whitelist"
2726
imageadmission "github.com/openshift/origin/pkg/image/apiserver/admission/limitrange"
2827
"github.com/openshift/origin/pkg/image/apiserver/registry/image"
@@ -35,6 +34,7 @@ import (
3534
"github.com/openshift/origin/pkg/image/apiserver/registry/imagestreamimport"
3635
"github.com/openshift/origin/pkg/image/apiserver/registry/imagestreammapping"
3736
"github.com/openshift/origin/pkg/image/apiserver/registry/imagestreamtag"
37+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
3838
imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset"
3939
"github.com/openshift/origin/pkg/image/importer"
4040
imageimporter "github.com/openshift/origin/pkg/image/importer"
@@ -44,7 +44,7 @@ import (
4444
type ExtraConfig struct {
4545
KubeAPIServerClientConfig *restclient.Config
4646
LimitVerifier imageadmission.LimitVerifier
47-
RegistryHostnameRetriever imageapi.RegistryHostnameRetriever
47+
RegistryHostnameRetriever registryhostname.RegistryHostnameRetriever
4848
AllowedRegistriesForImport *configapi.AllowedRegistries
4949
MaxImagesBulkImportedPerRepository int
5050
AdditionalTrustedCA []byte

pkg/image/apiserver/registry/imagestream/etcd/etcd.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/openshift/origin/pkg/image/apis/image/validation/whitelist"
2323
imageadmission "github.com/openshift/origin/pkg/image/apiserver/admission/limitrange"
2424
"github.com/openshift/origin/pkg/image/apiserver/registry/imagestream"
25+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
2526
printersinternal "github.com/openshift/origin/pkg/printers/internalversion"
2627
"github.com/openshift/origin/pkg/util/restoptions"
2728
)
@@ -48,7 +49,7 @@ func (r *REST) ShortNames() []string {
4849
// NewREST returns a new REST.
4950
func NewREST(
5051
optsGetter restoptions.Getter,
51-
registryHostname imageapi.RegistryHostnameRetriever,
52+
registryHostname registryhostname.RegistryHostnameRetriever,
5253
subjectAccessReviewRegistry authorizationclient.SubjectAccessReviewInterface,
5354
limitVerifier imageadmission.LimitVerifier,
5455
registryWhitelister whitelist.RegistryWhitelister,

pkg/image/apiserver/registry/imagestream/etcd/etcd_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
// install all APIs
2323
_ "github.com/openshift/origin/pkg/api/install"
24+
"github.com/openshift/origin/pkg/image/apiserver/registryhostname"
2425
)
2526

2627
const (
@@ -52,7 +53,7 @@ func (f *fakeSubjectAccessReviewRegistry) Create(subjectAccessReview *authorizat
5253
func newStorage(t *testing.T) (*REST, *StatusREST, *InternalREST, *etcdtesting.EtcdTestServer) {
5354
server, etcdStorage := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
5455
etcdStorage.Codec = legacyscheme.Codecs.LegacyCodec(schema.GroupVersion{Group: "image.openshift.io", Version: "v1"})
55-
registry := imageapi.DefaultRegistryHostnameRetriever(noDefaultRegistry, "", "")
56+
registry := registryhostname.TestingRegistryHostnameRetriever(noDefaultRegistry, "", "")
5657
imageStorage, _, statusStorage, internalStorage, err := NewREST(
5758
restoptions.NewSimpleGetter(etcdStorage),
5859
registry,

0 commit comments

Comments
 (0)