in projects/aws/image-builder/builder/artifacts.go [89:149]
func (b *BuildOptions) downloadEKSDArtifacts(outputPath, manifestUrl string) error {
releases := &eksDreleasev1.Release{}
manifestData, err := readFileFromURL(manifestUrl)
if err != nil {
return fmt.Errorf("failed to read manifest file from url: %v", err)
}
if err = k8syaml.Unmarshal(manifestData, releases); err != nil {
return err
}
var fullKubeVersion, eksDBaseUrl string
for _, component := range releases.Status.Components {
if component.Name == "kubernetes" {
fullKubeVersion = component.GitTag
log.Printf("Full Kube Version: %s\n", fullKubeVersion)
for _, asset := range component.Assets {
if asset.Name == fmt.Sprintf("bin/linux/%s/kube-apiserver.tar", b.Arch) {
apiServerUrl := asset.Archive.URI
eksDBaseUrl = strings.ReplaceAll(apiServerUrl, "/kube-apiserver.tar", "")
}
}
}
if component.Name == "etcd" || component.Name == "cni-plugins" {
for _, asset := range component.Assets {
if asset.Name == fmt.Sprintf("%s-linux-%s-%s.tar.gz", component.Name, b.Arch, component.GitTag) {
log.Printf("Downloading EKS-D Artifact: %s", component.Name)
if err = downloadArtifact(outputPath, asset.Archive.URI); err != nil {
return err
}
}
}
}
}
log.Printf("EKS-D Kubernetes Base Url: %s\n", eksDBaseUrl)
eksDKubeArtifacts := []string{
"kube-apiserver.tar",
"kube-scheduler.tar",
"kube-controller-manager.tar",
"kube-proxy.tar",
"pause.tar",
"coredns.tar",
"etcd.tar",
"kubeadm",
"kubelet",
"kubectl",
}
for _, artifact := range eksDKubeArtifacts {
artifactUrl, err := url.JoinPath(eksDBaseUrl, artifact)
if err != nil {
return fmt.Errorf("failed to construct url for artifact %s: %v", artifact, err)
}
log.Printf("Downloading EKS-D Kubernetes Artifact: %s\n", artifact)
if err := downloadArtifact(outputPath, artifactUrl); err != nil {
return err
}
}
return nil
}