mirror of https://github.com/kubernetes/kops.git
Merge pull request #16954 from justinsb/refactor_file_assets
refactor: build assets for kubernetes and nodeup explicitly
This commit is contained in:
commit
59e06d8a96
|
|
@ -35,10 +35,8 @@ import (
|
||||||
"k8s.io/kops/pkg/model"
|
"k8s.io/kops/pkg/model"
|
||||||
"k8s.io/kops/pkg/model/resources"
|
"k8s.io/kops/pkg/model/resources"
|
||||||
"k8s.io/kops/pkg/nodemodel"
|
"k8s.io/kops/pkg/nodemodel"
|
||||||
"k8s.io/kops/pkg/nodemodel/wellknownassets"
|
|
||||||
"k8s.io/kops/pkg/wellknownservices"
|
"k8s.io/kops/pkg/wellknownservices"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/util/pkg/architectures"
|
|
||||||
"k8s.io/kops/util/pkg/vfs"
|
"k8s.io/kops/util/pkg/vfs"
|
||||||
"k8s.io/utils/pointer"
|
"k8s.io/utils/pointer"
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
|
@ -211,17 +209,12 @@ func (r *KopsConfigReconciler) buildBootstrapData(ctx context.Context) ([]byte,
|
||||||
// encryptionConfigSecretHash = base64.URLEncoding.EncodeToString(hashBytes[:])
|
// encryptionConfigSecretHash = base64.URLEncoding.EncodeToString(hashBytes[:])
|
||||||
// }
|
// }
|
||||||
|
|
||||||
nodeUpAssets := make(map[architectures.Architecture]*assets.MirroredAsset)
|
nodeUpAssets, err := nodemodel.BuildNodeUpAssets(ctx, assetBuilder)
|
||||||
for _, arch := range architectures.GetSupported() {
|
|
||||||
asset, err := wellknownassets.NodeUpAsset(assetBuilder, arch)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
nodeUpAssets[arch] = asset
|
|
||||||
}
|
|
||||||
|
|
||||||
assets := make(map[architectures.Architecture][]*assets.MirroredAsset)
|
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, encryptionConfigSecretHash)
|
||||||
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, assets, encryptionConfigSecretHash)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -267,7 +260,7 @@ func (r *KopsConfigReconciler) buildBootstrapData(ctx context.Context) ([]byte,
|
||||||
// b.nodeupConfig.Resource = fi.NewBytesResource(configData)
|
// b.nodeupConfig.Resource = fi.NewBytesResource(configData)
|
||||||
|
|
||||||
var nodeupScript resources.NodeUpScript
|
var nodeupScript resources.NodeUpScript
|
||||||
nodeupScript.NodeUpAssets = nodeUpAssets
|
nodeupScript.NodeUpAssets = nodeUpAssets.NodeUpAssets
|
||||||
nodeupScript.BootConfig = bootConfig
|
nodeupScript.BootConfig = bootConfig
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -752,14 +752,13 @@ func (b *ConfigBuilder) GetBootstrapData(ctx context.Context) (*BootstrapData, e
|
||||||
// }
|
// }
|
||||||
// hashBytes := sha256.Sum256(secret.Data)
|
// hashBytes := sha256.Sum256(secret.Data)
|
||||||
// encryptionConfigSecretHash = base64.URLEncoding.EncodeToString(hashBytes[:])
|
// encryptionConfigSecretHash = base64.URLEncoding.EncodeToString(hashBytes[:])
|
||||||
// }
|
|
||||||
|
|
||||||
fileAssets := &nodemodel.FileAssets{Cluster: cluster}
|
nodeUpAssets, err := nodemodel.BuildNodeUpAssets(ctx, assetBuilder)
|
||||||
if err := fileAssets.AddFileAssets(assetBuilder); err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, fileAssets.Assets, encryptionConfigSecretHash)
|
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, encryptionConfigSecretHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -791,7 +790,7 @@ func (b *ConfigBuilder) GetBootstrapData(ctx context.Context) (*BootstrapData, e
|
||||||
}
|
}
|
||||||
|
|
||||||
var nodeupScript resources.NodeUpScript
|
var nodeupScript resources.NodeUpScript
|
||||||
nodeupScript.NodeUpAssets = fileAssets.NodeUpAssets
|
nodeupScript.NodeUpAssets = nodeUpAssets.NodeUpAssets
|
||||||
nodeupScript.BootConfig = bootConfig
|
nodeupScript.BootConfig = bootConfig
|
||||||
|
|
||||||
nodeupScript.WithEnvironmentVariables(cluster, ig)
|
nodeupScript.WithEnvironmentVariables(cluster, ig)
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package nodemodel
|
package nodemodel
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
|
|
@ -32,70 +33,62 @@ import (
|
||||||
"k8s.io/kops/util/pkg/hashing"
|
"k8s.io/kops/util/pkg/hashing"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FileAssets struct {
|
// KubernetesFileAssets are the assets for downloading Kubernetes binaries
|
||||||
// Assets is a list of sources for files (primarily when not using everything containerized)
|
type KubernetesFileAssets struct {
|
||||||
// Formats:
|
// KubernetesFileAssets are the assets for downloading Kubernetes binaries
|
||||||
// raw url: http://... or https://...
|
KubernetesFileAssets map[architectures.Architecture][]*assets.MirroredAsset
|
||||||
// url with hash: <hex>@http://... or <hex>@https://...
|
|
||||||
Assets map[architectures.Architecture][]*assets.MirroredAsset
|
|
||||||
|
|
||||||
// NodeUpAssets are the assets for downloading nodeup
|
|
||||||
NodeUpAssets map[architectures.Architecture]*assets.MirroredAsset
|
|
||||||
|
|
||||||
Cluster *kops.Cluster
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddFileAssets adds the file assets within the assetBuilder
|
// BuildKubernetesFileAssets returns the Kubernetes file assets for the given cluster
|
||||||
func (c *FileAssets) AddFileAssets(assetBuilder *assets.AssetBuilder) error {
|
func BuildKubernetesFileAssets(cluster *kops.Cluster, assetBuilder *assets.AssetBuilder) (*KubernetesFileAssets, error) {
|
||||||
var baseURL string
|
var baseURL string
|
||||||
if components.IsBaseURL(c.Cluster.Spec.KubernetesVersion) {
|
if components.IsBaseURL(cluster.Spec.KubernetesVersion) {
|
||||||
baseURL = c.Cluster.Spec.KubernetesVersion
|
baseURL = cluster.Spec.KubernetesVersion
|
||||||
} else {
|
} else {
|
||||||
baseURL = "https://dl.k8s.io/release/v" + c.Cluster.Spec.KubernetesVersion
|
baseURL = "https://dl.k8s.io/release/v" + cluster.Spec.KubernetesVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Assets = make(map[architectures.Architecture][]*assets.MirroredAsset)
|
kubernetesAssets := make(map[architectures.Architecture][]*assets.MirroredAsset)
|
||||||
c.NodeUpAssets = make(map[architectures.Architecture]*assets.MirroredAsset)
|
|
||||||
for _, arch := range architectures.GetSupported() {
|
for _, arch := range architectures.GetSupported() {
|
||||||
c.Assets[arch] = []*assets.MirroredAsset{}
|
kubernetesAssets[arch] = []*assets.MirroredAsset{}
|
||||||
|
|
||||||
k8sAssetsNames := []string{
|
k8sAssetsNames := []string{
|
||||||
fmt.Sprintf("/bin/linux/%s/kubelet", arch),
|
fmt.Sprintf("/bin/linux/%s/kubelet", arch),
|
||||||
fmt.Sprintf("/bin/linux/%s/kubectl", arch),
|
fmt.Sprintf("/bin/linux/%s/kubectl", arch),
|
||||||
}
|
}
|
||||||
|
|
||||||
if needsMounterAsset(c.Cluster) {
|
if needsMounterAsset(cluster) {
|
||||||
k8sAssetsNames = append(k8sAssetsNames, fmt.Sprintf("/bin/linux/%s/mounter", arch))
|
k8sAssetsNames = append(k8sAssetsNames, fmt.Sprintf("/bin/linux/%s/mounter", arch))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, an := range k8sAssetsNames {
|
for _, an := range k8sAssetsNames {
|
||||||
k, err := url.Parse(baseURL)
|
k, err := url.Parse(baseURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
k.Path = path.Join(k.Path, an)
|
k.Path = path.Join(k.Path, an)
|
||||||
|
|
||||||
asset, err := assetBuilder.RemapFile(k, nil)
|
asset, err := assetBuilder.RemapFile(k, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(asset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(asset))
|
||||||
}
|
}
|
||||||
|
|
||||||
kubernetesVersion, _ := util.ParseKubernetesVersion(c.Cluster.Spec.KubernetesVersion)
|
kubernetesVersion, _ := util.ParseKubernetesVersion(cluster.Spec.KubernetesVersion)
|
||||||
|
|
||||||
cloudProvider := c.Cluster.GetCloudProvider()
|
cloudProvider := cluster.GetCloudProvider()
|
||||||
if ok := model.UseExternalKubeletCredentialProvider(*kubernetesVersion, cloudProvider); ok {
|
if ok := model.UseExternalKubeletCredentialProvider(*kubernetesVersion, cloudProvider); ok {
|
||||||
switch cloudProvider {
|
switch cloudProvider {
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
binaryLocation := c.Cluster.Spec.CloudProvider.GCE.BinariesLocation
|
binaryLocation := cluster.Spec.CloudProvider.GCE.BinariesLocation
|
||||||
if binaryLocation == nil {
|
if binaryLocation == nil {
|
||||||
binaryLocation = fi.PtrTo("https://storage.googleapis.com/k8s-staging-cloud-provider-gcp/auth-provider-gcp")
|
binaryLocation = fi.PtrTo("https://storage.googleapis.com/k8s-staging-cloud-provider-gcp/auth-provider-gcp")
|
||||||
}
|
}
|
||||||
// VALID FOR 60 DAYS WE REALLY NEED TO MERGE https://github.com/kubernetes/cloud-provider-gcp/pull/601 and CUT A RELEASE
|
// VALID FOR 60 DAYS WE REALLY NEED TO MERGE https://github.com/kubernetes/cloud-provider-gcp/pull/601 and CUT A RELEASE
|
||||||
k, err := url.Parse(fmt.Sprintf("%s/linux-%s/v20231005-providersv0.27.1-65-g8fbe8d27", *binaryLocation, arch))
|
k, err := url.Parse(fmt.Sprintf("%s/linux-%s/v20231005-providersv0.27.1-65-g8fbe8d27", *binaryLocation, arch))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Move these hashes to assetdata
|
// TODO: Move these hashes to assetdata
|
||||||
|
|
@ -105,81 +98,98 @@ func (c *FileAssets) AddFileAssets(assetBuilder *assets.AssetBuilder) error {
|
||||||
}
|
}
|
||||||
hash, err := hashing.FromString(hashes[arch])
|
hash, err := hashing.FromString(hashes[arch])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to parse auth-provider-gcp binary asset hash %q: %v", hashes[arch], err)
|
return nil, fmt.Errorf("unable to parse auth-provider-gcp binary asset hash %q: %v", hashes[arch], err)
|
||||||
}
|
}
|
||||||
asset, err := assetBuilder.RemapFile(k, hash)
|
asset, err := assetBuilder.RemapFile(k, hash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(asset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(asset))
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
binaryLocation := c.Cluster.Spec.CloudProvider.AWS.BinariesLocation
|
binaryLocation := cluster.Spec.CloudProvider.AWS.BinariesLocation
|
||||||
if binaryLocation == nil {
|
if binaryLocation == nil {
|
||||||
binaryLocation = fi.PtrTo("https://artifacts.k8s.io/binaries/cloud-provider-aws/v1.27.1")
|
binaryLocation = fi.PtrTo("https://artifacts.k8s.io/binaries/cloud-provider-aws/v1.27.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
u, err := url.Parse(fmt.Sprintf("%s/linux/%s/ecr-credential-provider-linux-%s", *binaryLocation, arch, arch))
|
u, err := url.Parse(fmt.Sprintf("%s/linux/%s/ecr-credential-provider-linux-%s", *binaryLocation, arch, arch))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
asset, err := assetBuilder.RemapFile(u, nil)
|
asset, err := assetBuilder.RemapFile(u, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(asset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(asset))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
cniAsset, err := wellknownassets.FindCNIAssets(c.Cluster, assetBuilder, arch)
|
cniAsset, err := wellknownassets.FindCNIAssets(cluster, assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(cniAsset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(cniAsset))
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Cluster.Spec.Containerd == nil || !c.Cluster.Spec.Containerd.SkipInstall {
|
if cluster.Spec.Containerd == nil || !cluster.Spec.Containerd.SkipInstall {
|
||||||
containerdAsset, err := wellknownassets.FindContainerdAsset(c.Cluster, assetBuilder, arch)
|
containerdAsset, err := wellknownassets.FindContainerdAsset(cluster, assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if containerdAsset != nil {
|
if containerdAsset != nil {
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(containerdAsset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(containerdAsset))
|
||||||
}
|
}
|
||||||
|
|
||||||
runcAsset, err := wellknownassets.FindRuncAsset(c.Cluster, assetBuilder, arch)
|
runcAsset, err := wellknownassets.FindRuncAsset(cluster, assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if runcAsset != nil {
|
if runcAsset != nil {
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(runcAsset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(runcAsset))
|
||||||
}
|
}
|
||||||
nerdctlAsset, err := wellknownassets.FindNerdctlAsset(c.Cluster, assetBuilder, arch)
|
nerdctlAsset, err := wellknownassets.FindNerdctlAsset(cluster, assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if nerdctlAsset != nil {
|
if nerdctlAsset != nil {
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(nerdctlAsset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(nerdctlAsset))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
crictlAsset, err := wellknownassets.FindCrictlAsset(c.Cluster, assetBuilder, arch)
|
crictlAsset, err := wellknownassets.FindCrictlAsset(cluster, assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if crictlAsset != nil {
|
if crictlAsset != nil {
|
||||||
c.Assets[arch] = append(c.Assets[arch], assets.BuildMirroredAsset(crictlAsset))
|
kubernetesAssets[arch] = append(kubernetesAssets[arch], assets.BuildMirroredAsset(crictlAsset))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return &KubernetesFileAssets{
|
||||||
|
KubernetesFileAssets: kubernetesAssets,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NodeUpAssets are the assets for downloading nodeup
|
||||||
|
type NodeUpAssets struct {
|
||||||
|
// NodeUpAssets are the assets for downloading nodeup
|
||||||
|
NodeUpAssets map[architectures.Architecture]*assets.MirroredAsset
|
||||||
|
}
|
||||||
|
|
||||||
|
func BuildNodeUpAssets(ctx context.Context, assetBuilder *assets.AssetBuilder) (*NodeUpAssets, error) {
|
||||||
|
nodeUpAssets := make(map[architectures.Architecture]*assets.MirroredAsset)
|
||||||
|
for _, arch := range architectures.GetSupported() {
|
||||||
asset, err := wellknownassets.NodeUpAsset(assetBuilder, arch)
|
asset, err := wellknownassets.NodeUpAsset(assetBuilder, arch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
c.NodeUpAssets[arch] = asset
|
nodeUpAssets[arch] = asset
|
||||||
}
|
}
|
||||||
|
return &NodeUpAssets{
|
||||||
return nil
|
NodeUpAssets: nodeUpAssets,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// needsMounterAsset checks if we need the mounter program
|
// needsMounterAsset checks if we need the mounter program
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type nodeUpConfigBuilder struct {
|
type nodeUpConfigBuilder struct {
|
||||||
// Assets is a list of sources for files (primarily when not using everything containerized)
|
|
||||||
// Formats:
|
|
||||||
// raw url: http://... or https://...
|
|
||||||
// url with hash: <hex>@http://... or <hex>@https://...
|
|
||||||
assets map[architectures.Architecture][]*assets.MirroredAsset
|
|
||||||
|
|
||||||
assetBuilder *assets.AssetBuilder
|
assetBuilder *assets.AssetBuilder
|
||||||
channels []string
|
channels []string
|
||||||
configBase vfs.Path
|
configBase vfs.Path
|
||||||
|
|
@ -59,7 +53,7 @@ type nodeUpConfigBuilder struct {
|
||||||
encryptionConfigSecretHash string
|
encryptionConfigSecretHash string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNodeUpConfigBuilder(cluster *kops.Cluster, assetBuilder *assets.AssetBuilder, nodeAssets map[architectures.Architecture][]*assets.MirroredAsset, encryptionConfigSecretHash string) (model.NodeUpConfigBuilder, error) {
|
func NewNodeUpConfigBuilder(cluster *kops.Cluster, assetBuilder *assets.AssetBuilder, encryptionConfigSecretHash string) (model.NodeUpConfigBuilder, error) {
|
||||||
configBase, err := vfs.Context.BuildVfsPath(cluster.Spec.ConfigStore.Base)
|
configBase, err := vfs.Context.BuildVfsPath(cluster.Spec.ConfigStore.Base)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error parsing configStore.base %q: %v", cluster.Spec.ConfigStore.Base, err)
|
return nil, fmt.Errorf("error parsing configStore.base %q: %v", cluster.Spec.ConfigStore.Base, err)
|
||||||
|
|
@ -194,7 +188,6 @@ func NewNodeUpConfigBuilder(cluster *kops.Cluster, assetBuilder *assets.AssetBui
|
||||||
|
|
||||||
configBuilder := nodeUpConfigBuilder{
|
configBuilder := nodeUpConfigBuilder{
|
||||||
assetBuilder: assetBuilder,
|
assetBuilder: assetBuilder,
|
||||||
assets: nodeAssets,
|
|
||||||
channels: channels,
|
channels: channels,
|
||||||
configBase: configBase,
|
configBase: configBase,
|
||||||
cluster: cluster,
|
cluster: cluster,
|
||||||
|
|
@ -227,10 +220,14 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, wellKnownAddre
|
||||||
|
|
||||||
config, bootConfig := nodeup.NewConfig(cluster, ig)
|
config, bootConfig := nodeup.NewConfig(cluster, ig)
|
||||||
|
|
||||||
|
kubernetesAssets, err := BuildKubernetesFileAssets(cluster, n.assetBuilder)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
config.Assets = make(map[architectures.Architecture][]string)
|
config.Assets = make(map[architectures.Architecture][]string)
|
||||||
for _, arch := range architectures.GetSupported() {
|
for _, arch := range architectures.GetSupported() {
|
||||||
config.Assets[arch] = []string{}
|
config.Assets[arch] = []string{}
|
||||||
for _, a := range n.assets[arch] {
|
for _, a := range kubernetesAssets.KubernetesFileAssets[arch] {
|
||||||
config.Assets[arch] = append(config.Assets[arch], a.CompactString())
|
config.Assets[arch] = append(config.Assets[arch], a.CompactString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -385,11 +385,6 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) (*ApplyResults, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileAssets := &nodemodel.FileAssets{Cluster: cluster}
|
|
||||||
if err := fileAssets.AddFileAssets(assetBuilder); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
project := ""
|
project := ""
|
||||||
scwZone := ""
|
scwZone := ""
|
||||||
|
|
||||||
|
|
@ -513,7 +508,11 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) (*ApplyResults, error) {
|
||||||
cloud: cloud,
|
cloud: cloud,
|
||||||
}
|
}
|
||||||
|
|
||||||
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, fileAssets.Assets, encryptionConfigSecretHash)
|
nodeUpAssets, err := nodemodel.BuildNodeUpAssets(ctx, assetBuilder)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
configBuilder, err := nodemodel.NewNodeUpConfigBuilder(cluster, assetBuilder, encryptionConfigSecretHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -521,7 +520,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) (*ApplyResults, error) {
|
||||||
KopsModelContext: modelContext,
|
KopsModelContext: modelContext,
|
||||||
Lifecycle: clusterLifecycle,
|
Lifecycle: clusterLifecycle,
|
||||||
NodeUpConfigBuilder: configBuilder,
|
NodeUpConfigBuilder: configBuilder,
|
||||||
NodeUpAssets: fileAssets.NodeUpAssets,
|
NodeUpAssets: nodeUpAssets.NodeUpAssets,
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue