Skip to content

Commit d0081ed

Browse files
committed
Merge remote-tracking branch 'origin' into patroni-pod-monitor
2 parents 05c7caa + a6ff2ae commit d0081ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1858
-2466
lines changed

.github/workflows/latest.yaml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,22 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Checkout
13-
uses: actions/checkout@v2
13+
uses: actions/checkout@v4
1414

1515
- name: Docker Login
16-
uses: docker/login-action@v1
16+
uses: docker/login-action@v3
1717
with:
1818
registry: ${{ secrets.DOCKER_REGISTRY }}
1919
username: ${{ secrets.DOCKER_REGISTRY_USER }}
2020
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
2121

22+
- name: Ensure Go Version
23+
uses: actions/setup-go@v4
24+
with:
25+
go-version-file: 'go.mod'
26+
2227
- name: Lint
23-
uses: golangci/golangci-lint-action@v2
28+
uses: golangci/golangci-lint-action@v4
2429
with:
2530
args: -p bugs -p unused --timeout=5m
2631

@@ -30,6 +35,6 @@ jobs:
3035
make docker-build
3136
make docker-push
3237
33-
- uses: release-drafter/release-drafter@v5
38+
- uses: release-drafter/release-drafter@v6
3439
env:
3540
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/pull_request.yaml

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,25 @@ on:
88
jobs:
99
build:
1010
runs-on: ubuntu-latest
11+
env:
12+
docker_registry_token: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
1113
steps:
1214
- name: Checkout
13-
uses: actions/checkout@v2
15+
uses: actions/checkout@v3
1416

1517
- name: Ensure Go Version
16-
uses: actions/setup-go@v3
18+
uses: actions/setup-go@v4
1719
with:
1820
go-version-file: 'go.mod'
1921

2022
- name: Lint
21-
uses: golangci/golangci-lint-action@v3
23+
uses: golangci/golangci-lint-action@v4
2224
with:
2325
args: -p bugs -p unused --timeout=5m
2426

2527
- name: Get Kubebuilder Version
2628
id: get-kubebuilder-version
27-
run: echo "::set-output name=version::$(make kubebuilder-version-ci)"
29+
run: echo "version=$(make kubebuilder-version-ci)" >> $GITHUB_OUTPUT
2830
shell: bash
2931

3032
- name: Ensure etcd
@@ -54,17 +56,13 @@ jobs:
5456
- name: Run tests
5557
run: make test
5658

57-
- name: Figure out if running fork PR
58-
id: fork
59-
run: '["${{ secrets.DOCKER_REGISTRY_TOKEN }}" == ""] && echo "::set-output name=is_fork_pr::true" || echo "::set-output name=is_fork_pr::false"'
60-
6159
- name: Docker Login
62-
uses: docker/login-action@v1
60+
uses: docker/login-action@v3
6361
with:
6462
registry: ${{ secrets.DOCKER_REGISTRY }}
6563
username: ${{ secrets.DOCKER_REGISTRY_USER }}
6664
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
67-
if: steps.fork.outputs.is_fork_pr == 'false'
65+
if: ${{ env.docker_registry_token != '' }}
6866

6967
- name: Build Docker image
7068
run: |
@@ -76,4 +74,4 @@ jobs:
7674
# pull request images are prefixed with 'pr' to prevent them from overriding released images
7775
export DOCKER_TAG=pr-$(echo ${GITHUB_HEAD_REF} | tr '/' '-')
7876
make docker-push
79-
if: steps.fork.outputs.is_fork_pr == 'false'
77+
if: ${{ env.docker_registry_token != '' }}

.github/workflows/release.yaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,23 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Checkout
13-
uses: actions/checkout@v2
13+
uses: actions/checkout@v3
1414

1515
- name: Docker Login
16-
uses: docker/login-action@v1
16+
uses: docker/login-action@v3
1717
with:
1818
registry: ${{ secrets.DOCKER_REGISTRY }}
1919
username: ${{ secrets.DOCKER_REGISTRY_USER }}
2020
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
2121

22+
23+
- name: Ensure Go Version
24+
uses: actions/setup-go@v4
25+
with:
26+
go-version-file: 'go.mod'
27+
2228
- name: Lint
23-
uses: golangci/golangci-lint-action@v2
29+
uses: golangci/golangci-lint-action@v4
2430
with:
2531
args: -p bugs -p unused --timeout=5m
2632

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ bin
2424
*~
2525

2626
# control-plane kubeconfig file
27-
*kubeconfig
27+
kubeconfig
28+
kubeconfig-ctrl
29+
kubeconfig-svc
2830

2931
# helm files
3032
charts/postgreslet/Chart.lock

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG baseImage="golang:1.20"
1+
ARG baseImage="golang:1.22"
22
# Build the manager binary
33
FROM ${baseImage} as builder
44

@@ -18,7 +18,7 @@ RUN make
1818

1919
# Start obj-cache
2020
# https://medium.com/windmill-engineering/tips-tricks-for-making-your-golang-container-builds-10x-faster-4cc618a43827
21-
FROM golang:1.20 as obj-cache
21+
FROM golang:1.22 as obj-cache
2222
COPY --from=builder /root/.cache /root/.cache
2323

2424
# Use distroless as minimal base image to package the manager binary

Makefile

Lines changed: 80 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ else
99
GOBIN=$(shell go env GOBIN)
1010
endif
1111

12-
# for version informations in the binary
12+
# for version information in the binary
1313
SHA := $(shell git rev-parse --short=8 HEAD)
1414
GITVERSION := $(shell git describe --long --all)
1515
BUILDDATE := $(shell date -Iseconds)
1616
VERSION := $(or ${DOCKER_TAG},latest)
17+
LOCALBIN ?= $(shell pwd)/bin
18+
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
19+
CONTROLLER_TOOLS_VERSION ?= v0.14.0
1720

1821
# Postgres operator variables for YAML download
19-
POSTGRES_OPERATOR_VERSION ?= v1.6.0
22+
POSTGRES_OPERATOR_VERSION ?= v1.11.0
2023
POSTGRES_OPERATOR_URL ?= https://raw.githubusercontent.com/zalando/postgres-operator/$(POSTGRES_OPERATOR_VERSION)/manifests
2124
POSTGRES_CRD_URL ?= https://raw.githubusercontent.com/zalando/postgres-operator/$(POSTGRES_OPERATOR_VERSION)/charts/postgres-operator/crds/postgresqls.yaml
2225

@@ -53,26 +56,26 @@ run: generate fmt vet manifests install-configmap-sidecars install-crd-cwnp
5356
-port-range-size 8000
5457

5558
# Install CRDs into a cluster
56-
install: manifests
57-
kustomize build config/crd | kubectl --kubeconfig kubeconfig apply -f -
59+
localkube-install-crd: manifests
60+
kubectl kustomize config/crd | kubectl --kubeconfig kubeconfig-ctrl apply -f -
5861

59-
# Uninstall CRDs from a cluster
60-
uninstall: manifests
61-
kustomize build config/crd | kubectl --kubeconfig kubeconfig delete -f -
62+
# # Uninstall CRDs from a cluster
63+
# localkube-uninstall: manifests
64+
# kubectl kustomize config/crd | kubectl --kubeconfig kubeconfig-ctrl delete -f -
6265

6366
# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
64-
deploy: install-crd-cwnp manifests secret kind-load-image
65-
cd config/manager && kustomize edit set image controller=${IMG}:${VERSION}
66-
kustomize build config/default | kubectl apply -f -
67+
deploy: install-crd-cwnp manifests secret localkube-load-image
68+
cd config/manager && kubectl kustomize edit set image controller=${IMG}:${VERSION}
69+
kubectl kustomize config/default | kubectl apply -f -
6770

6871
# clean up deployed resources in the configured Kubernetes cluster in ~/.kube/config
6972
cleanup: manifests
70-
cd config/manager && kustomize edit set image controller=${IMG}:${VERSION}
71-
kustomize build config/default | kubectl delete -f -
73+
cd config/manager && kubectl kustomize edit set image controller=${IMG}:${VERSION}
74+
kubectl kustomize config/default | kubectl delete -f -
7275

7376
# Generate manifests e.g. CRD, RBAC etc.
7477
manifests: controller-gen
75-
$(CONTROLLER_GEN) crd rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
78+
$(CONTROLLER_GEN) +crd:generateEmbeddedObjectMeta=true paths="./..." +output:dir=config/crd/bases
7679

7780
# Run go fmt against code
7881
fmt:
@@ -106,25 +109,18 @@ cacheobjs: cacheobjs-daily-base
106109
docker-push:
107110
docker push ${IMG}:${VERSION}
108111

109-
kind-load-image: cacheobjs
110-
kind load docker-image ${IMG}:${VERSION} -v 1
112+
localkube-load-image: cacheobjs
113+
kind load docker-image --name svc ${IMG}:${VERSION} -v 1
111114

112115
# find or download controller-gen
113116
# download controller-gen if necessary
114-
controller-gen:
115-
ifeq (, $(shell which controller-gen))
116-
@{ \
117-
set -e ;\
118-
CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
119-
cd $$CONTROLLER_GEN_TMP_DIR ;\
120-
go mod init tmp ;\
121-
go install sigs.k8s.io/controller-tools/cmd/[email protected] ;\
122-
rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
123-
}
124-
CONTROLLER_GEN=$(GOBIN)/controller-gen
125-
else
126-
CONTROLLER_GEN=$(shell which controller-gen)
127-
endif
117+
.PHONY: controller-gen
118+
controller-gen: $(CONTROLLER_GEN)
119+
$(CONTROLLER_GEN): $(LOCALBIN)
120+
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
121+
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
122+
$(LOCALBIN):
123+
mkdir -p $(LOCALBIN)
128124

129125
# Todo: Fix two metrics-addr. Not read right now.
130126
configmap:
@@ -146,8 +142,8 @@ svc-postgres-operator-yaml:
146142
-f $(POSTGRES_OPERATOR_URL)/api-service.yaml \
147143
--dry-run=client -o yaml > external/svc-postgres-operator.yaml
148144

149-
crd-postgresql-yaml:
150-
kubectl apply -f $(POSTGRES_CRD_URL) --dry-run=client -o yaml > external/crd-postgresql.yaml
145+
# crd-postgresql-yaml:
146+
# kubectl apply -f $(POSTGRES_CRD_URL) --dry-run=client -o yaml > external/crd-postgresql.yaml
151147

152148
secret:
153149
@{ \
@@ -160,38 +156,30 @@ secret:
160156
kubectl create secret generic postgreslet -n $$NS --from-file $$SECRET_DIR/ --dry-run=client -o yaml | kubectl apply -f - ;\
161157
}
162158

163-
create-postgres:
164-
kubectl create ns metal-extension-cloud --dry-run=client --save-config -o yaml | kubectl --kubeconfig kubeconfig apply -f -
165-
kubectl --kubeconfig kubeconfig apply -f config/samples/complete.yaml
166-
167-
delete-postgres:
168-
kubectl --kubeconfig kubeconfig delete -f config/samples/complete.yaml
169-
170-
helm-clean:
171-
rm -f charts/postgreslet/Chart.lock
172-
rm -f charts/postgreslet/charts/*
159+
localkube-create-postgres:
160+
kubectl create ns metal-extension-cloud --dry-run=client --save-config -o yaml | kubectl --kubeconfig kubeconfig-ctrl apply -f -
161+
kubectl --kubeconfig kubeconfig-ctrl apply -f config/samples/complete.yaml
173162

174-
helm:
175-
helm dependency build charts/postgreslet/
176-
helm package charts/postgreslet/
163+
localkube-delete-postgres:
164+
kubectl --kubeconfig kubeconfig-ctrl delete -f config/samples/complete.yaml
177165

178166
test-cwnp:
179167
./hack/test-cwnp.sh
180168

181-
install-crd-cwnp:
182-
kubectl apply -f https://raw.githubusercontent.com/metal-stack/firewall-controller/master/config/crd/bases/metal-stack.io_clusterwidenetworkpolicies.yaml
183-
kubectl create ns firewall --dry-run=client --save-config -o yaml | kubectl apply -f -
169+
localkube-install-crd-cwnp:
170+
kubectl apply --kubeconfig ./kubeconfig-svc -f https://raw.githubusercontent.com/metal-stack/firewall-controller/master/config/crd/bases/metal-stack.io_clusterwidenetworkpolicies.yaml
171+
kubectl create ns firewall --kubeconfig ./kubeconfig-svc --dry-run=client --save-config -o yaml | kubectl apply --kubeconfig ./kubeconfig-svc -f -
184172

185-
uninstall-crd-cwnp:
186-
kubectl delete ns firewall
187-
kubectl delete -f https://raw.githubusercontent.com/metal-stack/firewall-controller/master/config/crd/bases/metal-stack.io_clusterwidenetworkpolicies.yaml
173+
# localkube-uninstall-crd-cwnp:
174+
# kubectl delete ns firewall
175+
# kubectl delete -f https://raw.githubusercontent.com/metal-stack/firewall-controller/master/config/crd/bases/metal-stack.io_clusterwidenetworkpolicies.yaml
188176

189-
configmap-sidecars:
190-
helm template postgreslet --namespace postgreslet-system charts/postgreslet --show-only templates/configmap-sidecars.yaml > external/test/configmap-sidecars.yaml
177+
# configmap-sidecars:
178+
# helm template postgreslet --namespace postgreslet-system charts/postgreslet --show-only templates/configmap-sidecars.yaml > external/test/configmap-sidecars.yaml
191179

192-
install-configmap-sidecars:
193-
kubectl create ns postgreslet-system --dry-run=client --save-config -o yaml | kubectl apply -f -
194-
kubectl apply -f external/test/configmap-sidecars.yaml
180+
# install-configmap-sidecars:
181+
# kubectl create ns postgreslet-system --dry-run=client --save-config -o yaml | kubectl apply -f -
182+
# kubectl apply -f external/test/configmap-sidecars.yaml
195183

196184
# Todo: Add release version when the changes in main branch are released
197185
crd-cwnp-for-testing:
@@ -213,42 +201,51 @@ endif
213201
kubebuilder-version-ci:
214202
@echo ${KUBEBUILDER_VERSION}
215203

216-
two-kind-clusters:
204+
localkube-setup:
205+
################################################################################
206+
# #
207+
# Control Cluster #
208+
# #
209+
################################################################################
217210
#
218-
## control-plane-cluster
219-
########################
220-
kind create cluster --name ctrl --kubeconfig ./kubeconfig
221-
container_ip=$$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 'ctrl-control-plane') ;\
222-
kubectl --kubeconfig=kubeconfig config set-cluster 'kind-ctrl' --server="https://$${container_ip}:6443"
223-
make install
224-
make create-postgres
211+
make localkube-ctrl
225212
#
226-
## service-cluster
227-
########################
228-
kind create cluster
229-
sed 's/z.Spec.Volume.StorageClass/\/\/z.Spec.Volume.StorageClass/' -i api/v1/postgres_types.go
230-
make kind-load-image
231-
sed 's/\/\/z.Spec.Volume.StorageClass/z.Spec.Volume.StorageClass/' -i api/v1/postgres_types.go
232-
kubectl create ns postgreslet-system --dry-run=client --save-config -o yaml | kubectl apply -f -
233-
make install-crd-cwnp
234-
make install-crd-servicemonitor
235-
# helm repo add metal-stack https://helm.metal-stack.io # stable repo
236-
# helm upgrade --install postgreslet metal-stack/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig
237-
helm repo add metal-stack-30 https://helm.metal-stack.io/pull_requests/custom-operator-image # PR repo
238-
helm upgrade --install postgreslet metal-stack-30/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig
213+
################################################################################
214+
# #
215+
# Service Cluster #
216+
# #
217+
################################################################################
218+
#
219+
make localkube-svc
239220

240-
destroy-two-kind-clusters:
221+
localkube-ctrl:
222+
kind create cluster --name ctrl --kubeconfig ./kubeconfig-ctrl --image kindest/node:v1.24.15
223+
container_ip=$$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 'ctrl-control-plane') ;\
224+
kubectl --kubeconfig=kubeconfig-ctrl config set-cluster 'kind-ctrl' --server="https://$${container_ip}:6443"
225+
make localkube-install-crd
226+
make localkube-create-postgres
227+
228+
localkube-svc:
229+
kind create cluster --name svc --kubeconfig ./kubeconfig-svc --image kindest/node:v1.24.15
230+
# make localkube-load-image
231+
kubectl create ns postgreslet-system --dry-run=client --save-config -o yaml --kubeconfig ./kubeconfig-svc | kubectl apply --kubeconfig ./kubeconfig-svc -f -
232+
make localkube-install-crd-cwnp
233+
make localkube-install-crd-servicemonitor
234+
make localkube-reinstall-postgreslet
235+
236+
localkube-teardown:
241237
kind delete cluster --name ctrl
242-
kind delete cluster --name kind
238+
kind delete cluster --name svc
243239

244-
install-crd-servicemonitor:
245-
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
240+
localkube-install-crd-servicemonitor:
241+
kubectl apply --kubeconfig ./kubeconfig-svc -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
242+
kubectl apply --kubeconfig ./kubeconfig-svc -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
246243

247-
reinstall-postgreslet: kind-load-image
244+
localkube-reinstall-postgreslet: localkube-load-image
248245
# helm repo add metal-stack https://helm.metal-stack.io # stable repo
249-
# helm upgrade --install postgreslet metal-stack/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig
246+
# helm upgrade --install postgreslet metal-stack/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig
250247
helm repo add metal-stack-30 https://helm.metal-stack.io/pull_requests/custom-operator-image # PR repo
251-
helm upgrade --install postgreslet metal-stack-30/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig
248+
helm upgrade --install postgreslet metal-stack-30/postgreslet --namespace postgreslet-system --values svc-cluster-values.yaml --set-file controlplaneKubeconfig=kubeconfig-ctrl --kubeconfig ./kubeconfig-svc
252249

253250
lint:
254251
golangci-lint run -p bugs -p unused --timeout=5m

0 commit comments

Comments
 (0)