Skip to content

Commit ad480ac

Browse files
authored
fix: support registry override for dev deploy (yolo) (#3064)
Signed-off-by: Micah Nagel <[email protected]>
1 parent a190e82 commit ad480ac

File tree

7 files changed

+64
-4
lines changed

7 files changed

+64
-4
lines changed

src/cmd/dev.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import (
3232

3333
var extractPath string
3434

35+
var defaultRegistry = fmt.Sprintf("%s:%d", helpers.IPV4Localhost, types.ZarfInClusterContainerRegistryNodePort)
36+
3537
var devCmd = &cobra.Command{
3638
Use: "dev",
3739
Aliases: []string{"prepare", "prep"},
@@ -349,8 +351,7 @@ func init() {
349351
// skip searching cosign artifacts in find images
350352
devFindImagesCmd.Flags().BoolVar(&pkgConfig.FindImagesOpts.SkipCosign, "skip-cosign", false, lang.CmdDevFlagFindImagesSkipCosign)
351353

352-
defaultRegistry := fmt.Sprintf("%s:%d", helpers.IPV4Localhost, types.ZarfInClusterContainerRegistryNodePort)
353-
devFindImagesCmd.Flags().StringVar(&pkgConfig.FindImagesOpts.RegistryURL, "registry-url", defaultRegistry, lang.CmdDevFlagFindImagesRegistry)
354+
devFindImagesCmd.Flags().StringVar(&pkgConfig.FindImagesOpts.RegistryURL, "registry-url", defaultRegistry, lang.CmdDevFlagRegistry)
354355

355356
devLintCmd.Flags().StringToStringVar(&pkgConfig.CreateOpts.SetVariables, "set", v.GetStringMapString(common.VPkgCreateSet), lang.CmdPackageCreateFlagSet)
356357
devLintCmd.Flags().StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor)
@@ -364,6 +365,12 @@ func bindDevDeployFlags(v *viper.Viper) {
364365
devDeployFlags.StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(common.VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride)
365366
devDeployFlags.StringVarP(&pkgConfig.CreateOpts.Flavor, "flavor", "f", v.GetString(common.VPkgCreateFlavor), lang.CmdPackageCreateFlagFlavor)
366367

368+
devDeployFlags.StringVar(&pkgConfig.DeployOpts.RegistryURL, "registry-url", defaultRegistry, lang.CmdDevFlagRegistry)
369+
err := devDeployFlags.MarkHidden("registry-url")
370+
if err != nil {
371+
message.Debug("Unable to mark dev-deploy flag as hidden", "error", err)
372+
}
373+
367374
devDeployFlags.StringToStringVar(&pkgConfig.PkgOpts.SetVariables, "deploy-set", v.GetStringMapString(common.VPkgDeploySet), lang.CmdPackageDeployFlagSet)
368375

369376
// Always require adopt-existing-resources flag (no viper)

src/config/lang/english.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ $ zarf package pull oci://ghcr.io/defenseunicorns/packages/dos-games:1.0.0 -a sk
354354
CmdDevFlagRepoChartPath = `If git repos hold helm charts, often found with gitops tools, specify the chart path, e.g. "/" or "/chart"`
355355
CmdDevFlagGitAccount = "User or organization name for the git account that the repos are created under."
356356
CmdDevFlagKubeVersion = "Override the default helm template KubeVersion when performing a package chart template"
357-
CmdDevFlagFindImagesRegistry = "Override the ###ZARF_REGISTRY### value"
357+
CmdDevFlagRegistry = "Override the ###ZARF_REGISTRY### value"
358358
CmdDevFlagFindImagesWhy = "Prints the source manifest for the specified image"
359359
CmdDevFlagFindImagesSkipCosign = "Skip searching for cosign artifacts related to discovered images"
360360

src/pkg/packager/dev.go

+19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/zarf-dev/zarf/src/pkg/message"
1717
"github.com/zarf-dev/zarf/src/pkg/packager/creator"
1818
"github.com/zarf-dev/zarf/src/pkg/packager/filters"
19+
"github.com/zarf-dev/zarf/src/types"
1920
)
2021

2122
// DevDeploy creates + deploys a package in one shot
@@ -76,6 +77,24 @@ func (p *Packager) DevDeploy(ctx context.Context) error {
7677

7778
if !p.cfg.CreateOpts.NoYOLO {
7879
p.cfg.Pkg.Metadata.YOLO = true
80+
81+
// Set default builtin values so they exist in case any helm charts rely on them
82+
registryInfo := types.RegistryInfo{Address: p.cfg.DeployOpts.RegistryURL}
83+
if err := registryInfo.FillInEmptyValues(); err != nil {
84+
return err
85+
}
86+
gitServer := types.GitServerInfo{}
87+
if err = gitServer.FillInEmptyValues(); err != nil {
88+
return err
89+
}
90+
artifactServer := types.ArtifactServerInfo{}
91+
artifactServer.FillInEmptyValues()
92+
93+
p.state = &types.ZarfState{
94+
RegistryInfo: registryInfo,
95+
GitServer: gitServer,
96+
ArtifactServer: artifactServer,
97+
}
7998
} else {
8099
p.hpaModified = false
81100
// Reset registry HPA scale down whether an error occurs or not

src/test/e2e/99_yolo_test.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,17 @@ func TestDevDeploy(t *testing.T) {
5353
return
5454
}
5555

56+
// Generic test of dev deploy
5657
stdOut, stdErr, err := e2e.Zarf(t, "dev", "deploy", "examples/dos-games")
5758
require.NoError(t, err, stdOut, stdErr)
5859

59-
stdOut, stdErr, err = e2e.Zarf(t, "package", "remove", "dos-games", "--confirm")
60+
stdOut, stdErr, err = e2e.Zarf(t, "tools", "kubectl", "delete", "namespace", "dos-games")
61+
require.NoError(t, err, stdOut, stdErr)
62+
63+
// Special test of hidden registry-url flag
64+
stdOut, stdErr, err = e2e.Zarf(t, "dev", "deploy", "src/test/packages/99-registry-url", "--registry-url", "ghcr.io")
65+
require.NoError(t, err, stdOut, stdErr)
66+
67+
stdOut, stdErr, err = e2e.Zarf(t, "tools", "kubectl", "delete", "namespace", "registry-url")
6068
require.NoError(t, err, stdOut, stdErr)
6169
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: registry-url
5+
spec:
6+
containers:
7+
- name: podinfo
8+
image: "###ZARF_REGISTRY###/stefanprodan/podinfo:6.4.0"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
kind: ZarfPackageConfig
2+
metadata:
3+
name: registry-url
4+
description: Deploys a simple pod with the special ZARF_REGISTRY value
5+
6+
components:
7+
- name: registry-url
8+
required: true
9+
manifests:
10+
- name: registry-url
11+
namespace: registry-url
12+
noWait: true
13+
files:
14+
- registry-url.yaml
15+
images:
16+
- ghcr.io/stefanprodan/podinfo:6.4.0

src/types/runtime.go

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ type ZarfDeployOptions struct {
7878
Timeout time.Duration
7979
// [Library Only] A map of component names to chart names containing Helm Chart values to override values on deploy
8080
ValuesOverridesMap map[string]map[string]map[string]interface{}
81+
// [Dev Deploy Only] Manual override for ###ZARF_REGISTRY###
82+
RegistryURL string
8183
}
8284

8385
// ZarfMirrorOptions tracks the user-defined preferences during a package mirror.

0 commit comments

Comments
 (0)