Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit 9780a91

Browse files
authored
Merge pull request #51 from packethost/inject-secret
Remove PACKET_API_KEY fron cluster template
2 parents 198f83f + 47fb414 commit 9780a91

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

Makefile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,15 +204,16 @@ $(RELEASE_DIR) $(RELEASE_BASE):
204204
$(MANAGERLESS_DIR) $(MANAGERLESS_BASE):
205205
mkdir -p $@
206206

207-
.PHONY: release-clusterctl release-manifests release $(RELEASE_CLUSTERCTLYAML) $(RELEASE_MANIFEST)
208-
release: release-manifests release-clusterctl
207+
.PHONY: release-clusterctl release-manifests release $(RELEASE_CLUSTERCTLYAML) $(RELEASE_MANIFEST) $(RELEASE_METADATA) $(RELEASE_CLUSTER_TEMPLATE)
208+
release: release-manifests release-clusterctl release-cluster-template
209209
release-manifests: $(RELEASE_MANIFEST) $(RELEASE_METADATA) $(RELEASE_CLUSTER_TEMPLATE)
210210
$(RELEASE_MANIFEST): $(RELEASE_DIR) ## Builds the manifests to publish with a release
211211
kustomize build config/default > $@
212212

213213
$(RELEASE_METADATA): $(RELEASE_DIR) $(METADATA_TEMPLATE)
214214
cat $(METADATA_TEMPLATE) | sed 's/MAJOR/$(VERSION_MAJOR)/g' | sed 's/MINOR/$(VERSION_MINOR)/g' | sed 's/CONTRACT/$(VERSION_CONTRACT)/g' > $@
215215

216+
release-cluster-template: $(RELEASE_CLUSTER_TEMPLATE)
216217
$(RELEASE_CLUSTER_TEMPLATE): $(RELEASE_DIR)
217218
cp $(CLUSTER_TEMPLATE) $@
218219

@@ -223,15 +224,16 @@ $(RELEASE_CLUSTERCTLYAML): $(RELEASE_BASE)
223224
$(FULL_RELEASE_CLUSTERCTLYAML): $(RELEASE_DIR)
224225
cat $(CLUSTERCTL_TEMPLATE) | sed 's%URL%$(FULL_RELEASE_MANIFEST_URL)%g' > $@
225226

226-
.PHONY: managerless-clusterctl managerless-manifests managerless $(MANAGERLESS_CLUSTERCTLYAML) $(MANAGERLESS_MANIFEST)
227-
managerless: managerless-manifests managerless-clusterctl
227+
.PHONY: managerless-clusterctl managerless-manifests managerless $(MANAGERLESS_CLUSTERCTLYAML) $(MANAGERLESS_MANIFEST) $(MANAGERLESS_METADATA) $(MANAGERLESS_CLUSTER_TEMPLATE)
228+
managerless: managerless-manifests managerless-clusterctl managerless-cluster-template
228229
managerless-manifests: $(MANAGERLESS_MANIFEST) $(MANAGERLESS_METADATA)
229230
$(MANAGERLESS_MANIFEST): $(MANAGERLESS_DIR)
230231
kustomize build config/managerless > $@
231232

232233
$(MANAGERLESS_METADATA): $(MANAGERLESS_DIR) $(METADATA_TEMPLATE)
233234
cat $(METADATA_TEMPLATE) | sed 's/MAJOR/$(VERSION_MAJOR)/g' | sed 's/MINOR/$(VERSION_MINOR)/g' | sed 's/CONTRACT/$(VERSION_CONTRACT)/g' > $@
234235

236+
managerless-cluster-template: $(MANAGERLESS_CLUSTER_TEMPLATE)
235237
$(MANAGERLESS_CLUSTER_TEMPLATE): $(MANAGERLESS_DIR)
236238
cp $(CLUSTER_TEMPLATE) $@
237239

pkg/cloud/packet/client.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"strings"
7+
"text/template"
78

89
infrastructurev1alpha3 "github.com/packethost/cluster-api-provider-packet/api/v1alpha3"
910
"github.com/packethost/cluster-api-provider-packet/pkg/cloud/packet/scope"
@@ -46,12 +47,26 @@ func (p *PacketClient) GetDevice(deviceID string) (*packngo.Device, error) {
4647
}
4748

4849
func (p *PacketClient) NewDevice(hostname, project string, machineScope *scope.MachineScope, extraTags []string) (*packngo.Device, error) {
49-
userData, err := machineScope.GetRawBootstrapData()
50+
userDataRaw, err := machineScope.GetRawBootstrapData()
5051
if err != nil {
5152
return nil, errors.Wrap(err, "impossible to retrieve bootstrap data from secret")
5253
}
54+
userData := string(userDataRaw)
5355
tags := append(machineScope.PacketMachine.Spec.Tags, extraTags...)
5456
if machineScope.IsControlPlane() {
57+
// control plane machines should get the API key injected
58+
tmpl, err := template.New("control-plane-user-data").Parse(userData)
59+
if err != nil {
60+
return nil, fmt.Errorf("error parsing control-plane userdata template: %v", err)
61+
}
62+
stringWriter := &strings.Builder{}
63+
apiKeyStruct := map[string]interface{}{
64+
"apiKey": p.Client.APIKey,
65+
}
66+
if err := tmpl.Execute(stringWriter, apiKeyStruct); err != nil {
67+
return nil, fmt.Errorf("error executing control-plane userdata template: %v", err)
68+
}
69+
userData = stringWriter.String()
5570
tags = append(tags, infrastructurev1alpha3.MasterTag)
5671
} else {
5772
tags = append(tags, infrastructurev1alpha3.WorkerTag)
@@ -64,7 +79,7 @@ func (p *PacketClient) NewDevice(hostname, project string, machineScope *scope.M
6479
Plan: machineScope.PacketMachine.Spec.MachineType,
6580
OS: machineScope.PacketMachine.Spec.OS,
6681
Tags: tags,
67-
UserData: string(userData),
82+
UserData: userData,
6883
}
6984

7085
dev, _, err := p.Client.Devices.Create(serverCreateOpts)

templates/cluster-template.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ spec:
2020
- systemctl start docker
2121
postKubeadmCommands:
2222
- "kubectl apply --kubeconfig /etc/kubernetes/admin.conf -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml"
23-
- "kubectl --kubeconfig /etc/kubernetes/admin.conf create secret generic -n kube-system packet-cloud-config --from-literal=cloud-sa.json='{\"apiKey\": \"${PACKET_API_KEY}\",\"projectID\": \"${PROJECT_ID}\"}'"
23+
- "kubectl --kubeconfig /etc/kubernetes/admin.conf create secret generic -n kube-system packet-cloud-config --from-literal=cloud-sa.json='{\"apiKey\": \"{{ .apiKey }}\",\"projectID\": \"${PROJECT_ID}\"}'"
2424
- "kubectl apply --kubeconfig /etc/kubernetes/admin.conf -f https://raw.githubusercontent.com/packethost/packet-ccm/master/deploy/releases/v1.0.0/deployment.yaml"
2525
initConfiguration:
2626
nodeRegistration:

0 commit comments

Comments
 (0)