Skip to content

Commit

Permalink
registry & port-forward work
Browse files Browse the repository at this point in the history
  • Loading branch information
pthomison committed Apr 4, 2024
1 parent a80a5a0 commit 39d0fa7
Show file tree
Hide file tree
Showing 12 changed files with 260 additions and 20 deletions.
17 changes: 14 additions & 3 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ vars:
REPOSITORY: "k3auto"
IMAGE_TAG: "testing-{{.GIT_REV}}"
IMAGE_REF: "{{.REGISTRY}}/{{.REPOSITORY}}:{{.IMAGE_TAG}}"
BUILD_FLAGS: "-tags containers_image_openpgp"

env:
CGO_ENABLED: "0"

tasks:
rev: echo {{.GIT_REV}}
Expand All @@ -20,15 +24,15 @@ tasks:

test:
cmds:
- go test ./... -v --count=1
- go test {{.BUILD_FLAGS}} ./... -v --count=1

hack:
cmds:
- go test ./hack/... -v --count=1
- go test {{.BUILD_FLAGS}} ./hack/... -v --count=1

e2e:
cmds:
- go test ./e2e/... -v --count=1
- go test {{.BUILD_FLAGS}} ./e2e/... -v --count=1 #-tag containers_image_openpgp

docker-test-image:
cmds:
Expand All @@ -43,6 +47,12 @@ tasks:
vars:
DOCKER_CMD: task test

docker-e2e:
cmds:
- task: docker
vars:
DOCKER_CMD: task e2e

docker-no-build-test:
cmds:
- task: docker-no-build
Expand All @@ -62,6 +72,7 @@ tasks:
- task: docker-no-build
vars:
DOCKER_CMD: "{{.DOCKER_CMD}}"
DOCKER_RUN_EXTRA_FLAGS: "{{.DOCKER_RUN_EXTRA_FLAGS}}"

docker-no-build:
cmds:
Expand Down
46 changes: 39 additions & 7 deletions cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"context"

"github.com/davecgh/go-spew/spew"
k3dv1alpha5 "github.com/k3d-io/k3d/v5/pkg/config/v1alpha5"
k3druntimes "github.com/k3d-io/k3d/v5/pkg/runtimes"
defaults "github.com/pthomison/k3auto/default"
Expand Down Expand Up @@ -70,6 +71,20 @@ func injectFluxControllers(ctx context.Context) error {
return nil
}

func injectRegistry(ctx context.Context) error {
k8sC, err := k8s.NewClient()
if err != nil {
return err
}

err = k8s.CreateManifests(ctx, k8sC, defaults.RegistryDeployment)
if err != nil {
return err
}

return nil
}

func k3AutoCreate(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
if ctx == nil {
Expand All @@ -90,22 +105,39 @@ func k3AutoCreate(cmd *cobra.Command, args []string) {
checkError(err)
logrus.Info("Flux Controllers Injected")

logrus.Info("Injecting Registry")
err = injectRegistry(ctx)
checkError(err)
logrus.Info("Registry Injected")

k8sC, err := k8s.NewClient()
checkError(err)

err = k8s.WaitForDeployment(ctx, k8sC, v1.ObjectMeta{
Name: "docker-registry",
Namespace: "docker-registry",
})
checkError(err)

spew.Dump(MinimalFlag)

if !MinimalFlag {

logrus.Info("Injecting Default Deployments")
err = k3autoDeploy(ctx, "default", defaults.DefaultDeploymentsFolder, afero.FromIOFS{FS: defaults.DefaultDeployments})
err = K3autoDeploy(ctx, "default", defaults.DefaultDeploymentsFolder, afero.FromIOFS{FS: defaults.DefaultDeployments})
checkError(err)
logrus.Info("Default Deployments Injected")

}
spew.Dump(DeploymentDirectoryFlag)

if DeploymentDirectoryFlag != "" {
if DeploymentDirectoryFlag != "" {
logrus.Info("Injecting Directory Deployments")
err = K3autoDeploy(ctx, "deployments", DeploymentDirectoryFlag, afero.NewOsFs())
checkError(err)

logrus.Info("Injecting Directory Deployments")
err = k3autoDeploy(ctx, "deployments", DeploymentDirectoryFlag, afero.NewOsFs())
checkError(err)
logrus.Info("Directory Deployments Injected")
}

logrus.Info("Directory Deployments Injected")
}

}
4 changes: 2 additions & 2 deletions cmd/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func k3AutoUpdate(cmd *cobra.Command, args []string) {
if !MinimalFlag {

logrus.Info("Injecting Default Deployments")
err = k3autoDeploy(ctx, "default", defaults.DefaultDeploymentsFolder, afero.FromIOFS{FS: defaults.DefaultDeployments})
err = K3autoDeploy(ctx, "default", defaults.DefaultDeploymentsFolder, afero.FromIOFS{FS: defaults.DefaultDeployments})
checkError(err)
logrus.Info("Default Deployments Injected")

Expand All @@ -39,7 +39,7 @@ func k3AutoUpdate(cmd *cobra.Command, args []string) {
if DeploymentDirectoryFlag != "" {

logrus.Info("Injecting Directory Deployments")
err = k3autoDeploy(ctx, "deployments", DeploymentDirectoryFlag, afero.NewOsFs())
err = K3autoDeploy(ctx, "deployments", DeploymentDirectoryFlag, afero.NewOsFs())
checkError(err)

logrus.Info("Directory Deployments Injected")
Expand Down
35 changes: 29 additions & 6 deletions cmd/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ import (
"fmt"
"net"

appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"

k3dv1alpha5 "github.com/k3d-io/k3d/v5/pkg/config/v1alpha5"
defaults "github.com/pthomison/k3auto/default"
Expand Down Expand Up @@ -63,17 +66,19 @@ func lookupIpv4() (string, error) {
return "", errors.New("no ipv4 network detected")
}

func k3autoDeploy(ctx context.Context, name string, directory string, filesystem afero.Fs) error {
func K3autoDeploy(ctx context.Context, name string, directory string, filesystem afero.Fs) error {
imageRef := fmt.Sprintf("%v:%v", name, name)

machineIP, err := lookupIpv4()
k8sC, err := k8s.NewClient()
if err != nil {
return err
}

tag := name
repository := fmt.Sprintf("%v:8888", machineIP)
localRepository := fmt.Sprintf("%v:8888", "127.0.0.1")

repository := fmt.Sprintf("%v:5000", "docker-registry.docker-registry.svc.cluster.local")
localRepository := fmt.Sprintf("%v:5000", "127.0.0.1")

image := name
namespace := "kube-system"

Expand All @@ -84,16 +89,34 @@ func k3autoDeploy(ctx context.Context, name string, directory string, filesystem
return err
}

err = docker.PushImage(ctx, imageRef, localRepository)
dep := appsv1.Deployment{}
err = k8sC.Get(ctx, client.ObjectKey{
Name: "docker-registry",
Namespace: "docker-registry",
}, &dep)
if err != nil {
return err
}

k8sC, err := k8s.NewClient()
pods := corev1.PodList{}
var selector client.MatchingLabels = dep.Spec.Selector.MatchLabels
err = k8sC.List(ctx, &pods, selector)
if err != nil {
return err
}

closeChan, err := k8s.PortForward(ctx, pods.Items[0].Name, pods.Items[0].Namespace, 5000)
if err != nil {
return err
}

err = docker.PushImage(ctx, imageRef, localRepository)
if err != nil {
return err
}

close(closeChan)

repo := flux.NewOCIRepoObject(name, namespace, repository, image, tag)
kustomization := flux.NewOCIKustomizationObject(name, namespace)

Expand Down
5 changes: 5 additions & 0 deletions default/embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const (
K3dConfigLocation = "k3d-config.yaml"

DefaultDeploymentsFolder = "deployments"

// RegistryDeploymentFolder = "registry"
)

var (
Expand All @@ -16,4 +18,7 @@ var (

//go:embed deployments/*
DefaultDeployments embed.FS

//go:embed registry/registry.yaml
RegistryDeployment string
)
61 changes: 61 additions & 0 deletions default/registry/registry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
apiVersion: v1
kind: Namespace
metadata:
name: docker-registry
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: docker-registry
name: docker-registry
namespace: docker-registry
spec:
replicas: 1
selector:
matchLabels:
app: docker-registry
template:
metadata:
labels:
app: docker-registry
spec:
containers:
- command:
- /bin/registry
- serve
- /etc/docker/registry/config.yml
image: registry:2.8.3
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /
port: 5000
scheme: HTTP
name: docker-registry
ports:
- containerPort: 5000
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 5000
scheme: HTTP
resources: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: docker-registry
name: docker-registry
namespace: docker-registry
spec:
ports:
- name: http-5000
port: 5000
protocol: TCP
targetPort: 5000
selector:
app: docker-registry
type: ClusterIP
2 changes: 1 addition & 1 deletion e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func init() {
func SetupEnvironment(ctx context.Context) (func(ctx context.Context) error, error) {
// go cmd.CreateCmd.ExecuteContext(ctx)

cmd.K3AutoCmd.SetArgs([]string{"create"})
cmd.K3AutoCmd.SetArgs([]string{"create", "-d", "./e2e_deployments"})
go cmd.K3AutoCmd.ExecuteContext(ctx)

cleanupFn := func(ctx context.Context) error {
Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ require (
k8s.io/apiextensions-apiserver v0.28.6
k8s.io/apimachinery v0.28.6
k8s.io/client-go v0.28.6
k8s.io/kubectl v0.28.6
sigs.k8s.io/controller-runtime v0.16.3
)

Expand Down Expand Up @@ -117,6 +118,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect
github.com/moby/spdystream v0.2.0 // indirect
github.com/moby/sys/mountinfo v0.7.1 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/sys/user v0.1.0 // indirect
Expand Down
7 changes: 7 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
Expand Down Expand Up @@ -296,6 +298,7 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
Expand Down Expand Up @@ -398,6 +401,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g=
github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
Expand Down Expand Up @@ -861,6 +866,8 @@ k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
k8s.io/kubectl v0.28.6 h1:46O3gGJYlpqy7wtwYlggieemyIcuZqmflnQVDci3MgY=
k8s.io/kubectl v0.28.6/go.mod h1:FS5ugZhi3kywpMQSCnp8MN+gctdFHJACzC6mH3fZ6lc=
k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI=
k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4=
Expand Down
Loading

0 comments on commit 39d0fa7

Please sign in to comment.