MCPcopy
hub / github.com/kubernetes/kops / kubeEnv

Method kubeEnv

pkg/model/bootstrapscript.go:81–163  ·  view source on GitHub ↗

kubeEnv returns the boot config for the instance group

(cluster *kops.Cluster, ig *kops.InstanceGroup, c *fi.CloudupContext)

Source from the content-addressed store, hash-verified

79
80// kubeEnv returns the boot config for the instance group
81func (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

Callers 1

RunMethod · 0.95

Calls 15

WithProxyEnvMethod · 0.95
WithSysctlsMethod · 0.95
BuildMethod · 0.95
YamlMarshalFunction · 0.92
NewBytesResourceFunction · 0.92
NewAssetBuilderFunction · 0.92
NewVFSContextFunction · 0.92
GetSupportedFunction · 0.92
NodeUpAssetFunction · 0.92
ValueOfFunction · 0.92
ResourceAsBytesFunction · 0.92

Tested by

no test coverage detected