diff --git a/Makefile b/Makefile index fb93bab52..57a2f8068 100644 --- a/Makefile +++ b/Makefile @@ -140,13 +140,15 @@ deploy: ## ๐Ÿš€ Deploy to k8s context defined by $KUBECTX (default: kind-rig) --set image.tag=$(TAG) \ --set mongodb.enabled=true \ --set rig.telemetry.enabled=false \ + --set rig.cluster.dev_registry.host="localhost:30000" \ + --set rig.cluster.dev_registry.cluster_host="registry:5000" \ --create-namespace $(KUBECTL) rollout restart deployment -n rig-system rig .PHONY: kind-create kind-create: kind ## ๐Ÿ‹ Create kind cluster with rig dependencies $(KIND) get clusters | grep '^rig$$' || \ - $(KIND) create cluster --name rig + ./deploy/kind/create.sh $(KIND) .PHONY: kind-load kind-load: kind docker ## ๐Ÿ‹ Load docker image into kind cluster @@ -159,6 +161,10 @@ kind-deploy: kind kind-load deploy ## ๐Ÿ‹ Deploy rig to kind cluster kind-clean: ## ๐Ÿงน Clean kind cluster $(KIND) delete clusters rig +.PHONY: kind-registry +kind-registry: ## ๐Ÿ‹ Install docker registry in + $(KUBECTL) apply -f ./deploy/registry/registry.yaml -n rig-system + ##@ Release .PHONY: release diff --git a/cmd/rig-server/root.go b/cmd/rig-server/root.go index 6bcbc39d1..2690738dc 100644 --- a/cmd/rig-server/root.go +++ b/cmd/rig-server/root.go @@ -10,9 +10,8 @@ import ( "github.com/rigdev/rig/internal/handler" "github.com/rigdev/rig/internal/handler/registry" "github.com/rigdev/rig/internal/service/operator" - "github.com/spf13/cobra" - pkg_service "github.com/rigdev/rig/pkg/service" + "github.com/spf13/cobra" "go.uber.org/dig" "go.uber.org/fx" "go.uber.org/fx/fxevent" diff --git a/cmd/rig/cmd/capsule/create_build.go b/cmd/rig/cmd/capsule/create_build.go index 509aa6065..4e96b8f56 100644 --- a/cmd/rig/cmd/capsule/create_build.go +++ b/cmd/rig/cmd/capsule/create_build.go @@ -23,8 +23,9 @@ func CapsuleCreateBuild(ctx context.Context, cmd *cobra.Command, args []string, var buildID string if res, err := nc.Capsule().CreateBuild(ctx, &connect.Request[capsule.CreateBuildRequest]{ Msg: &capsule.CreateBuildRequest{ - CapsuleId: capsuleID.String(), - Image: image, + CapsuleId: capsuleID.String(), + Image: image, + SkipImageCheck: skipImageCheck, }, }); err != nil { return err diff --git a/cmd/rig/cmd/capsule/setup.go b/cmd/rig/cmd/capsule/setup.go index 0c5a4a119..00c6711db 100644 --- a/cmd/rig/cmd/capsule/setup.go +++ b/cmd/rig/cmd/capsule/setup.go @@ -22,10 +22,11 @@ var ( ) var ( - deploy bool - follow bool - interactive bool - outputJSON bool + deploy bool + follow bool + interactive bool + outputJSON bool + skipImageCheck bool ) var ( @@ -70,6 +71,7 @@ func Setup(parent *cobra.Command) { } createBuild.Flags().StringVarP(&image, "image", "i", "", "image to use for the build") createBuild.Flags().BoolVarP(&deploy, "deploy", "d", false, "deploy build after successful creation") + createBuild.Flags().BoolVarP(&skipImageCheck, "skip-image-check", "s", false, "skip validating that the docker image exists") capsule.AddCommand(createBuild) deploy := &cobra.Command{ diff --git a/deploy/charts/rig/templates/_config.tpl b/deploy/charts/rig/templates/_config.tpl index 882923854..aac03bfaa 100644 --- a/deploy/charts/rig/templates/_config.tpl +++ b/deploy/charts/rig/templates/_config.tpl @@ -29,6 +29,12 @@ client: {{- end }} cluster: type: k8s + {{- with .Values.rig.cluster.dev_registry }} + dev_registry: + enabled: {{ .enabled }} + host: {{ .host }} + cluster_host: {{ .cluster_host }} + {{- end }} {{- with .Values.rig.email }} email: type: {{ .type | quote }} diff --git a/deploy/kind/create.sh b/deploy/kind/create.sh new file mode 100755 index 000000000..550576b82 --- /dev/null +++ b/deploy/kind/create.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +cat < 0 { @@ -111,3 +115,21 @@ func (s *Service) validateImage(ctx context.Context, ref name.Reference) (string return d.String(), nil } + +func (s *Service) getLookupDockerRef(ref name.Reference) (name.Reference, error) { + cfg := s.cfg.Cluster.DevRegistry + if cfg.Host == "" || cfg.ClusterHost == "" { + return ref, nil + } + + if ref.Context().RegistryStr() != cfg.Host { + return ref, nil + } + + r, err := name.NewRegistry(cfg.ClusterHost, name.Insecure) + if err != nil { + return nil, err + } + repo := r.Repo(ref.Context().RepositoryStr()) + return repo.Tag(ref.Identifier()), nil +} diff --git a/internal/service/capsule/service.go b/internal/service/capsule/service.go index 10343bcf3..1b093d493 100644 --- a/internal/service/capsule/service.go +++ b/internal/service/capsule/service.go @@ -5,6 +5,7 @@ import ( "github.com/rigdev/rig-go-api/api/v1/capsule" "github.com/rigdev/rig-go-api/model" + "github.com/rigdev/rig/internal/config" "github.com/rigdev/rig/internal/gateway/cluster" "github.com/rigdev/rig/internal/repository" "github.com/rigdev/rig/internal/service/auth" @@ -24,9 +25,10 @@ type Service struct { as *auth.Service ps project.Service q *Queue[Job] + cfg config.Config } -func NewService(cr repository.Capsule, sr repository.Secret, cg cluster.Gateway, as *auth.Service, ps project.Service, logger *zap.Logger) *Service { +func NewService(cr repository.Capsule, sr repository.Secret, cg cluster.Gateway, as *auth.Service, ps project.Service, cfg config.Config, logger *zap.Logger) *Service { s := &Service{ cr: cr, sr: sr, @@ -34,6 +36,7 @@ func NewService(cr repository.Capsule, sr repository.Secret, cg cluster.Gateway, as: as, ps: ps, q: NewQueue[Job](), + cfg: cfg, logger: logger, }