mirror of https://github.com/kubernetes/kops.git
Remove use of ClusterSpec in nodeup
This commit is contained in:
parent
4fa3f03745
commit
0d9c130b07
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
"k8s.io/kops/pkg/apis/kops/registry"
|
|
||||||
"k8s.io/kops/pkg/apis/nodeup"
|
"k8s.io/kops/pkg/apis/nodeup"
|
||||||
"k8s.io/kops/pkg/bootstrap"
|
"k8s.io/kops/pkg/bootstrap"
|
||||||
)
|
)
|
||||||
|
|
@ -39,18 +38,6 @@ func (s *Server) getNodeConfig(ctx context.Context, req *nodeup.BootstrapRequest
|
||||||
// Note: For now, we're assuming there is only a single cluster, and it is ours.
|
// Note: For now, we're assuming there is only a single cluster, and it is ours.
|
||||||
// We therefore use the configured base path
|
// We therefore use the configured base path
|
||||||
|
|
||||||
// Today we load the full cluster config from the state store (e.g. S3) every time
|
|
||||||
// TODO: we should generate it on the fly (to allow for cluster reconfiguration)
|
|
||||||
{
|
|
||||||
p := s.configBase.Join(registry.PathClusterCompleted)
|
|
||||||
|
|
||||||
b, err := p.ReadFile(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error loading cluster config %q: %w", p, err)
|
|
||||||
}
|
|
||||||
nodeConfig.ClusterFullConfig = string(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
p := s.configBase.Join("igconfig", "node", instanceGroupName, "nodeupconfig.yaml")
|
p := s.configBase.Join("igconfig", "node", instanceGroupName, "nodeupconfig.yaml")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,6 @@ type BootstrapResponse struct {
|
||||||
|
|
||||||
// NodeConfig holds configuration needed to boot a node (without the kops state store)
|
// NodeConfig holds configuration needed to boot a node (without the kops state store)
|
||||||
type NodeConfig struct {
|
type NodeConfig struct {
|
||||||
// ClusterFullConfig holds the completed configuration for the cluster.
|
|
||||||
ClusterFullConfig string `json:"clusterFullConfig,omitempty"`
|
|
||||||
|
|
||||||
// NodeupConfig holds the nodeup.Config for the node's instance group.
|
// NodeupConfig holds the nodeup.Config for the node's instance group.
|
||||||
NodeupConfig string `json:"nodeupConfig,omitempty"`
|
NodeupConfig string `json:"nodeupConfig,omitempty"`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,9 @@ type Config struct {
|
||||||
// Packages specifies additional packages to be installed.
|
// Packages specifies additional packages to be installed.
|
||||||
Packages []string `json:"packages,omitempty"`
|
Packages []string `json:"packages,omitempty"`
|
||||||
|
|
||||||
|
// ConfigStore configures the stores that nodes use to get their configuration when they don't use kops-controller.
|
||||||
|
ConfigStore *kops.ConfigStoreSpec `json:"configStore,omitempty"`
|
||||||
|
|
||||||
// EtcdClusterNames are the names of the etcd clusters.
|
// EtcdClusterNames are the names of the etcd clusters.
|
||||||
EtcdClusterNames []string `json:",omitempty"`
|
EtcdClusterNames []string `json:",omitempty"`
|
||||||
// EtcdManifests are the manifests for running etcd.
|
// EtcdManifests are the manifests for running etcd.
|
||||||
|
|
@ -365,6 +368,13 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if instanceGroup.HasAPIServer() || !model.UseKopsControllerForNodeConfig(cluster) {
|
||||||
|
config.ConfigStore = &kops.ConfigStoreSpec{
|
||||||
|
Keypairs: cluster.Spec.ConfigStore.Keypairs,
|
||||||
|
Secrets: cluster.Spec.ConfigStore.Secrets,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if instanceGroup.HasAPIServer() || cluster.UsesLegacyGossip() {
|
if instanceGroup.HasAPIServer() || cluster.UsesLegacyGossip() {
|
||||||
config.Networking.EgressProxy = cluster.Spec.Networking.EgressProxy
|
config.Networking.EgressProxy = cluster.Spec.Networking.EgressProxy
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,12 +43,10 @@ import (
|
||||||
"k8s.io/kops/nodeup/pkg/model/networking"
|
"k8s.io/kops/nodeup/pkg/model/networking"
|
||||||
api "k8s.io/kops/pkg/apis/kops"
|
api "k8s.io/kops/pkg/apis/kops"
|
||||||
kopsmodel "k8s.io/kops/pkg/apis/kops/model"
|
kopsmodel "k8s.io/kops/pkg/apis/kops/model"
|
||||||
"k8s.io/kops/pkg/apis/kops/registry"
|
|
||||||
"k8s.io/kops/pkg/apis/nodeup"
|
"k8s.io/kops/pkg/apis/nodeup"
|
||||||
"k8s.io/kops/pkg/assets"
|
"k8s.io/kops/pkg/assets"
|
||||||
"k8s.io/kops/pkg/bootstrap"
|
"k8s.io/kops/pkg/bootstrap"
|
||||||
"k8s.io/kops/pkg/configserver"
|
"k8s.io/kops/pkg/configserver"
|
||||||
"k8s.io/kops/pkg/kopscodecs"
|
|
||||||
"k8s.io/kops/pkg/kopscontrollerclient"
|
"k8s.io/kops/pkg/kopscontrollerclient"
|
||||||
"k8s.io/kops/pkg/resolver"
|
"k8s.io/kops/pkg/resolver"
|
||||||
"k8s.io/kops/pkg/wellknownports"
|
"k8s.io/kops/pkg/wellknownports"
|
||||||
|
|
@ -78,8 +76,6 @@ type NodeUpCommand struct {
|
||||||
CacheDir string
|
CacheDir string
|
||||||
ConfigLocation string
|
ConfigLocation string
|
||||||
Target string
|
Target string
|
||||||
// Deprecated: Fields should be accessed from NodeupConfig or BootConfig.
|
|
||||||
cluster *api.Cluster
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run is responsible for perform the nodeup process
|
// Run is responsible for perform the nodeup process
|
||||||
|
|
@ -134,35 +130,6 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
return fmt.Errorf("ConfigBase or ConfigServer is required")
|
return fmt.Errorf("ConfigBase or ConfigServer is required")
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
var b []byte
|
|
||||||
var clusterDescription string
|
|
||||||
if nodeConfig != nil {
|
|
||||||
b = []byte(nodeConfig.ClusterFullConfig)
|
|
||||||
clusterDescription = "config response"
|
|
||||||
} else {
|
|
||||||
p := configBase.Join(registry.PathClusterCompleted)
|
|
||||||
var err error
|
|
||||||
|
|
||||||
b, err = p.ReadFile(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error loading Cluster %q: %v", p, err)
|
|
||||||
}
|
|
||||||
clusterDescription = fmt.Sprintf("%q", p)
|
|
||||||
}
|
|
||||||
|
|
||||||
o, _, err := kopscodecs.Decode(b, nil)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error parsing Cluster %s: %v", clusterDescription, err)
|
|
||||||
}
|
|
||||||
var ok bool
|
|
||||||
if c.cluster, ok = o.(*api.Cluster); !ok {
|
|
||||||
return fmt.Errorf("unexpected object type for Cluster %s: %T", clusterDescription, o)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Hack to force usage of NodeupConfig
|
|
||||||
c.cluster.Name = "use NodeupConfig.ClusterName instead"
|
|
||||||
|
|
||||||
var nodeupConfig nodeup.Config
|
var nodeupConfig nodeup.Config
|
||||||
var nodeupConfigHash [32]byte
|
var nodeupConfigHash [32]byte
|
||||||
if nodeConfig != nil {
|
if nodeConfig != nil {
|
||||||
|
|
@ -239,9 +206,9 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
var keyStore fi.KeystoreReader
|
var keyStore fi.KeystoreReader
|
||||||
if nodeConfig != nil {
|
if nodeConfig != nil {
|
||||||
modelContext.SecretStore = configserver.NewSecretStore(nodeConfig.NodeSecrets)
|
modelContext.SecretStore = configserver.NewSecretStore(nodeConfig.NodeSecrets)
|
||||||
} else if c.cluster.Spec.ConfigStore.Secrets != "" {
|
} else if nodeupConfig.ConfigStore.Secrets != "" {
|
||||||
klog.Infof("Building SecretStore at %q", c.cluster.Spec.ConfigStore.Secrets)
|
klog.Infof("Building SecretStore at %q", nodeupConfig.ConfigStore.Secrets)
|
||||||
p, err := vfs.Context.BuildVfsPath(c.cluster.Spec.ConfigStore.Secrets)
|
p, err := vfs.Context.BuildVfsPath(nodeupConfig.ConfigStore.Secrets)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error building secret store path: %v", err)
|
return fmt.Errorf("error building secret store path: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -254,9 +221,9 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
|
|
||||||
if nodeConfig != nil {
|
if nodeConfig != nil {
|
||||||
modelContext.KeyStore = configserver.NewKeyStore()
|
modelContext.KeyStore = configserver.NewKeyStore()
|
||||||
} else if c.cluster.Spec.ConfigStore.Keypairs != "" {
|
} else if nodeupConfig.ConfigStore.Keypairs != "" {
|
||||||
klog.Infof("Building KeyStore at %q", c.cluster.Spec.ConfigStore.Keypairs)
|
klog.Infof("Building KeyStore at %q", nodeupConfig.ConfigStore.Keypairs)
|
||||||
p, err := vfs.Context.BuildVfsPath(c.cluster.Spec.ConfigStore.Keypairs)
|
p, err := vfs.Context.BuildVfsPath(nodeupConfig.ConfigStore.Keypairs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error building key store path: %v", err)
|
return fmt.Errorf("error building key store path: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -375,7 +342,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
Cloud: cloud,
|
Cloud: cloud,
|
||||||
}
|
}
|
||||||
case "dryrun":
|
case "dryrun":
|
||||||
assetBuilder := assets.NewAssetBuilder(vfs.Context, c.cluster.Spec.Assets, c.cluster.Spec.KubernetesVersion, false)
|
assetBuilder := assets.NewAssetBuilder(vfs.Context, nil, nodeupConfig.KubernetesVersion, false)
|
||||||
target = fi.NewNodeupDryRunTarget(assetBuilder, out)
|
target = fi.NewNodeupDryRunTarget(assetBuilder, out)
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unsupported target type %q", c.Target)
|
return fmt.Errorf("unsupported target type %q", c.Target)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue