Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add go operator #7

Merged
merged 27 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1fd848b
Local dev, add codeowners file
as51340 Jul 23, 2024
56f10a7
Go path
as51340 Jul 23, 2024
8abc3c6
Return helm-charts
as51340 Jul 23, 2024
0db627b
Return license
as51340 Jul 23, 2024
bb640db
readme modification
as51340 Jul 23, 2024
d812ea2
Return docs
as51340 Jul 23, 2024
73a7ba8
Go API
as51340 Jul 23, 2024
3f681f1
Generated spec for Memgraph HA
as51340 Jul 24, 2024
f237030
Basic version of the controller
as51340 Jul 26, 2024
711d5a9
Add statefulset for coordinators
as51340 Aug 7, 2024
f95a284
Add reconciliation of data instances
as51340 Aug 7, 2024
50dd4e7
Add reconciliation of coordinator services
as51340 Aug 7, 2024
2fd4072
Add reconciliation of data instances services
as51340 Aug 7, 2024
54bedd8
Split services and stateful sets into separate files
as51340 Aug 7, 2024
bd52abb
Delete unused controller tests
as51340 Aug 7, 2024
d999c68
Added setup job reconciliation
as51340 Aug 7, 2024
f7d33eb
Resources created, trying to manage the cluster. Issue with PVC and s…
as51340 Aug 8, 2024
bfcbd25
Cluster can be started, license info next
as51340 Aug 8, 2024
d9b3f88
Load license from secrets, cluster working
as51340 Aug 8, 2024
8b7a998
Ports deduplication, added secrets to data instances
as51340 Aug 8, 2024
393e3c4
Improve docs and cluster setup job
as51340 Aug 8, 2024
9df216a
Merge branch 'main' into add-go-operator
as51340 Aug 8, 2024
1c96670
Abstracted image config. Improved setup logging. Don't requeue at the…
as51340 Aug 9, 2024
84188dc
Fix slow startup
as51340 Aug 9, 2024
c948168
Add pre-commit go hooks
as51340 Aug 9, 2024
80a614b
Add pre-commit go hooks
as51340 Aug 9, 2024
be5cb08
Add pre-commit go hooks
as51340 Aug 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
# Ignore build and test binaries.
bin/
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
as51340
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ bin
*.swp
*.swo
*~

./manager
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "helm-charts"]
path = helm-charts
url = https://github.com/memgraph/helm-charts.git
url = https://github.com/memgraph/helm-charts.git
branch = main
40 changes: 40 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
run:
deadline: 5m
allow-parallel-runners: true

issues:
# don't skip warning about doc comments
# don't exclude the default set of lint
exclude-use-default: false
# restore some of the defaults
# (fill in the rest as needed)
exclude-rules:
- path: "api/*"
linters:
- lll
- path: "internal/*"
linters:
- dupl
- lll
linters:
disable-all: true
enable:
- dupl
- errcheck
- exportloopref
- goconst
- gocyclo
- gofmt
- goimports
- gosimple
- govet
- ineffassign
- lll
- misspell
- nakedret
- prealloc
- staticcheck
- typecheck
- unconvert
- unparam
- unused
8 changes: 7 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
Expand All @@ -10,3 +10,9 @@ repos:
- id: mixed-line-ending
- id: check-merge-conflict
- id: detect-private-key

- repo: https://github.com/tekwizely/pre-commit-golang
rev: v1.0.0-rc.1
hooks:
- id: go-mod-tidy
- id: go-fmt
36 changes: 31 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,33 @@
# Build the manager binary
FROM quay.io/operator-framework/helm-operator:v1.35.0
FROM golang:1.22 AS builder
ARG TARGETOS
ARG TARGETARCH

ENV HOME=/opt/helm
COPY watches.yaml ${HOME}/watches.yaml
COPY helm-charts ${HOME}/helm-charts
WORKDIR ${HOME}
WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download

# Copy the go source
COPY cmd/main.go cmd/main.go
COPY api/ api/
COPY internal/controller/ internal/controller/

# Build
# the GOARCH has not a default value to allow the binary be built according to the host where the command
# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO
# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore,
# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform.
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager cmd/main.go

# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM gcr.io/distroless/static:nonroot
WORKDIR /
COPY --from=builder /workspace/manager .
USER 65532:65532

ENTRYPOINT ["/manager"]
Loading
Loading