mirror of https://github.com/kubernetes/kops.git
Rename BootstrapScript to BootstrapScriptBuilder
This commit is contained in:
parent
87446f8894
commit
cef5b175c7
|
@ -33,9 +33,9 @@ const DefaultInstanceType = "ecs.n2.medium"
|
|||
type ScalingGroupModelBuilder struct {
|
||||
*ALIModelContext
|
||||
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &ScalingGroupModelBuilder{}
|
||||
|
@ -129,7 +129,7 @@ func (b *ScalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
return err
|
||||
}
|
||||
launchConfiguration.SSHKey = b.LinkToSSHKey()
|
||||
if launchConfiguration.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster); err != nil {
|
||||
if launchConfiguration.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,9 +45,9 @@ const (
|
|||
type AutoscalingGroupModelBuilder struct {
|
||||
*AWSModelContext
|
||||
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &AutoscalingGroupModelBuilder{}
|
||||
|
@ -261,7 +261,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchConfigurationTask(c *fi.ModelB
|
|||
}
|
||||
|
||||
// @step: add the instancegroup userdata
|
||||
if t.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster); err != nil {
|
||||
if t.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
|
@ -43,15 +43,15 @@ type NodeUpConfigBuilder interface {
|
|||
BuildConfig(ig *kops.InstanceGroup) (*nodeup.Config, error)
|
||||
}
|
||||
|
||||
// BootstrapScript creates the bootstrap script
|
||||
type BootstrapScript struct {
|
||||
// BootstrapScriptBuilder creates the bootstrap script
|
||||
type BootstrapScriptBuilder struct {
|
||||
NodeUpSource map[architectures.Architecture]string
|
||||
NodeUpSourceHash map[architectures.Architecture]string
|
||||
NodeUpConfigBuilder NodeUpConfigBuilder
|
||||
}
|
||||
|
||||
// kubeEnv returns the nodeup config for the instance group
|
||||
func (b *BootstrapScript) kubeEnv(ig *kops.InstanceGroup) (string, error) {
|
||||
func (b *BootstrapScriptBuilder) kubeEnv(ig *kops.InstanceGroup) (string, error) {
|
||||
config, err := b.NodeUpConfigBuilder.BuildConfig(ig)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@ -65,7 +65,7 @@ func (b *BootstrapScript) kubeEnv(ig *kops.InstanceGroup) (string, error) {
|
|||
return string(data), nil
|
||||
}
|
||||
|
||||
func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[string]string, error) {
|
||||
func (b *BootstrapScriptBuilder) buildEnvironmentVariables(cluster *kops.Cluster) (map[string]string, error) {
|
||||
env := make(map[string]string)
|
||||
|
||||
if os.Getenv("GOSSIP_DNS_CONN_LIMIT") != "" {
|
||||
|
@ -135,7 +135,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
|
|||
|
||||
// ResourceNodeUp generates and returns a nodeup (bootstrap) script from a
|
||||
// template file, substituting in specific env vars & cluster spec configuration
|
||||
func (b *BootstrapScript) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.Cluster) (*fi.ResourceHolder, error) {
|
||||
func (b *BootstrapScriptBuilder) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.Cluster) (*fi.ResourceHolder, error) {
|
||||
// Bastions can have AdditionalUserData, but if there isn't any skip this part
|
||||
if ig.IsBastion() && len(ig.Spec.AdditionalUserData) == 0 {
|
||||
templateResource, err := NewTemplateResource("nodeup", "", nil, nil)
|
||||
|
@ -299,7 +299,7 @@ func (b *BootstrapScript) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.C
|
|||
|
||||
// getRelevantHooks returns a list of hooks to be applied to the instance group,
|
||||
// with the Manifest and ExecContainer Commands fingerprinted to reduce size
|
||||
func (b *BootstrapScript) getRelevantHooks(allHooks []kops.HookSpec, role kops.InstanceGroupRole) ([]kops.HookSpec, error) {
|
||||
func (b *BootstrapScriptBuilder) getRelevantHooks(allHooks []kops.HookSpec, role kops.InstanceGroupRole) ([]kops.HookSpec, error) {
|
||||
relevantHooks := []kops.HookSpec{}
|
||||
for _, hook := range allHooks {
|
||||
if len(hook.Roles) == 0 {
|
||||
|
@ -349,7 +349,7 @@ func (b *BootstrapScript) getRelevantHooks(allHooks []kops.HookSpec, role kops.I
|
|||
|
||||
// getRelevantFileAssets returns a list of file assets to be applied to the
|
||||
// instance group, with the Content fingerprinted to reduce size
|
||||
func (b *BootstrapScript) getRelevantFileAssets(allFileAssets []kops.FileAssetSpec, role kops.InstanceGroupRole) ([]kops.FileAssetSpec, error) {
|
||||
func (b *BootstrapScriptBuilder) getRelevantFileAssets(allFileAssets []kops.FileAssetSpec, role kops.InstanceGroupRole) ([]kops.FileAssetSpec, error) {
|
||||
relevantFileAssets := []kops.FileAssetSpec{}
|
||||
for _, fileAsset := range allFileAssets {
|
||||
if len(fileAsset.Roles) == 0 {
|
||||
|
@ -384,7 +384,7 @@ func (b *BootstrapScript) getRelevantFileAssets(allFileAssets []kops.FileAssetSp
|
|||
}
|
||||
|
||||
// computeFingerprint takes a string and returns a base64 encoded fingerprint
|
||||
func (b *BootstrapScript) computeFingerprint(content string) (string, error) {
|
||||
func (b *BootstrapScriptBuilder) computeFingerprint(content string) (string, error) {
|
||||
hasher := sha1.New()
|
||||
|
||||
if _, err := hasher.Write([]byte(content)); err != nil {
|
||||
|
@ -394,7 +394,7 @@ func (b *BootstrapScript) computeFingerprint(content string) (string, error) {
|
|||
return base64.StdEncoding.EncodeToString(hasher.Sum(nil)), nil
|
||||
}
|
||||
|
||||
func (b *BootstrapScript) createProxyEnv(ps *kops.EgressProxySpec) string {
|
||||
func (b *BootstrapScriptBuilder) createProxyEnv(ps *kops.EgressProxySpec) string {
|
||||
var buffer bytes.Buffer
|
||||
|
||||
if ps != nil && ps.HTTPProxy.Host != "" {
|
||||
|
|
|
@ -27,7 +27,7 @@ import (
|
|||
)
|
||||
|
||||
func Test_ProxyFunc(t *testing.T) {
|
||||
b := &BootstrapScript{}
|
||||
b := &BootstrapScriptBuilder{}
|
||||
ps := &kops.EgressProxySpec{
|
||||
HTTPProxy: kops.HTTPProxy{
|
||||
Host: "example.com",
|
||||
|
@ -122,7 +122,7 @@ func TestBootstrapUserData(t *testing.T) {
|
|||
cluster := makeTestCluster(x.HookSpecRoles, x.FileAssetSpecRoles)
|
||||
group := makeTestInstanceGroup(x.Role, x.HookSpecRoles, x.FileAssetSpecRoles)
|
||||
|
||||
bs := &BootstrapScript{
|
||||
bs := &BootstrapScriptBuilder{
|
||||
NodeUpConfigBuilder: &nodeupConfigBuilder{cluster: cluster},
|
||||
NodeUpSource: map[architectures.Architecture]string{
|
||||
architectures.ArchitectureAmd64: "NUSourceAmd64",
|
||||
|
|
|
@ -30,8 +30,8 @@ import (
|
|||
type DropletBuilder struct {
|
||||
*DOModelContext
|
||||
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &DropletBuilder{}
|
||||
|
@ -78,7 +78,7 @@ func (d *DropletBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
droplet.Tags = append(droplet.Tags, do.TagKubernetesClusterInstanceGroupPrefix+":"+"nodes")
|
||||
}
|
||||
|
||||
userData, err := d.BootstrapScript.ResourceNodeUp(ig, d.Cluster)
|
||||
userData, err := d.BootstrapScriptBuilder.ResourceNodeUp(ig, d.Cluster)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -40,8 +40,8 @@ const (
|
|||
type AutoscalingGroupModelBuilder struct {
|
||||
*GCEModelContext
|
||||
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &AutoscalingGroupModelBuilder{}
|
||||
|
@ -50,7 +50,7 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
for _, ig := range b.InstanceGroups {
|
||||
name := b.SafeObjectName(ig.ObjectMeta.Name)
|
||||
|
||||
startupScript, err := b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
|
||||
startupScript, err := b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -33,8 +33,8 @@ import (
|
|||
// ServerGroupModelBuilder configures server group objects
|
||||
type ServerGroupModelBuilder struct {
|
||||
*OpenstackModelContext
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &ServerGroupModelBuilder{}
|
||||
|
@ -76,7 +76,7 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
|
|||
igMeta[openstack.BOOT_VOLUME_SIZE] = v
|
||||
}
|
||||
|
||||
startupScript, err := b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
|
||||
startupScript, err := b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not create startup script for instance group %s: %v", ig.Name, err)
|
||||
}
|
||||
|
|
|
@ -2712,7 +2712,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
for _, testCase := range tests {
|
||||
t.Run(testCase.desc, func(t *testing.T) {
|
||||
clusterLifecycle := fi.LifecycleSync
|
||||
bootstrapScriptBuilder := &model.BootstrapScript{
|
||||
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
|
||||
NodeUpConfigBuilder: &nodeupConfigBuilder{},
|
||||
NodeUpSource: map[architectures.Architecture]string{
|
||||
architectures.ArchitectureAmd64: "source-amd64",
|
||||
|
@ -2798,7 +2798,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup, clusterLifecycle fi.Lifecycle, bootstrapScript *model.BootstrapScript) *ServerGroupModelBuilder {
|
||||
func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup, clusterLifecycle fi.Lifecycle, bootstrapScriptBuilder *model.BootstrapScriptBuilder) *ServerGroupModelBuilder {
|
||||
sshPublicKey := []byte("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF2sghZsClUBXJB4mBMIw8rb0hJWjg1Vz4eUeXwYmTdi92Gf1zNc5xISSip9Y+PWX/jJokPB7tgPnMD/2JOAKhG1bi4ZqB15pYRmbbBekVpM4o4E0dx+czbqjiAm6wlccTrINK5LYenbucAAQt19eH+D0gJwzYUK9SYz1hWnlGS+qurt2bz7rrsG73lN8E2eiNvGtIXqv3GabW/Hea3acOBgCUJQWUDTRu0OmmwxzKbFN/UpNKeRaHlCqwZWjVAsmqA8TX8LIocq7Np7MmIBwt7EpEeZJxThcmC8DEJs9ClAjD+jlLIvMPXKC3JWCPgwCLGxHjy7ckSGFCSzbyPduh")
|
||||
|
||||
modelContext := &model.KopsModelContext{
|
||||
|
@ -2811,9 +2811,9 @@ func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.Insta
|
|||
}
|
||||
|
||||
return &ServerGroupModelBuilder{
|
||||
OpenstackModelContext: openstackModelContext,
|
||||
BootstrapScript: bootstrapScript,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
OpenstackModelContext: openstackModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3194,7 +3194,7 @@ func (n *nodeupConfigBuilder) BuildConfig(ig *kops.InstanceGroup) (*nodeup.Confi
|
|||
}
|
||||
|
||||
func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGroup) *fi.ResourceHolder {
|
||||
bootstrapScriptBuilder := &model.BootstrapScript{
|
||||
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
|
||||
NodeUpConfigBuilder: &nodeupConfigBuilder{},
|
||||
NodeUpSource: map[architectures.Architecture]string{
|
||||
architectures.ArchitectureAmd64: "source-amd64",
|
||||
|
|
|
@ -112,9 +112,9 @@ const (
|
|||
type InstanceGroupModelBuilder struct {
|
||||
*model.KopsModelContext
|
||||
|
||||
BootstrapScript *model.BootstrapScript
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
BootstrapScriptBuilder *model.BootstrapScriptBuilder
|
||||
Lifecycle *fi.Lifecycle
|
||||
SecurityLifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.ModelBuilder = &InstanceGroupModelBuilder{}
|
||||
|
@ -267,7 +267,7 @@ func (b *InstanceGroupModelBuilder) buildElastigroup(c *fi.ModelBuilderContext,
|
|||
}
|
||||
|
||||
// User data.
|
||||
group.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
|
||||
group.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error building user data: %v", err)
|
||||
}
|
||||
|
@ -422,7 +422,7 @@ func (b *InstanceGroupModelBuilder) buildOcean(c *fi.ModelBuilderContext, igs ..
|
|||
ocean.Monitoring = ig.Spec.DetailedInstanceMonitoring
|
||||
|
||||
// User data.
|
||||
ocean.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
|
||||
ocean.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error building user data: %v", err)
|
||||
}
|
||||
|
@ -512,7 +512,7 @@ func (b *InstanceGroupModelBuilder) buildLaunchSpec(c *fi.ModelBuilderContext,
|
|||
ocean.MaxSize = fi.Int64(fi.Int64Value(ocean.MaxSize) + fi.Int64Value(maxSize))
|
||||
|
||||
// User data.
|
||||
launchSpec.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
|
||||
launchSpec.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error building user data: %v", err)
|
||||
}
|
||||
|
|
|
@ -701,7 +701,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
bootstrapScriptBuilder := &model.BootstrapScript{
|
||||
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
|
||||
NodeUpConfigBuilder: configBuilder,
|
||||
NodeUpSource: c.NodeUpSource,
|
||||
NodeUpSourceHash: c.NodeUpHash,
|
||||
|
@ -714,18 +714,18 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
awsModelBuilder := &awsmodel.AutoscalingGroupModelBuilder{
|
||||
AWSModelContext: awsModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
SecurityLifecycle: &securityLifecycle,
|
||||
AWSModelContext: awsModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
SecurityLifecycle: &securityLifecycle,
|
||||
}
|
||||
|
||||
if featureflag.Spotinst.Enabled() {
|
||||
l.Builders = append(l.Builders, &spotinstmodel.InstanceGroupModelBuilder{
|
||||
KopsModelContext: modelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
SecurityLifecycle: &securityLifecycle,
|
||||
KopsModelContext: modelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
SecurityLifecycle: &securityLifecycle,
|
||||
})
|
||||
|
||||
if featureflag.SpotinstHybrid.Enabled() {
|
||||
|
@ -741,9 +741,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
l.Builders = append(l.Builders, &domodel.DropletBuilder{
|
||||
DOModelContext: doModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
DOModelContext: doModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
})
|
||||
case kops.CloudProviderGCE:
|
||||
{
|
||||
|
@ -752,9 +752,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
l.Builders = append(l.Builders, &gcemodel.AutoscalingGroupModelBuilder{
|
||||
GCEModelContext: gceModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
GCEModelContext: gceModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -765,9 +765,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
l.Builders = append(l.Builders, &alimodel.ScalingGroupModelBuilder{
|
||||
ALIModelContext: aliModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
ALIModelContext: aliModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -777,9 +777,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
l.Builders = append(l.Builders, &openstackmodel.ServerGroupModelBuilder{
|
||||
OpenstackModelContext: openstackModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
OpenstackModelContext: openstackModelContext,
|
||||
BootstrapScriptBuilder: bootstrapScriptBuilder,
|
||||
Lifecycle: &clusterLifecycle,
|
||||
})
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue