kubeEnv returns the boot config for the instance group
(cluster *kops.Cluster, ig *kops.InstanceGroup, c *fi.CloudupContext)
| 79 | |
| 80 | // kubeEnv returns the boot config for the instance group |
| 81 | func (b *BootstrapScript) kubeEnv(cluster *kops.Cluster, ig *kops.InstanceGroup, c *fi.CloudupContext) (*nodeup.BootConfig, error) { |
| 82 | wellKnownAddresses := make(WellKnownAddresses) |
| 83 | |
| 84 | for _, hasAddress := range b.hasAddressTasks { |
| 85 | addresses, err := hasAddress.FindAddresses(c) |
| 86 | if err != nil { |
| 87 | return nil, fmt.Errorf("error finding address for %v: %v", hasAddress, err) |
| 88 | } |
| 89 | if len(addresses) == 0 { |
| 90 | // Such tasks won't have an address in dry-run mode, until the resource is created |
| 91 | klog.V(2).Infof("Task did not have an address: %v", hasAddress) |
| 92 | continue |
| 93 | } |
| 94 | |
| 95 | klog.V(8).Infof("Resolved alternateNames %q for %q", addresses, hasAddress) |
| 96 | |
| 97 | for _, wellKnownService := range hasAddress.GetWellKnownServices() { |
| 98 | wellKnownAddresses[wellKnownService] = append(wellKnownAddresses[wellKnownService], addresses...) |
| 99 | } |
| 100 | } |
| 101 | |
| 102 | for k := range wellKnownAddresses { |
| 103 | sort.Strings(wellKnownAddresses[k]) |
| 104 | } |
| 105 | |
| 106 | keysets := make(map[string]*fi.Keyset) |
| 107 | for _, caTask := range b.caTasks { |
| 108 | name := *caTask.Name |
| 109 | keyset := caTask.Keyset() |
| 110 | if keyset == nil { |
| 111 | return nil, fmt.Errorf("failed to get keyset from %q", name) |
| 112 | } |
| 113 | keysets[name] = keyset |
| 114 | } |
| 115 | config, bootConfig, err := b.builder.NodeUpConfigBuilder.BuildConfig(ig, wellKnownAddresses, keysets) |
| 116 | if err != nil { |
| 117 | return nil, err |
| 118 | } |
| 119 | |
| 120 | configData, err := utils.YamlMarshal(config) |
| 121 | if err != nil { |
| 122 | return nil, fmt.Errorf("error converting nodeup config to yaml: %v", err) |
| 123 | } |
| 124 | sum256 := sha256.Sum256(configData) |
| 125 | bootConfig.NodeupConfigHash = base64.StdEncoding.EncodeToString(sum256[:]) |
| 126 | b.nodeupConfig.Resource = fi.NewBytesResource(configData) |
| 127 | |
| 128 | if ig.Spec.Manager == kops.InstanceManagerKarpenter { |
| 129 | assetBuilder := assets.NewAssetBuilder(vfs.NewVFSContext(), cluster.Spec.Assets, false) |
| 130 | nodeUpAssets := make(map[architectures.Architecture]*assets.MirroredAsset) |
| 131 | for _, arch := range architectures.GetSupported() { |
| 132 | asset, err := wellknownassets.NodeUpAsset(assetBuilder, arch) |
| 133 | if err != nil { |
| 134 | return nil, err |
| 135 | } |
| 136 | nodeUpAssets[arch] = asset |
| 137 | } |
| 138 |
no test coverage detected