Skip to content

Commit

Permalink
testing release on tag (#105)
Browse files Browse the repository at this point in the history
  • Loading branch information
EItanya authored Nov 3, 2023
1 parent ffc9e0f commit 9cc0613
Show file tree
Hide file tree
Showing 11 changed files with 79 additions and 53 deletions.
19 changes: 19 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,22 @@ jobs:
registry: ghcr.io
username: ${{github.actor}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Build and Push images
run: make -C ./projects/gateway2/ push TAGGED_VERSION=${{ github.ref_name }}
release-helm:
name: Release Helm Chart
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: "1.21"
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Package Helm Chart
run: make -C ./projects/gateway2/ helm TAGGED_VERSION=${{ github.ref_name }}
23 changes: 20 additions & 3 deletions projects/gateway2/Makefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
TAGGED_VERSION ?= vlatest
ifneq (,$(TAGGED_VERSION))
VERSION := $(shell echo $(TAGGED_VERSION) | cut -c 2-)
endif

build:
CGO_ENABLED=0 GOOS=linux go build -o gloo-gateway

docker: build
docker build -t us-docker.pkg.dev/gloo-gateway/docker/gloo-gateway-cp:latest .
docker build -t ghcr.io/solo-io/gloo-gateway/glood:$(VERSION) .

push: docker
docker push ghcr.io/solo-io/gloo-gateway/glood:$(VERSION)
docker pull quay.io/solo-io/envoy-gloo:1.26.4-patch4
docker tag quay.io/solo-io/envoy-gloo:1.26.4-patch4 ghcr.io/solo-io/gloo-gateway/gloo-proxy:$(VERSION)
docker push ghcr.io/solo-io/gloo-gateway/gloo-proxy:$(VERSION)

.PHONY: helm
helm:
helm package helm/gloo-gateway --app-version $(VERSION) --version $(VERSION)
helm push gloo-gateway-$(VERSION).tgz oci://ghcr.io/solo-io/helm-charts


crds/gateway-crds.yaml:
kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=adbd9968d4ff7995af21cb9cd0913288e2b4ca27" -o crds/gateway-crds.yaml

kind:
./kind.sh
kind load docker-image us-docker.pkg.dev/gloo-gateway/docker/gloo-gateway-cp:latest
helm upgrade -i gloo-gateway ./helm/gloo-gateway/ --set controlPlane.image.tag=latest --set gateway.enabled=false --set develop=true
kind load docker-image ghcr.io/solo-io/gloo-gateway/glood:$(VERSION)
helm upgrade -i default ./helm/gloo-gateway/ --set controlPlane.image.tag=$(VERSION) --set gateway.enabled=false --set develop=true
kubectl delete rs --all

tests/conformance/conformance_test.go:
Expand Down
3 changes: 1 addition & 2 deletions projects/gateway2/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ type GatewayConfig struct {
Mgr manager.Manager
GWClass apiv1.ObjectName
Dev bool
HelmRelease string
ControllerName string
AutoProvision bool
XdsServer string
Expand Down Expand Up @@ -84,7 +83,7 @@ func (c *controllerBuilder) watchGw(ctx context.Context) error {
log := log.FromContext(ctx)

log.Info("creating deployer", "ctrlname", c.cfg.ControllerName, "server", c.cfg.XdsServer, "port", c.cfg.XdsPort)
d, err := deployer.NewDeployer(c.cfg.Mgr.GetScheme(), c.cfg.Dev, c.cfg.HelmRelease, c.cfg.ControllerName, c.cfg.XdsServer, c.cfg.XdsPort)
d, err := deployer.NewDeployer(c.cfg.Mgr.GetScheme(), c.cfg.Dev, c.cfg.ControllerName, c.cfg.XdsServer, c.cfg.XdsPort)
if err != nil {
return err
}
Expand Down
1 change: 0 additions & 1 deletion projects/gateway2/controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@ func Start(cfg ControllerConfig) {
gwcfg := GatewayConfig{
Mgr: mgr,
GWClass: gatewayClassName,
HelmRelease: cfg.Release,
Dev: cfg.Dev,
ControllerName: cfg.GatewayControllerName,
AutoProvision: cfg.AutoProvision,
Expand Down
15 changes: 5 additions & 10 deletions projects/gateway2/deployer/deployer.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,34 +40,29 @@ type Deployer struct {
controllerName string
host string
port uint16
release string
}

func NewDeployer(scheme *runtime.Scheme, dev bool, release, controllerName, host string, port uint16) (*Deployer, error) {
func NewDeployer(scheme *runtime.Scheme, dev bool, controllerName, host string, port uint16) (*Deployer, error) {

chart, err := loadFs(helm.GlooGatewayHelmChart)
if err != nil {
// don't retrun an error is requeueing won't help here
return nil, err
}
if release == "" && chart.Metadata != nil {
release = chart.Metadata.Name
}
return &Deployer{
dev: dev,
chart: chart,
scheme: scheme,
controllerName: controllerName,
host: host,
port: port,
release: release,
}, nil
}

func (d *Deployer) GetGvksToWatch(ctx context.Context) ([]schema.GroupVersionKind, error) {
fakeGw := &api.Gateway{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Name: "default",
Namespace: "default",
},
}
Expand Down Expand Up @@ -138,7 +133,7 @@ func (d *Deployer) renderChartToObjects(ctx context.Context, gw *api.Gateway) ([
if d.dev {
vals["develop"] = true
}
objs, err := d.Render(ctx, gw.Namespace, vals)
objs, err := d.Render(ctx, gw.Name, gw.Namespace, vals)
if err != nil {
return nil, err
}
Expand All @@ -150,15 +145,15 @@ func (d *Deployer) renderChartToObjects(ctx context.Context, gw *api.Gateway) ([
return objs, nil
}

func (d *Deployer) Render(ctx context.Context, ns string, vals map[string]any) ([]client.Object, error) {
func (d *Deployer) Render(ctx context.Context, name, ns string, vals map[string]any) ([]client.Object, error) {
mem := driver.NewMemory()
mem.SetNamespace(ns)
cfg := &action.Configuration{
Releases: storage.Init(mem),
}
client := action.NewInstall(cfg)
client.Namespace = ns
client.ReleaseName = d.release
client.ReleaseName = name
client.ClientOnly = true
release, err := client.RunWithContext(ctx, d.chart, vals)
if err != nil {
Expand Down
30 changes: 21 additions & 9 deletions projects/gateway2/deployer/deployer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ var _ = Describe("Deployer", func() {
)
BeforeEach(func() {
var err error
d, err = deployer.NewDeployer(scheme.NewScheme(), false, "gloo-gateway", "foo", "xds", 8080)
d, err = deployer.NewDeployer(scheme.NewScheme(), false, "foo", "xds", 8080)
Expect(err).NotTo(HaveOccurred())
})

Expand All @@ -78,7 +78,7 @@ var _ = Describe("Deployer", func() {
"createGateway": false,
},
}
cpObjs, err := d.Render(context.Background(), "default", vals)
cpObjs, err := d.Render(context.Background(), "default", "default", vals)
Expect(err).NotTo(HaveOccurred())

// find the rbac role with deploy in its name
Expand Down Expand Up @@ -231,13 +231,13 @@ var _ = Describe("Deployer", func() {

It("support segmenting by release", func() {

d1, err := deployer.NewDeployer(scheme.NewScheme(), false, "r1", "foo", "xds", 8080)
d1, err := deployer.NewDeployer(scheme.NewScheme(), false, "foo", "xds", 8080)
Expect(err).NotTo(HaveOccurred())

d2, err := deployer.NewDeployer(scheme.NewScheme(), false, "", "foo", "xds", 8080)
d2, err := deployer.NewDeployer(scheme.NewScheme(), false, "foo", "xds", 8080)
Expect(err).NotTo(HaveOccurred())

gw := &api.Gateway{
gw1 := &api.Gateway{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: "default",
Expand All @@ -249,18 +249,30 @@ var _ = Describe("Deployer", func() {
},
}

objs1, err := d1.GetObjsToDeploy(context.Background(), gw)
gw2 := &api.Gateway{
ObjectMeta: metav1.ObjectMeta{
Name: "bar",
Namespace: "default",
UID: "1235",
},
TypeMeta: metav1.TypeMeta{
Kind: "Gateway",
APIVersion: "gateway.solo.io/v1beta1",
},
}

objs1, err := d1.GetObjsToDeploy(context.Background(), gw1)
Expect(err).NotTo(HaveOccurred())
Expect(objs1).NotTo(BeEmpty())
objs2, err := d2.GetObjsToDeploy(context.Background(), gw)
objs2, err := d2.GetObjsToDeploy(context.Background(), gw2)
Expect(err).NotTo(HaveOccurred())
Expect(objs2).NotTo(BeEmpty())

for _, obj := range objs1 {
Expect(obj.GetName()).To(Equal("r1-foo-dp"))
Expect(obj.GetName()).To(Equal("gloo-proxy-foo"))
}
for _, obj := range objs2 {
Expect(obj.GetName()).To(Equal("foo-dp"))
Expect(obj.GetName()).To(Equal("gloo-proxy-bar"))
}

})
Expand Down
25 changes: 5 additions & 20 deletions projects/gateway2/helm/gloo-gateway/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,8 @@ If release name contains chart name it will be used as a full name.
{{- if .Values.controlPlane.fullnameOverride }}
{{- .Values.controlPlane.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.controlPlane.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | printf "%s-cp" | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s-cp" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- $name := default .Release.Name .Values.controlPlane.nameOverride }}
{{- .Release.Name | printf "glood-%s" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}

Expand Down Expand Up @@ -78,7 +74,7 @@ Expand the name of the chart.
*/}}
{{- define "gloo-gateway.gateway.name" -}}
{{- if .Values.gateway.name }}
{{- .Values.gateway.name | printf "%s-dp" | trunc 63 | trimSuffix "-" }}
{{- .Values.gateway.name | printf "gloo-proxy-%s" | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- default .Chart.Name .Values.gateway.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
Expand All @@ -92,20 +88,9 @@ If release name contains chart name it will be used as a full name.
{{- define "gloo-gateway.gateway.fullname" -}}
{{- if .Values.gateway.fullnameOverride }}
{{- .Values.gateway.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else if .Values.gateway.name }}
{{- $name := default .Chart.Name .Values.gateway.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Values.gateway.name | printf "%s-dp" | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s-dp" .Release.Name .Values.gateway.name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- else }}
{{- $name := default .Chart.Name .Values.gateway.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | printf "%s-dp" | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s-dp" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- $name := default .Release.Name .Values.gateway.nameOverride }}
{{- .Release.Name | printf "gloo-proxy-%s" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}

Expand Down
4 changes: 2 additions & 2 deletions projects/gateway2/helm/gloo-gateway/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ controlPlane:
fullnameOverride: ""

image:
repository: us-docker.pkg.dev/gloo-gateway/docker/gloo-gateway-cp
repository: ghcr.io/solo-io/gloo-gateway/glood
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
Expand Down Expand Up @@ -71,7 +71,7 @@ controlPlane:
affinity: {}

gateway:
enabled: true
enabled: false
nameOverride: ""
fullnameOverride: ""
gatewayName: ""
Expand Down
2 changes: 1 addition & 1 deletion projects/gateway2/run_envoy_local.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash

IMG=$(kubectl get deploy gw-dp -o jsonpath='{.spec.template.spec.containers[0].image}')
kubectl get cm gw-dp -o jsonpath='{.data.envoy\.yaml}' | sed 's/address: gloo-gateway-cp.default/address: 127.0.0.1/' > /tmp/envoy.yaml
kubectl get cm gw-dp -o jsonpath='{.data.envoy\.yaml}' | sed 's/address: glood.default/address: 127.0.0.1/' > /tmp/envoy.yaml
CMD=$(kubectl get deploy gw-dp -o jsonpath='{.spec.template.spec.containers[0].command}'|jq -r 'join(" ")'| sed 's@/etc/envoy/envoy.yaml@/tmp/envoy.yaml@')
ARGS=$(kubectl get deploy gw-dp -o jsonpath='{.spec.template.spec.containers[0].args}'|jq -r 'join(" ")'| sed 's@/etc/envoy/envoy.yaml@/tmp/envoy.yaml@')

Expand Down
6 changes: 3 additions & 3 deletions projects/gloo/cli/pkg/cmd/install/v2/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func install(opts *options.Options, installOpts *Options) error {
return err
}

dep, err := deployer.NewDeployer(cli.Scheme(), false, "", "glooctl", "", 0)
dep, err := deployer.NewDeployer(cli.Scheme(), false, "glooctl", "", 0)
if err != nil {
return err
}
Expand Down Expand Up @@ -76,7 +76,7 @@ func install(opts *options.Options, installOpts *Options) error {
fmt.Printf("Skipping Gateway CRDs as they exist...\n")
}

objs, err := dep.Render(ctx, installOpts.Namespace, vals)
objs, err := dep.Render(ctx, "default", installOpts.Namespace, vals)
if err != nil {
return err
}
Expand All @@ -101,7 +101,7 @@ func install(opts *options.Options, installOpts *Options) error {
Kind: "Gateway",
},
ObjectMeta: metav1.ObjectMeta{
Name: "gloo-gateway",
Name: "http",
Namespace: installOpts.Namespace,
},
Spec: gwv1.GatewaySpec{
Expand Down
4 changes: 2 additions & 2 deletions projects/gloo/cli/pkg/cmd/install/v2/uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ func uninstall(opts *options.Options, installOpts *Options) error {
return err
}

dep, err := deployer.NewDeployer(cli.Scheme(), false, "", "glooctl", "", 0)
dep, err := deployer.NewDeployer(cli.Scheme(), false, "glooctl", "", 0)
if err != nil {
return err
}

objs, err := dep.Render(ctx, installOpts.Namespace, vals)
objs, err := dep.Render(ctx, "default", installOpts.Namespace, vals)
if err != nil {
return err
}
Expand Down

0 comments on commit 9cc0613

Please sign in to comment.