@@ -64,6 +64,7 @@ type DevOptions struct {
6464 WaitForReadyTimeout time.Duration
6565 ChartPath string
6666 ChartVersion string
67+ KindNetwork string
6768}
6869
6970// NewDevOptions creates a new DevOptions
@@ -86,13 +87,14 @@ func (o *DevOptions) AddCmdFlags(cmd *cobra.Command) {
8687 o .Options .BindFlags (cmd )
8788 logsv1 .AddFlags (o .Logs , cmd .Flags ())
8889
89- cmd .Flags ().StringVarP (& o .ProviderClusterName , "provider-cluster-name" , "" , "kind-provider" , "Name of the provider cluster in dev mode" )
90- cmd .Flags ().StringVarP (& o .ConsumerClusterName , "consumer-cluster-name" , "" , "kind-consumer" , "Name of the consumer cluster in dev mode" )
91- cmd .Flags ().DurationVarP (& o .WaitForReadyTimeout , "wait-for-ready-timeout" , "" , 2 * time .Minute , "Timeout for waiting for the cluster to be ready" )
92- cmd .Flags ().StringVarP (& o .ChartPath , "chart-path" , "" , o .ChartPath , "Helm chart path or OCI registry URL" )
93- cmd .Flags ().StringVarP (& o .ChartVersion , "chart-version" , "" , o .ChartVersion , "Helm chart version" )
94- cmd .Flags ().StringVarP (& o .Image , "image" , "" , "ghcr.io/kube-bind/backend" , "kube-bind backend image to use in dev mode" )
95- cmd .Flags ().StringVarP (& o .Tag , "tag" , "" , "main" , "kube-bind backend image tag to use in dev mode" )
90+ cmd .Flags ().StringVar (& o .ProviderClusterName , "provider-cluster-name" , "kind-provider" , "Name of the provider cluster in dev mode" )
91+ cmd .Flags ().StringVar (& o .ConsumerClusterName , "consumer-cluster-name" , "kind-consumer" , "Name of the consumer cluster in dev mode" )
92+ cmd .Flags ().DurationVar (& o .WaitForReadyTimeout , "wait-for-ready-timeout" , 2 * time .Minute , "Timeout for waiting for the cluster to be ready" )
93+ cmd .Flags ().StringVar (& o .ChartPath , "chart-path" , o .ChartPath , "Helm chart path or OCI registry URL" )
94+ cmd .Flags ().StringVar (& o .ChartVersion , "chart-version" , o .ChartVersion , "Helm chart version" )
95+ cmd .Flags ().StringVar (& o .Image , "image" , "ghcr.io/kube-bind/backend" , "kube-bind backend image to use in dev mode" )
96+ cmd .Flags ().StringVar (& o .Tag , "tag" , "main" , "kube-bind backend image tag to use in dev mode" )
97+ cmd .Flags ().StringVar (& o .KindNetwork , "kind-network" , "kube-bind-dev" , "kind network to use in dev mode" )
9698}
9799
98100// Complete completes the options
@@ -125,8 +127,6 @@ nodes:
125127- role: control-plane
126128`
127129
128- const dockerNetwork = "kube-bind-dev"
129-
130130// Color helper functions
131131func blueCommand (text string ) string {
132132 return "\033 [38;5;67m" + text + "\033 [0m"
@@ -144,7 +144,7 @@ func (o *DevOptions) runWithColors(ctx context.Context) error {
144144 fmt .Fprintf (o .Streams .ErrOut , "%s kube-bind dev command is in preview\n " , redText ("EXPERIMENTAL:" ))
145145 fmt .Fprintf (o .Streams .ErrOut , "Requirements: Docker must be installed and running\n \n " )
146146
147- hostEntryExists := o .setupHostEntries (ctx )
147+ hostEntryExists := o .setupHostEntries ()
148148
149149 if err := o .checkFileLimits (); err != nil {
150150 fmt .Fprintf (o .Streams .ErrOut , "⚠️ File limit check warning: %v\n " , err )
@@ -154,7 +154,7 @@ func (o *DevOptions) runWithColors(ctx context.Context) error {
154154 return err
155155 }
156156
157- providerIP , err := o .getClusterIPAddress (ctx , o .ProviderClusterName , dockerNetwork )
157+ providerIP , err := o .getClusterIPAddress (ctx , o .ProviderClusterName , o . KindNetwork )
158158 if err != nil {
159159 fmt .Fprintf (o .Streams .ErrOut , "⚠️ Failed to get provider cluster IP address: %v\n " , err )
160160 providerIP = ""
@@ -193,7 +193,7 @@ func (o *DevOptions) runWithColors(ctx context.Context) error {
193193 if providerIP != "" {
194194 fmt .Fprintf (o .Streams .ErrOut , "%s\n " , blueCommand (fmt .Sprintf ("KUBECONFIG=%s.kubeconfig kubectl bind --konnector-host-alias %s:kube-bind.dev.local" , o .ConsumerClusterName , providerIP )))
195195 } else {
196- fmt .Fprintf (o .Streams .ErrOut , "%s\n " , blueCommand (fmt .Sprintf ("PROVIDER_IP=$(docker inspect %s-control-plane | jq -r '.[0].NetworkSettings.Networks[\" %s\" ].IPAddress') && KUBECONFIG=%s.kubeconfig kubectl bind --konnector-host-alias ${PROVIDER_IP}:kube-bind.dev.local" , dockerNetwork , o .ProviderClusterName , o .ConsumerClusterName )))
196+ fmt .Fprintf (o .Streams .ErrOut , "%s\n " , blueCommand (fmt .Sprintf ("PROVIDER_IP=$(docker inspect %s-control-plane | jq -r '.[0].NetworkSettings.Networks[\" %s\" ].IPAddress') && KUBECONFIG=%s.kubeconfig kubectl bind --konnector-host-alias ${PROVIDER_IP}:kube-bind.dev.local" , o . KindNetwork , o .ProviderClusterName , o .ConsumerClusterName )))
197197 }
198198
199199 return nil
@@ -204,7 +204,7 @@ func (o *DevOptions) Run(ctx context.Context) error {
204204 return o .runWithColors (ctx )
205205}
206206
207- func (o * DevOptions ) setupHostEntries (ctx context. Context ) bool {
207+ func (o * DevOptions ) setupHostEntries () bool {
208208 if err := addHostEntry ("kube-bind.dev.local" ); err != nil {
209209 fmt .Fprintf (o .Streams .ErrOut , "Warning: Could not automatically add host entry. Please run:\n " )
210210 if runtime .GOOS == "windows" {
@@ -222,7 +222,7 @@ func (o *DevOptions) setupHostEntries(ctx context.Context) bool {
222222
223223func (o * DevOptions ) createCluster (ctx context.Context , clusterName , clusterConfig string , installKubeBind bool ) error {
224224 // Set experimental Docker network for kind clusters to communicate
225- os .Setenv ("KIND_EXPERIMENTAL_DOCKER_NETWORK" , dockerNetwork )
225+ os .Setenv ("KIND_EXPERIMENTAL_DOCKER_NETWORK" , o . KindNetwork )
226226
227227 provider := cluster .NewProvider ()
228228
@@ -236,7 +236,7 @@ func (o *DevOptions) createCluster(ctx context.Context, clusterName, clusterConf
236236 if slices .Contains (clusters , clusterName ) {
237237 fmt .Fprint (o .Streams .ErrOut , "Kind cluster " + clusterName + " already exists, skipping creation\n " )
238238 } else {
239- fmt .Fprintf (o .Streams .ErrOut , "Creating kind cluster %s with network %s\n " , clusterName , dockerNetwork )
239+ fmt .Fprintf (o .Streams .ErrOut , "Creating kind cluster %s with network %s\n " , clusterName , o . KindNetwork )
240240 err := provider .Create (clusterName ,
241241 cluster .CreateWithRawConfig ([]byte (clusterConfig )),
242242 cluster .CreateWithWaitForReady (o .WaitForReadyTimeout ),
@@ -304,7 +304,7 @@ func (o *DevOptions) getClusterIPAddress(ctx context.Context, clusterName, netwo
304304func (o * DevOptions ) installHelmChart (_ context.Context , restConfig * rest.Config ) error {
305305 actionConfig := new (action.Configuration )
306306
307- if err := actionConfig .Init (& restConfigGetter {config : restConfig }, "kube-bind" , "secret" , func (format string , v ... interface {} ) {}); err != nil {
307+ if err := actionConfig .Init (& restConfigGetter {config : restConfig }, "kube-bind" , "secret" , func (format string , v ... any ) {}); err != nil {
308308 return fmt .Errorf ("failed to initialize helm action config: %w" , err )
309309 }
310310
@@ -315,32 +315,32 @@ func (o *DevOptions) installHelmChart(_ context.Context, restConfig *rest.Config
315315 }
316316 actionConfig .RegistryClient = registryClient
317317
318- values := map [string ]interface {} {
319- "image" : map [string ]interface {} {
318+ values := map [string ]any {
319+ "image" : map [string ]any {
320320 "repository" : o .Image ,
321321 "tag" : o .Tag ,
322322 },
323- "examples" : map [string ]interface {} {
323+ "examples" : map [string ]any {
324324 "enabled" : true ,
325325 },
326- "backend" : map [string ]interface {} {
326+ "backend" : map [string ]any {
327327 "listenAddress" : "0.0.0.0:8080" ,
328328 "namespacePrefix" : "kube-bind-" ,
329329 "externalAddress" : "https://kube-bind.dev.local:6443" ,
330330 "externalServerName" : "kind-provider-control-plane" ,
331331 "consumerScope" : "cluster" ,
332- "oidc" : map [string ]interface {} {
332+ "oidc" : map [string ]any {
333333 "callbackUrl" : "http://kube-bind.dev.local:8080/api/callback" ,
334334 "issuerUrl" : "http://kube-bind.dev.local:8080/oidc" ,
335335 "type" : "embedded" ,
336336 },
337337 },
338- "service" : map [string ]interface {} {
338+ "service" : map [string ]any {
339339 "type" : "NodePort" ,
340340 "port" : 8080 ,
341341 "nodePort" : 31000 ,
342342 },
343- "hostAliases" : []map [string ]interface {} {
343+ "hostAliases" : []map [string ]any {
344344 {
345345 "ip" : "0.0.0.0" ,
346346 "hostnames" : []string {"kube-bind.dev.local" },
0 commit comments