Skip to content
Closed
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
3 changes: 2 additions & 1 deletion data/data/manifests/bootkube/kube-cloud-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ metadata:
namespace: kube-system
type: Opaque
data:
config: ""
config:
{{.CloudProviderConfig | indent 4}}
12 changes: 7 additions & 5 deletions pkg/asset/installconfig/openstack/openstack.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"github.com/pkg/errors"
survey "gopkg.in/AlecAivazis/survey.v1"

"github.com/gophercloud/utils/openstack/clientconfig"
"github.com/openshift/installer/pkg/asset"
"github.com/openshift/installer/pkg/types/openstack"
)
Expand Down Expand Up @@ -55,19 +56,19 @@ func Platform() (*openstack.Platform, error) {
return nil, err
}

var cloudConfig *clientconfig.Cloud
cloud, err := asset.GenerateUserProvidedAsset(
"OpenStack Cloud",
&survey.Question{
//TODO(russellb) - We could open clouds.yaml here and read the list of defined clouds
//and then use survey.Select to let the user choose one.
Prompt: &survey.Input{
Message: "Cloud",
Help: "The OpenStack cloud name from clouds.yaml.",
},
Validate: survey.ComposeValidators(survey.Required, func(ans interface{}) error {
//value := ans.(string)
//FIXME(russellb) add some validation here
return nil
clientOpts := new(clientconfig.ClientOpts)
clientOpts.Cloud = ans.(string)
cloudConfig, err = clientconfig.GetCloudFromYAML(clientOpts)
return err
}),
},
"OPENSHIFT_INSTALL_OPENSTACK_CLOUD",
Expand Down Expand Up @@ -100,6 +101,7 @@ func Platform() (*openstack.Platform, error) {
Region: region,
BaseImage: image,
Cloud: cloud,
CloudConfig: cloudConfig,
ExternalNetwork: extNet,
}, nil
}
35 changes: 20 additions & 15 deletions pkg/asset/manifests/operators.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,22 +138,27 @@ func (m *Manifests) generateBootKubeManifests(dependencies asset.Parents) []*ass
etcdEndpointHostnames[i] = fmt.Sprintf("%s-etcd-%d", installConfig.Config.ObjectMeta.Name, i)
}

platformConfig, err := yaml.Marshal(installConfig.Config.Platform)
if err != nil {
panic(err)
}

templateData := &bootkubeTemplateData{
Base64encodeCloudProviderConfig: "", // FIXME
EtcdCaCert: string(etcdCA.Cert()),
EtcdClientCert: base64.StdEncoding.EncodeToString(etcdClientCertKey.Cert()),
EtcdClientKey: base64.StdEncoding.EncodeToString(etcdClientCertKey.Key()),
KubeCaCert: base64.StdEncoding.EncodeToString(kubeCA.Cert()),
KubeCaKey: base64.StdEncoding.EncodeToString(kubeCA.Key()),
McsTLSCert: base64.StdEncoding.EncodeToString(mcsCertKey.Cert()),
McsTLSKey: base64.StdEncoding.EncodeToString(mcsCertKey.Key()),
PullSecret: base64.StdEncoding.EncodeToString([]byte(installConfig.Config.PullSecret)),
RootCaCert: string(rootCA.Cert()),
ServiceServingCaCert: base64.StdEncoding.EncodeToString(serviceServingCA.Cert()),
ServiceServingCaKey: base64.StdEncoding.EncodeToString(serviceServingCA.Key()),
CVOClusterID: installConfig.Config.ClusterID,
EtcdEndpointHostnames: etcdEndpointHostnames,
EtcdEndpointDNSSuffix: installConfig.Config.BaseDomain,
CloudProviderConfig: string(platformConfig),
EtcdCaCert: string(etcdCA.Cert()),
EtcdClientCert: base64.StdEncoding.EncodeToString(etcdClientCertKey.Cert()),
EtcdClientKey: base64.StdEncoding.EncodeToString(etcdClientCertKey.Key()),
KubeCaCert: base64.StdEncoding.EncodeToString(kubeCA.Cert()),
KubeCaKey: base64.StdEncoding.EncodeToString(kubeCA.Key()),
McsTLSCert: base64.StdEncoding.EncodeToString(mcsCertKey.Cert()),
McsTLSKey: base64.StdEncoding.EncodeToString(mcsCertKey.Key()),
PullSecret: base64.StdEncoding.EncodeToString([]byte(installConfig.Config.PullSecret)),
RootCaCert: string(rootCA.Cert()),
ServiceServingCaCert: base64.StdEncoding.EncodeToString(serviceServingCA.Cert()),
ServiceServingCaKey: base64.StdEncoding.EncodeToString(serviceServingCA.Key()),
CVOClusterID: installConfig.Config.ClusterID,
EtcdEndpointHostnames: etcdEndpointHostnames,
EtcdEndpointDNSSuffix: installConfig.Config.BaseDomain,
}

kubeCloudConfig := &bootkube.KubeCloudConfig{}
Expand Down
32 changes: 16 additions & 16 deletions pkg/asset/manifests/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@ type cloudCredsSecretData struct {
}

type bootkubeTemplateData struct {
Base64encodeCloudProviderConfig string
EtcdCaCert string
EtcdClientCert string
EtcdClientKey string
KubeCaCert string
KubeCaKey string
McsTLSCert string
McsTLSKey string
PullSecret string
RootCaCert string
ServiceServingCaCert string
ServiceServingCaKey string
WorkerIgnConfig string
CVOClusterID string
EtcdEndpointHostnames []string
EtcdEndpointDNSSuffix string
CloudProviderConfig string
EtcdCaCert string
EtcdClientCert string
EtcdClientKey string
KubeCaCert string
KubeCaKey string
McsTLSCert string
McsTLSKey string
PullSecret string
RootCaCert string
ServiceServingCaCert string
ServiceServingCaKey string
WorkerIgnConfig string
CVOClusterID string
EtcdEndpointHostnames []string
EtcdEndpointDNSSuffix string
}

type tectonicTemplateData struct {
Expand Down
7 changes: 7 additions & 0 deletions pkg/types/openstack/platform.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package openstack

import (
"github.com/gophercloud/utils/openstack/clientconfig"
)

// Platform stores all the global configuration that all
// machinesets use.
type Platform struct {
Expand All @@ -23,6 +27,9 @@ type Platform struct {
// Name of OpenStack cloud to use from clouds.yaml
Cloud string `json:"cloud"`

// Cloud config instance
CloudConfig *clientconfig.Cloud

// ExternalNetwork
// The OpenStack external network to be used for installation.
ExternalNetwork string `json:"externalNetwork"`
Expand Down