Skip to content

Commit c2ed5ec

Browse files
committed
up: update cluster up to prepare for external config
1 parent b6036b0 commit c2ed5ec

File tree

14 files changed

+175
-166
lines changed

14 files changed

+175
-166
lines changed

Diff for: hack/import-restrictions.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@
458458
"vendor/github.com/RangelReale/osincli",
459459
"vendor/github.com/spf13/cobra",
460460
"vendor/github.com/spf13/pflag",
461+
"vendor/github.com/ghodss/yaml",
461462
"vendor/golang.org",
462463
"vendor/gopkg.in/ldap.v2",
463464
"vendor/k8s.io/api",
@@ -476,7 +477,7 @@
476477
"github.com/openshift/origin/pkg/authorization/generated",
477478
"github.com/openshift/origin/pkg/build/apis/build/v1",
478479
"github.com/openshift/origin/pkg/build/generated",
479-
"github.com/openshift/origin/pkg/image/apis/image/v1",
480+
"github.com/openshift/origin/pkg/image/apis/image/v1",
480481
"github.com/openshift/origin/pkg/image/generated",
481482
"github.com/openshift/origin/pkg/image/util",
482483
"github.com/openshift/origin/pkg/network/generated",
@@ -524,6 +525,7 @@
524525
"github.com/openshift/origin/pkg/cmd/server/apis/config",
525526
"github.com/openshift/origin/pkg/cmd/server/apis/config/install",
526527
"github.com/openshift/origin/pkg/cmd/server/apis/config/latest",
528+
"github.com/openshift/origin/pkg/cmd/server/apis/config/v1",
527529
"github.com/openshift/origin/pkg/cmd/server/apis/config/validation/ldap",
528530
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy",
529531
"github.com/openshift/origin/pkg/cmd/server/etcd",

Diff for: pkg/oc/clusteradd/componentinstall/apply_list.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010

1111
"k8s.io/apimachinery/pkg/util/wait"
1212

13-
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
1413
"github.com/openshift/origin/pkg/oc/clusterup/docker/dockerhelper"
1514
"github.com/openshift/origin/pkg/oc/clusterup/docker/run"
1615
"github.com/openshift/origin/pkg/oc/lib/errors"
@@ -60,7 +59,7 @@ func (opt *installReadyList) Name() string {
6059
func (opt *installReadyList) Install(dockerClient dockerhelper.Interface) error {
6160
imageRunHelper := run.NewRunHelper(dockerhelper.NewHelper(dockerClient)).New()
6261

63-
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(opt.baseDir, kubeapiserver.KubeAPIServerDirName, "admin.kubeconfig"))
62+
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(opt.baseDir, "kube-apiserver", "admin.kubeconfig"))
6463
if err != nil {
6564
return err
6665
}

Diff for: pkg/oc/clusteradd/componentinstall/apply_template.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import (
88
"time"
99

1010
"github.com/golang/glog"
11-
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
12-
1311
"k8s.io/apimachinery/pkg/util/wait"
1412

1513
"github.com/openshift/origin/pkg/oc/clusterup/docker/dockerhelper"
@@ -82,7 +80,7 @@ func (opt installReadyTemplate) Install(dockerClient dockerhelper.Interface) err
8280

8381
glog.Infof("Installing %q\n", opt.Name())
8482

85-
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(opt.baseDir, kubeapiserver.KubeAPIServerDirName, "admin.kubeconfig"))
83+
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(opt.baseDir, "kube-apiserver", "admin.kubeconfig"))
8684
if err != nil {
8785
return err
8886
}

Diff for: pkg/oc/clusteradd/componentinstall/context.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"io/ioutil"
55
"path"
66

7-
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
87
restclient "k8s.io/client-go/rest"
98
kclientcmd "k8s.io/client-go/tools/clientcmd"
109
)
@@ -68,7 +67,7 @@ func (c *installContext) ImagePullPolicy() string {
6867
}
6968

7069
func NewComponentInstallContext(clientImageName, imageFormat, pullPolicy, baseDir string, logLevel int) (Context, error) {
71-
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(baseDir, kubeapiserver.KubeAPIServerDirName, adminKubeConfigFileName))
70+
clusterAdminConfigBytes, err := ioutil.ReadFile(path.Join(baseDir, "kube-apiserver", adminKubeConfigFileName))
7271
if err != nil {
7372
return nil, err
7473
}

Diff for: pkg/oc/clusteradd/componentinstall/master_config.go

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package componentinstall
2+
3+
import (
4+
"fmt"
5+
"io/ioutil"
6+
7+
"github.com/ghodss/yaml"
8+
9+
"k8s.io/apimachinery/pkg/runtime"
10+
"k8s.io/apimachinery/pkg/runtime/serializer"
11+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
12+
13+
configv1 "github.com/openshift/origin/pkg/cmd/server/apis/config/v1"
14+
)
15+
16+
var (
17+
masterConfigScheme = runtime.NewScheme()
18+
masterConfigDecoder runtime.Decoder
19+
masterConfigEncoder runtime.Encoder
20+
)
21+
22+
func init() {
23+
utilruntime.Must(configv1.InstallLegacy(masterConfigScheme))
24+
25+
// TODO: Remove this when we start generating config.openshift.io/v1 configs
26+
utilruntime.Must(configv1.InstallLegacy(masterConfigScheme))
27+
28+
configCodecfactory := serializer.NewCodecFactory(masterConfigScheme)
29+
masterConfigDecoder = configCodecfactory.UniversalDecoder(configv1.LegacySchemeGroupVersion)
30+
masterConfigEncoder = configCodecfactory.LegacyCodec(configv1.LegacySchemeGroupVersion)
31+
}
32+
33+
func WriteMasterConfig(filename string, config *configv1.MasterConfig) error {
34+
json, err := runtime.Encode(masterConfigEncoder, config)
35+
if err != nil {
36+
return fmt.Errorf("unable to encode master config: %v", err)
37+
}
38+
yamlBytes, err := yaml.JSONToYAML(json)
39+
if err != nil {
40+
return err
41+
}
42+
43+
return ioutil.WriteFile(filename, yamlBytes, 0644)
44+
}
45+
46+
func ReadMasterConfig(filename string) (*configv1.MasterConfig, error) {
47+
masterBytes, err := ioutil.ReadFile(filename)
48+
if err != nil {
49+
return nil, err
50+
}
51+
return ReadMasterConfigBytes(masterBytes)
52+
}
53+
54+
func ReadMasterConfigBytes(masterBytes []byte) (*configv1.MasterConfig, error) {
55+
obj, err := runtime.Decode(masterConfigDecoder, masterBytes)
56+
if err != nil {
57+
return nil, err
58+
}
59+
masterConfig, ok := obj.(*configv1.MasterConfig)
60+
if !ok {
61+
return nil, fmt.Errorf("object %T is not MasterConfig", masterConfig)
62+
}
63+
return masterConfig, nil
64+
}

Diff for: pkg/oc/clusteradd/componentinstall/node_config.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package componentinstall
2+
3+
import (
4+
"fmt"
5+
"io/ioutil"
6+
7+
"github.com/ghodss/yaml"
8+
9+
"k8s.io/apimachinery/pkg/runtime"
10+
"k8s.io/apimachinery/pkg/runtime/serializer"
11+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
12+
13+
configv1 "github.com/openshift/origin/pkg/cmd/server/apis/config/v1"
14+
)
15+
16+
var (
17+
nodeConfigScheme = runtime.NewScheme()
18+
nodeConfigDecoder runtime.Decoder
19+
nodeConfigEncoder runtime.Encoder
20+
)
21+
22+
func init() {
23+
utilruntime.Must(configv1.InstallLegacy(nodeConfigScheme))
24+
25+
// TODO: Remove this when we generate config.openshift.io/v1 configs
26+
utilruntime.Must(configv1.InstallLegacy(nodeConfigScheme))
27+
28+
configCodecfactory := serializer.NewCodecFactory(nodeConfigScheme)
29+
nodeConfigDecoder = configCodecfactory.UniversalDecoder(configv1.LegacySchemeGroupVersion)
30+
nodeConfigEncoder = configCodecfactory.LegacyCodec(configv1.LegacySchemeGroupVersion)
31+
}
32+
33+
func WriteNodeConfig(filename string, config *configv1.NodeConfig) error {
34+
json, err := runtime.Encode(nodeConfigEncoder, config)
35+
if err != nil {
36+
return fmt.Errorf("unable to encode node config: %v", err)
37+
}
38+
yamlBytes, err := yaml.JSONToYAML(json)
39+
if err != nil {
40+
return err
41+
}
42+
43+
return ioutil.WriteFile(filename, yamlBytes, 0644)
44+
}
45+
46+
func ReadNodeConfig(filename string) (*configv1.NodeConfig, error) {
47+
masterBytes, err := ioutil.ReadFile(filename)
48+
if err != nil {
49+
return nil, err
50+
}
51+
obj, err := runtime.Decode(nodeConfigDecoder, masterBytes)
52+
if err != nil {
53+
return nil, err
54+
}
55+
nodeConfig, ok := obj.(*configv1.NodeConfig)
56+
if !ok {
57+
return nil, fmt.Errorf("object %T is not NodeConfig", nodeConfig)
58+
}
59+
return nodeConfig, nil
60+
}

Diff for: pkg/oc/clusteradd/components/router/router_install.go

+2-24
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"fmt"
66
"io"
7-
"io/ioutil"
87
"os"
98
"path"
109
"path/filepath"
@@ -14,12 +13,9 @@ import (
1413
corev1 "k8s.io/api/core/v1"
1514
apierrors "k8s.io/apimachinery/pkg/api/errors"
1615
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
17-
"k8s.io/apimachinery/pkg/runtime"
1816
"k8s.io/client-go/kubernetes"
1917

2018
"github.com/openshift/origin/pkg/cmd/server/admin"
21-
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
22-
configapilatest "github.com/openshift/origin/pkg/cmd/server/apis/config/latest"
2319
"github.com/openshift/origin/pkg/oc/clusteradd/componentinstall"
2420
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
2521
"github.com/openshift/origin/pkg/oc/clusterup/docker/dockerhelper"
@@ -71,10 +67,8 @@ func (c *RouterComponentOptions) Install(dockerClient dockerhelper.Interface) er
7167
return err
7268
}
7369

74-
masterConfig, err := getMasterConfig(c.InstallContext.BaseDir())
75-
if err != nil {
76-
return err
77-
}
70+
masterConfigPath := path.Join(c.InstallContext.BaseDir(), kubeapiserver.KubeAPIServerDirName, "master-config.yaml")
71+
masterConfig, err := componentinstall.ReadMasterConfig(masterConfigPath)
7872

7973
masterConfigDir := path.Join(c.InstallContext.BaseDir(), kubeapiserver.KubeAPIServerDirName)
8074
// Create router cert
@@ -155,22 +149,6 @@ func catFiles(dest string, src ...string) error {
155149
return nil
156150
}
157151

158-
func getMasterConfig(basedir string) (*configapi.MasterConfig, error) {
159-
configBytes, err := ioutil.ReadFile(path.Join(basedir, kubeapiserver.KubeAPIServerDirName, "master-config.yaml"))
160-
if err != nil {
161-
return nil, err
162-
}
163-
configObj, err := runtime.Decode(configapilatest.Codec, configBytes)
164-
if err != nil {
165-
return nil, err
166-
}
167-
masterConfig, ok := configObj.(*configapi.MasterConfig)
168-
if !ok {
169-
return nil, fmt.Errorf("the %#v is not MasterConfig", configObj)
170-
}
171-
return masterConfig, nil
172-
}
173-
174152
func portForwarding() bool {
175153
// true if running on Mac, with no DOCKER_HOST defined
176154
return goruntime.GOOS == "darwin" && len(os.Getenv("DOCKER_HOST")) == 0

Diff for: pkg/oc/clusteradd/components/service-catalog/service_catalog.go

+3-14
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
11
package service_catalog
22

33
import (
4-
"fmt"
5-
"io/ioutil"
64
"net/url"
75
"path"
86

97
"github.com/golang/glog"
108

119
rbacv1 "k8s.io/api/rbac/v1"
1210
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13-
"k8s.io/apimachinery/pkg/runtime"
1411
"k8s.io/client-go/kubernetes"
1512
aggregatorclient "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset"
1613
rbacv1helpers "k8s.io/kubernetes/pkg/apis/rbac/v1"
1714
"k8s.io/kubernetes/pkg/registry/rbac/reconciliation"
1815

19-
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
20-
configapilatest "github.com/openshift/origin/pkg/cmd/server/apis/config/latest"
2116
"github.com/openshift/origin/pkg/cmd/util/variable"
2217
"github.com/openshift/origin/pkg/oc/clusteradd/componentinstall"
2318
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
@@ -63,18 +58,12 @@ func (c *ServiceCatalogComponentOptions) Install(dockerClient dockerhelper.Inter
6358
imageTemplate.Format = c.InstallContext.ImageFormat()
6459
imageTemplate.Latest = false
6560

66-
configBytes, err := ioutil.ReadFile(path.Join(c.InstallContext.BaseDir(), kubeapiserver.KubeAPIServerDirName, "master-config.yaml"))
61+
masterConfigPath := path.Join(c.InstallContext.BaseDir(), kubeapiserver.KubeAPIServerDirName, "master-config.yaml")
62+
masterConfig, err := componentinstall.ReadMasterConfig(masterConfigPath)
6763
if err != nil {
6864
return err
6965
}
70-
configObj, err := runtime.Decode(configapilatest.Codec, configBytes)
71-
if err != nil {
72-
return err
73-
}
74-
masterConfig, ok := configObj.(*configapi.MasterConfig)
75-
if !ok {
76-
return fmt.Errorf("the %#v is not MasterConfig", configObj)
77-
}
66+
7867
masterURL, err := url.Parse(masterConfig.MasterPublicURL)
7968
if err != nil {
8069
return err

Diff for: pkg/oc/clusteradd/components/web-console-operator/web_console_operator.go

+9-42
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,17 @@ package web_console_operator
22

33
import (
44
"fmt"
5-
"io/ioutil"
65
"net/url"
76
"path"
87

98
"github.com/golang/glog"
109

1110
apierrors "k8s.io/apimachinery/pkg/api/errors"
1211
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13-
"k8s.io/apimachinery/pkg/runtime"
1412
"k8s.io/client-go/kubernetes"
1513
"k8s.io/client-go/util/retry"
1614

1715
operatorversionclient "github.com/openshift/origin/pkg/cmd/openshift-operators/generated/clientset/versioned"
18-
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
19-
configapilatest "github.com/openshift/origin/pkg/cmd/server/apis/config/latest"
2016
"github.com/openshift/origin/pkg/cmd/util/variable"
2117
"github.com/openshift/origin/pkg/oc/clusteradd/componentinstall"
2218
"github.com/openshift/origin/pkg/oc/clusterup/coreinstall/kubeapiserver"
@@ -88,6 +84,12 @@ func (c *WebConsoleOperatorComponentOptions) Install(dockerClient dockerhelper.I
8884
return err
8985
}
9086

87+
configPath := path.Join(c.InstallContext.BaseDir(), kubeapiserver.KubeAPIServerDirName, "master-config.yaml")
88+
masterConfig, err := componentinstall.ReadMasterConfig(configPath)
89+
if err != nil {
90+
return err
91+
}
92+
9193
// we to selectively add to the config, so we'll do this post installation.
9294
operatorClient, err := operatorversionclient.NewForConfig(c.InstallContext.ClusterAdminClientConfig())
9395
if err != nil {
@@ -102,12 +104,13 @@ func (c *WebConsoleOperatorComponentOptions) Install(dockerClient dockerhelper.I
102104
return err
103105
}
104106

105-
masterPublicHostPort, err := getMasterPublicHostPort(c.InstallContext.BaseDir())
107+
masterPublicURL, err := url.Parse(masterConfig.MasterPublicURL)
106108
if err != nil {
107109
return err
108110
}
111+
masterPublicHostPort := masterPublicURL.Host
109112
operatorConfig.Spec.WebConsoleConfig.ClusterInfo.ConsolePublicURL = "https://" + masterPublicHostPort + "/console/"
110-
operatorConfig.Spec.WebConsoleConfig.ClusterInfo.MasterPublicURL, err = getMasterPublicURL(c.InstallContext.BaseDir())
113+
operatorConfig.Spec.WebConsoleConfig.ClusterInfo.MasterPublicURL = masterConfig.MasterPublicURL
111114
if err != nil {
112115
return err
113116
}
@@ -120,39 +123,3 @@ func (c *WebConsoleOperatorComponentOptions) Install(dockerClient dockerhelper.I
120123

121124
return nil
122125
}
123-
124-
func getMasterPublicHostPort(basedir string) (string, error) {
125-
masterPublicURL, err := getMasterPublicURL(basedir)
126-
if err != nil {
127-
return "", err
128-
}
129-
masterURL, err := url.Parse(masterPublicURL)
130-
if err != nil {
131-
return "", err
132-
}
133-
return masterURL.Host, nil
134-
}
135-
136-
func getMasterPublicURL(basedir string) (string, error) {
137-
masterConfig, err := getMasterConfig(basedir)
138-
if err != nil {
139-
return "", err
140-
}
141-
return masterConfig.MasterPublicURL, nil
142-
}
143-
144-
func getMasterConfig(basedir string) (*configapi.MasterConfig, error) {
145-
configBytes, err := ioutil.ReadFile(path.Join(basedir, kubeapiserver.KubeAPIServerDirName, "master-config.yaml"))
146-
if err != nil {
147-
return nil, err
148-
}
149-
configObj, err := runtime.Decode(configapilatest.Codec, configBytes)
150-
if err != nil {
151-
return nil, err
152-
}
153-
masterConfig, ok := configObj.(*configapi.MasterConfig)
154-
if !ok {
155-
return nil, fmt.Errorf("the %#v is not MasterConfig", configObj)
156-
}
157-
return masterConfig, nil
158-
}

0 commit comments

Comments
 (0)