Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -204,15 +204,16 @@ $(RELEASE_DIR) $(RELEASE_BASE):
$(MANAGERLESS_DIR) $(MANAGERLESS_BASE):
mkdir -p $@

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

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

release-cluster-template: $(RELEASE_CLUSTER_TEMPLATE)
$(RELEASE_CLUSTER_TEMPLATE): $(RELEASE_DIR)
cp $(CLUSTER_TEMPLATE) $@

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

.PHONY: managerless-clusterctl managerless-manifests managerless $(MANAGERLESS_CLUSTERCTLYAML) $(MANAGERLESS_MANIFEST)
managerless: managerless-manifests managerless-clusterctl
.PHONY: managerless-clusterctl managerless-manifests managerless $(MANAGERLESS_CLUSTERCTLYAML) $(MANAGERLESS_MANIFEST) $(MANAGERLESS_METADATA) $(MANAGERLESS_CLUSTER_TEMPLATE)
managerless: managerless-manifests managerless-clusterctl managerless-cluster-template
managerless-manifests: $(MANAGERLESS_MANIFEST) $(MANAGERLESS_METADATA)
$(MANAGERLESS_MANIFEST): $(MANAGERLESS_DIR)
kustomize build config/managerless > $@

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

managerless-cluster-template: $(MANAGERLESS_CLUSTER_TEMPLATE)
$(MANAGERLESS_CLUSTER_TEMPLATE): $(MANAGERLESS_DIR)
cp $(CLUSTER_TEMPLATE) $@

Expand Down
19 changes: 17 additions & 2 deletions pkg/cloud/packet/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"os"
"strings"
"text/template"

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

func (p *PacketClient) NewDevice(hostname, project string, machineScope *scope.MachineScope, extraTags []string) (*packngo.Device, error) {
userData, err := machineScope.GetRawBootstrapData()
userDataRaw, err := machineScope.GetRawBootstrapData()
if err != nil {
return nil, errors.Wrap(err, "impossible to retrieve bootstrap data from secret")
}
userData := string(userDataRaw)
tags := append(machineScope.PacketMachine.Spec.Tags, extraTags...)
if machineScope.IsControlPlane() {
// control plane machines should get the API key injected
tmpl, err := template.New("control-plane-user-data").Parse(userData)
if err != nil {
return nil, fmt.Errorf("error parsing control-plane userdata template: %v", err)
}
stringWriter := &strings.Builder{}
apiKeyStruct := map[string]interface{}{
"apiKey": p.Client.APIKey,
}
if err := tmpl.Execute(stringWriter, apiKeyStruct); err != nil {
return nil, fmt.Errorf("error executing control-plane userdata template: %v", err)
}
userData = stringWriter.String()
tags = append(tags, infrastructurev1alpha3.MasterTag)
} else {
tags = append(tags, infrastructurev1alpha3.WorkerTag)
Expand All @@ -64,7 +79,7 @@ func (p *PacketClient) NewDevice(hostname, project string, machineScope *scope.M
Plan: machineScope.PacketMachine.Spec.MachineType,
OS: machineScope.PacketMachine.Spec.OS,
Tags: tags,
UserData: string(userData),
UserData: userData,
}

dev, _, err := p.Client.Devices.Create(serverCreateOpts)
Expand Down
2 changes: 1 addition & 1 deletion templates/cluster-template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ spec:
- systemctl start docker
postKubeadmCommands:
- "kubectl apply --kubeconfig /etc/kubernetes/admin.conf -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml"
- "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}\"}'"
- "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}\"}'"
- "kubectl apply --kubeconfig /etc/kubernetes/admin.conf -f https://raw.githubusercontent.com/packethost/packet-ccm/master/deploy/releases/v1.0.0/deployment.yaml"
initConfiguration:
nodeRegistration:
Expand Down