@@ -31,6 +31,7 @@ func main() {
3131 RunE : execute ,
3232 }
3333 cmd .Flags ().String ("image-replacements" , "" , "path to the image replacements file" )
34+ cmd .Flags ().String ("insecure-registry" , "" , "insecure registry to use for generating policies" )
3435
3536 cmd .SilenceUsage = true
3637
@@ -55,6 +56,16 @@ func execute(c *cobra.Command, _ []string) error {
5556 return err
5657 }
5758
59+ cleanup , err := setupProxy (c .Context (), flags .insecureRegistry )
60+ if err != nil {
61+ return fmt .Errorf ("setup proxy: %w" , err )
62+ }
63+ defer func () {
64+ if err := cleanup (); err != nil {
65+ log .Printf ("Error cleaning up proxy: %v" , err )
66+ }
67+ }()
68+
5869 policy , err := generatePolicy (c .Context (), workDir , flags )
5970 if err != nil {
6071 return fmt .Errorf ("generate policy: %w" , err )
@@ -100,9 +111,17 @@ func generatePolicy(ctx context.Context, workDir string, flags *flags) (string,
100111 "--genpolicy-cache-path=" + filepath .Join (workDir , "layers-cache.json" ),
101112 "--image-replacements=" + flags .imageReplacementsFile ,
102113 "--output=" + filepath .Join (workDir , "out.yml" ),
103- filepath .Join (workDir , "pod.yml" ),
104114 }
105- generateCmd .SetArgs (args )
115+ if flags .insecureRegistry != "" {
116+ // This assumes that the insecure registry contains a mirror of ghcr.io/edgelesssys/kubernetes/pause
117+ // which is used by genpolicy to fetch the pause image. See ./proxy.go.
118+ args = append (
119+ args ,
120+ "--insecure-registry=" + flags .insecureRegistry ,
121+ "--insecure-registry=ghcr.io" ,
122+ )
123+ }
124+ generateCmd .SetArgs (append (args , filepath .Join (workDir , "pod.yml" )))
106125 generateCmd .SetOut (io .Discard )
107126 errBuf := & bytes.Buffer {}
108127 generateCmd .SetErr (errBuf )
@@ -149,14 +168,20 @@ func extractPolicy(yaml []byte) (string, error) {
149168
150169type flags struct {
151170 imageReplacementsFile string
171+ insecureRegistry string
152172}
153173
154174func parseFlags (cmd * cobra.Command ) (* flags , error ) {
155175 imageReplacementsFile , err := cmd .Flags ().GetString ("image-replacements" )
156176 if err != nil {
157177 return nil , err
158178 }
179+ insecureRegistry , err := cmd .Flags ().GetString ("insecure-registry" )
180+ if err != nil {
181+ return nil , err
182+ }
159183 return & flags {
160184 imageReplacementsFile : imageReplacementsFile ,
185+ insecureRegistry : insecureRegistry ,
161186 }, nil
162187}
0 commit comments