Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 7 additions & 0 deletions build/Dockerfile.business-operator
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ RUN CGO_ENABLED=0 go build -o app ./cmd/business-operator

FROM alpine:3.20

RUN addgroup -g 1000 operatorgroup && \
adduser -D -u 1000 -G operatorgroup operatoruser

WORKDIR /app

COPY --from=builder /app/app .

USER 1000:1000

CMD ["./app"]
2 changes: 2 additions & 0 deletions deploy/k8s/business/business-configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ data:
BUSINESS_HTTP_SERVER_ALLOWED_METHODS: "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS"
BUSINESS_HTTP_SERVER_ALLOWED_HEADERS: "Origin,Content-Type,Accept,Authorization"
BUSINESS_HTTP_SERVER_EXPOSE_HEADERS: "Content-Length"
REDIS_HOST: "redis"
REDIS_PORT: "6379"
20 changes: 20 additions & 0 deletions deploy/k8s/business/business-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,26 @@ spec:
name: share-bite-business-config
- secretRef:
name: share-bite-secrets
env:
- name: POSTGRES_HOST
value: share-bite-cnpg-rw
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: dbname
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: password
readinessProbe:
httpGet:
path: /business/ready
Expand Down
21 changes: 21 additions & 0 deletions deploy/k8s/guest/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ spec:
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
containers:
Expand All @@ -36,6 +37,26 @@ spec:
name: guest-api-config
- secretRef:
name: share-bite-secrets
env:
- name: POSTGRES_HOST
value: share-bite-cnpg-rw
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: dbname
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: share-bite-cnpg-app
key: password
livenessProbe:
httpGet:
path: /health
Expand Down
15 changes: 15 additions & 0 deletions deploy/k8s/infra/cnpg.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: share-bite-cnpg
namespace: share-bite-local
spec:
imageName: ghcr.io/cloudnative-pg/postgresql:18
Comment thread
coderabbitai[bot] marked this conversation as resolved.
instances: 2
enableSuperuserAccess: true
bootstrap:
initdb:
database: share_bite
owner: share
storage:
size: 2Gi
4 changes: 3 additions & 1 deletion deploy/k8s/infra/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ kind: Kustomization
resources:
- namespace.yaml
- configmap.yaml
- postgres.yaml
- cnpg.yaml
# for StatefulSet - use postgres.yaml instead of cnpg.yaml
#- postgres.yaml
- redis.yaml
- secret.yaml
- migrator-job.yaml
36 changes: 36 additions & 0 deletions deploy/k8s/infra/migrator-job.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ spec:
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
Expand All @@ -41,6 +42,23 @@ spec:
name: share-bite-infra-config
- secretRef:
name: share-bite-secrets
env:
- name: POSTGRES_HOST
value: share-bite-cnpg-rw
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_DB
value: share_bite
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: share-bite-cnpg-superuser
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: share-bite-cnpg-superuser
key: password
Comment thread
coderabbitai[bot] marked this conversation as resolved.
containers:
- name: migrator
image: migrator:latest
Expand All @@ -50,6 +68,7 @@ spec:
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
Expand All @@ -58,3 +77,20 @@ spec:
name: share-bite-infra-config
- secretRef:
name: share-bite-secrets
env:
- name: POSTGRES_HOST
value: share-bite-cnpg-rw
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_DB
value: share_bite
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: share-bite-cnpg-superuser
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: share-bite-cnpg-superuser
key: password
4 changes: 2 additions & 2 deletions deploy/k8s/operators/business/example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: business.sharebite.dev/v1alpha1
kind: BusinessAppProfile
metadata:
name: business-api-example
namespace: default
namespace: share-bite-local
spec:
replicas: 2
replicas: 3
enabled: true
deploymentName: business-api
7 changes: 7 additions & 0 deletions deploy/k8s/operators/business/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: share-bite-local
resources:
- crd.yaml
- operator-deployment.yaml
- rbac.yaml
1 change: 0 additions & 1 deletion deploy/k8s/operators/business/operator-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: business-operator
namespace: default
spec:
replicas: 1
selector:
Expand Down
4 changes: 4 additions & 0 deletions deploy/k8s/operators/guest/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- crd.yaml
6 changes: 6 additions & 0 deletions deploy/k8s/operators/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.29/releases/cnpg-1.29.0.yaml
- ./business
- ./guest
4 changes: 3 additions & 1 deletion internal/business/handler/business/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,9 @@ func (h *handler) ready(c *gin.Context) {

_, err := h.service.ListLocationTags(ctx)
if err != nil {
c.JSON(http.StatusServiceUnavailable, gin.H{"error": "service not ready"})
c.JSON(http.StatusServiceUnavailable, gin.H{
"error": "service not ready",
})
Comment thread
coderabbitai[bot] marked this conversation as resolved.
return
}

Expand Down
18 changes: 18 additions & 0 deletions migrations/20260617205326_grant_business_permissions.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-- +goose Up
GRANT USAGE ON SCHEMA business TO share;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA business TO share;

GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA business TO share;

ALTER DEFAULT PRIVILEGES IN SCHEMA business GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO share;

ALTER DEFAULT PRIVILEGES IN SCHEMA business GRANT USAGE, SELECT ON SEQUENCES TO share;


-- +goose Down
ALTER DEFAULT PRIVILEGES IN SCHEMA business REVOKE SELECT, INSERT, UPDATE, DELETE ON TABLES FROM share;
ALTER DEFAULT PRIVILEGES IN SCHEMA business REVOKE USAGE, SELECT ON SEQUENCES FROM share;

REVOKE SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA business FROM share;
REVOKE USAGE, SELECT ON ALL SEQUENCES IN SCHEMA business FROM share;
REVOKE USAGE ON SCHEMA business FROM share;
Loading