Compare commits

...

130 Commits

Author SHA1 Message Date
mrtz 8de6e79647 fix(atlantis): Use prod-openfga, prod-rabbitmq, staging-sorcerer and staging-plume 2025-12-04 21:23:47 +01:00
mrtz bcbb04d1f7 fix(atlantis/sorcerer): Update atlantis.beta -> maps.dev for staging 2025-12-04 21:23:47 +01:00
mrtz f9504c95e3 fix(sorcerer/atlantis): Remove beta-sorcerer 2025-12-04 21:23:47 +01:00
mrtz 7057806e01 feat(atlantis): Add beta and switch staging to maps.dev 2025-12-04 21:23:46 +01:00
mrtz de5ce17f28 feat(sorcerer): Add beta instance 2025-12-04 21:23:46 +01:00
Radovan Bast a47cf689fb ci: makai 2025-12-04 13:53:55 +00:00
Radovan Bast 888daa7f1e ci: makai 2025-12-04 12:05:13 +00:00
Radovan Bast eaeb988aab ci: makai 2025-12-03 15:28:28 +00:00
Radovan Bast edd3df84e5 ci: makai 2025-12-03 14:43:38 +00:00
Radovan Bast 526e24cc66 ci: makai 2025-12-03 14:19:37 +00:00
Radovan Bast 11d4b37f4d ci: makai 2025-12-03 13:30:34 +00:00
Radovan Bast cabfceadd1 ci: makai 2025-12-03 10:48:44 +00:00
Radovan Bast 2bfeaf7d67 ci: makai 2025-12-03 10:35:37 +00:00
mrtz 1e1669fcd6 fix(drupal): Use dev image 2025-12-03 11:08:07 +01:00
simkir 3f3a4255b5 Add codex.dev.tos.obx to cert 2025-12-03 10:12:04 +01:00
simkir 877cc612a0 umami: View umami submit events from 2025-09-01
To see more submits in our dashboard
2025-12-03 08:54:46 +01:00
mrtz a18e7d2e23 fix: Add inital nexus and update drupal image 2025-12-02 21:27:05 +01:00
Radovan Bast de9388691a ci: makai 2025-12-02 15:12:40 +00:00
Radovan Bast 9c6a7e01f4 ci: makai 2025-12-02 14:05:41 +00:00
simkir ae4c7f3bb4 Add maps.dev.oceanbox.io to allowedOrigin
For sorcerer and itself, I guess
2025-12-02 14:36:45 +01:00
Moritz Jörg 4442bc923a fix(drupal): Persist whitelist 2025-12-02 14:34:30 +01:00
Moritz Jörg ddfd36fb3a fix(drupal): Switch image 2025-12-02 14:34:07 +01:00
juselius 46820439e9 fix: add ismael to headscale acl 2025-12-02 14:31:54 +01:00
simkir 64c081f629 Add maps.dev.oceanbox.io ing for staging
Doesn't hurt having it while we wait for the proper beta instance.
2025-12-02 14:29:00 +01:00
Radovan Bast c7958cbc6b ci: makai 2025-12-02 13:28:10 +00:00
Radovan Bast 730b84e469 ci: makai 2025-12-02 12:37:45 +00:00
Radovan Bast 2785bf7907 ci: makai 2025-12-02 12:28:18 +00:00
mrtz 72079fe81b fix(drupal): Correct ing 2025-12-02 12:01:15 +01:00
mrtz b58d457d90 fix(drupal): Fixup 2025-12-02 12:00:14 +01:00
mrtz 86d2d58c3c fix(drupal): Intial setup 2025-12-02 11:57:22 +01:00
Radovan Bast 5030b4b8c5 ci: makai 2025-12-02 10:08:42 +00:00
Radovan Bast 7f39e2baf7 ci: makai 2025-12-02 09:54:02 +00:00
Radovan Bast 052edfa4e4 ci: makai 2025-12-02 08:28:01 +00:00
juselius 9349978f6e ci: atlantis 2025-12-01 18:31:07 +00:00
juselius 7cf6cf1a55 ci: sorcerer 2025-12-01 18:31:04 +00:00
juselius 97d398c637 ci: codex 2025-12-01 18:31:02 +00:00
mrtz 297d998c96 ci: atlantis 2025-12-01 18:28:09 +00:00
Radovan Bast 14524fb308 ci: makai 2025-12-01 14:51:18 +00:00
Radovan Bast b4970a8550 ci: makai 2025-12-01 13:49:55 +00:00
juselius 7705fc228c ci: atlantis 2025-12-01 13:37:23 +00:00
juselius 12d2587e9b ci: sorcerer 2025-12-01 13:37:21 +00:00
juselius f030045694 ci: codex 2025-12-01 13:37:19 +00:00
stigrj 4898676dc5 ci: atlantis 2025-12-01 13:34:36 +00:00
juselius 21ffb79401 ci: codex 2025-12-01 13:15:40 +00:00
juselius e30bdc54be ci: sorcerer 2025-12-01 13:15:38 +00:00
juselius 677c37a6f7 ci: atlantis 2025-12-01 13:15:35 +00:00
mrtz fb19b12f08 ci: atlantis 2025-12-01 13:13:35 +00:00
Radovan Bast 22dadc5f98 ci: makai 2025-12-01 12:50:32 +00:00
Radovan Bast 01b9d06509 ci: makai 2025-12-01 12:27:30 +00:00
juselius cfd1d1b25d ci: codex 2025-11-30 11:39:52 +00:00
juselius b347410856 ci: sorcerer 2025-11-30 11:39:49 +00:00
juselius 5bcd21db11 ci: atlantis 2025-11-30 11:39:46 +00:00
juselius 86520433ea ci: atlantis 2025-11-30 11:37:00 +00:00
mrtz 6ec1c19f80 Merge branch 'renovate/dragonfly-operator-1.x' into 'main'
Update dragonfly-operator Docker tag to v1.3.1

See merge request oceanbox/manifests!51
2025-11-30 10:10:15 +01:00
Renovate Bot fa0123336e Update dragonfly-operator Docker tag to v1.3.1 2025-11-30 08:57:43 +00:00
mrtz 7f476a4650 fix(gatus): Don't remove url 2025-11-29 18:16:46 +01:00
mrtz 90469dbf85 fix(gatus): No alters for vtn 2025-11-29 18:15:31 +01:00
mrtz d7bd0d50b5 fix(hs): Bump router version too 2025-11-29 16:40:24 +01:00
juselius abb3203eea ci: codex 2025-11-29 15:37:53 +00:00
juselius ad10efd78e ci: atlantis 2025-11-29 15:37:49 +00:00
juselius fdc4702fbd ci: sorcerer 2025-11-29 15:37:46 +00:00
simkir b2c41a7b0e ci: sorcerer 2025-11-29 15:34:02 +00:00
simkir 5e1024160a ci: codex 2025-11-29 15:33:58 +00:00
simkir 06bd4f3e80 ci: atlantis 2025-11-29 15:33:52 +00:00
mrtz 12360be8ba fix(sorcerer): Bump mem 2025-11-29 15:40:34 +01:00
mrtz 38b13658a9 fix(sorcerer): Change ingress 2025-11-29 15:37:42 +01:00
mrtz bb0256ff3d fix(sorcerer): Specify sc 2025-11-29 15:30:06 +01:00
mrtz 02497db6b2 fix(sorcerer): Correct pv secret 2025-11-29 15:25:23 +01:00
mrtz 9040a373a6 fix(sorcerer): No annotation on rossby 2025-11-29 15:24:20 +01:00
mrtz 51bb191001 fix(sorcerer): sorcerer.oceanbox.io isntead of adm.vtn.obx 2025-11-29 15:20:25 +01:00
mrtz da271376ba fix(sorcerer): Remove affinity for rossby 2025-11-29 15:18:42 +01:00
mrtz 62b13cbaa9 fix(sorcerer): Kustomize per cluster 2025-11-29 14:59:05 +01:00
mrtz 77a5af1c37 feat(sorcerer): Add prod for rossby 2025-11-29 14:56:28 +01:00
mrtz 4ef99c0ae4 fix(sorcerer): Typo 2025-11-29 14:49:26 +01:00
mrtz 654bf18126 fix(nfs): Disable on ekman 2025-11-29 14:46:16 +01:00
mrtz 39e393e222 fix(sorcerer): Add prod rossby 2025-11-29 14:34:05 +01:00
juselius 71d9109a7b ci: sorcerer 2025-11-29 11:47:33 +00:00
juselius f09ef6fe77 ci: codex 2025-11-29 11:47:30 +00:00
juselius 2c6d303ba3 ci: atlantis 2025-11-29 11:47:27 +00:00
stigrj 902cb061af ci: atlantis 2025-11-29 11:41:56 +00:00
Radovan Bast db4e3ce144 ci: makai 2025-11-28 14:34:32 +00:00
Radovan Bast 1301ce012f ci: makai 2025-11-28 13:13:17 +00:00
juselius 9554e8694a ci: sorcerer 2025-11-28 12:19:21 +00:00
juselius 6623c4557e ci: codex 2025-11-28 12:19:18 +00:00
juselius 4f176674ac ci: atlantis 2025-11-28 12:19:14 +00:00
mrtz e093484918 ci: atlantis 2025-11-28 12:14:56 +00:00
mrtz 5541565c4b ci: sorcerer 2025-11-28 11:53:43 +00:00
mrtz ed531af09a ci: atlantis 2025-11-28 11:53:40 +00:00
mrtz cb5abae670 ci: codex 2025-11-28 11:12:13 +00:00
juselius 28f3c853a4 ci: codex 2025-11-28 09:25:16 +00:00
juselius 36d4305317 ci: sorcerer 2025-11-28 09:25:13 +00:00
juselius bea2855df2 ci: atlantis 2025-11-28 09:25:10 +00:00
simkir fff895eb64 ci: atlantis 2025-11-28 09:22:19 +00:00
juselius b1bfe88fc7 ci: sorcerer 2025-11-27 17:57:39 +00:00
juselius fe1e97d484 ci: atlantis 2025-11-27 17:57:37 +00:00
juselius 0d68590639 ci: codex 2025-11-27 17:57:34 +00:00
stigrj bc2f2012b0 ci: atlantis 2025-11-27 17:51:44 +00:00
stigrj 0b32b0261c ci: sorcerer 2025-11-27 17:51:41 +00:00
simkir 6d1758ca52 ci: codex 2025-11-27 14:07:03 +00:00
simkir 7a87a49108 Codex: Set correct ingress cluster-issuer 2025-11-27 14:48:38 +01:00
simkir 817e9ba478 Switch codex ingress issuer to cluster-ca 2025-11-27 14:35:27 +01:00
juselius 513f78d444 ci: atlantis 2025-11-27 13:19:14 +00:00
juselius dbd0ae7b72 ci: sorcerer 2025-11-27 13:19:11 +00:00
juselius e86436d4c7 ci: codex 2025-11-27 13:19:09 +00:00
mrtz 01c3c3880d ci: atlantis 2025-11-27 13:12:08 +00:00
simkir f8e18cfc41 Remove tailscale dns from codex tls hosts 2025-11-27 13:54:08 +01:00
simkir 163452b8c6 Try adding tailscale dns hostname for codex 2025-11-27 13:50:30 +01:00
simkir 24977a9a77 Add codex.dev.oceanbox.io to headscale dns 2025-11-27 13:50:30 +01:00
Radovan Bast 955fcfc073 ci: makai 2025-11-27 12:40:14 +00:00
simkir 2520f06b3b ci: codex 2025-11-27 12:34:44 +00:00
juselius 32b991e8e4 ci: sorcerer 2025-11-27 12:25:38 +00:00
juselius 2d9318ce9d ci: atlantis 2025-11-27 12:25:35 +00:00
juselius 5f24664961 ci: codex 2025-11-27 12:25:31 +00:00
mrtz 4303b7c29f ci: atlantis 2025-11-27 12:22:30 +00:00
mrtz bdc618cf50 ci: sorcerer 2025-11-27 12:22:27 +00:00
simkir 5ddb1a0f8c Codex: Remove env vars 2025-11-27 13:16:48 +01:00
simkir 838c7f6b9d Codex: Fix kustomize staging deployment patch 2025-11-27 13:15:00 +01:00
Moritz Jörg 24ccf8ab1a fix(dapr): Undo dashboard ingress change 2025-11-27 12:55:20 +01:00
Moritz Jörg 17fd471973 chore(hs): Bump to next major stable 2025-11-27 12:54:04 +01:00
simkir 5089fb441b Codex: Fix kustomize staging patches 2025-11-27 12:44:18 +01:00
simkir 5a2954cc6a Codex: Fix kustomize staging deployment patch
Add envFrom key as whole, I guess
2025-11-27 12:20:12 +01:00
simkir 80c2c82e32 Codex: Include base in staging kustomize 2025-11-27 12:13:45 +01:00
simkir fd50da5b62 Set codex argo app project to atlantis 2025-11-27 11:11:04 +01:00
simkir b07cf0f6c8 Add manifests source to codex argo app 2025-11-27 11:07:58 +01:00
simkir 27218a7970 Merge branch 'simkir/codex' 2025-11-27 11:01:17 +01:00
simkir c007e2d796 ci: atlantis 2025-11-26 15:16:33 +00:00
simkir 67312b950c ci: sorcerer 2025-11-26 15:16:30 +00:00
Radovan Bast 67d46b0bda ci: makai 2025-11-26 11:46:49 +00:00
juselius 8f2233a608 fix: remove ekman*/rossby*.oceanbox.io from headscale dns. favor magicdns 2025-11-26 12:37:18 +01:00
Radovan Bast 43d4ad90d6 ci: makai 2025-11-26 10:52:30 +00:00
102 changed files with 1473 additions and 168 deletions
+3
View File
@@ -5,5 +5,8 @@ watch_file nix/sources.json
# Load .env file if it exists
dotenv_if_exists
# Set npins dir
export NPINS_DIRECTORY="nix"
# Activate development shell
use nix
+2 -2
View File
@@ -4,7 +4,7 @@ description: Atlantis map and simulation service
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: v1.33.0
version: v1.35.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1.33.0
appVersion: v1.35.2
+1 -1
View File
@@ -4,7 +4,7 @@
replicaCount: 1
image:
repository: registry.gitlab.com/oceanbox/poseidon/atlantis
tag: v1.33.0
tag: v1.35.2
pullPolicy: IfNotPresent
init:
enabled: false
+2 -5
View File
@@ -1,7 +1,6 @@
apiVersion: v2
name: codex
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
@@ -11,14 +10,12 @@ description: A Helm chart for Kubernetes
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.0.1
version: v1.35.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.0.0-alpha.1"
appVersion: "v1.35.2"
+12 -25
View File
@@ -4,22 +4,19 @@
# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
replicaCount: 1
# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
image:
repository: registry.gitlab.com/oceanbox/poseidon/codex
# This sets the pull policy for images.
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: v1.33.2
tag: v1.35.2
# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets:
- name: gitlab-pull-secret
# This is to override the chart name.
nameOverride: ""
fullnameOverride: ""
# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
serviceAccount:
# Specifies whether a service account should be created
@@ -31,47 +28,41 @@ serviceAccount:
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
# This is for setting Kubernetes Annotations to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
podAnnotations: {}
# This is for setting Kubernetes Labels to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
podLabels: {}
podSecurityContext:
fsGroup: 2000
securityContext:
capabilities:
drop:
- ALL
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1000
# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
service:
# This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
type: ClusterIP
# This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
port: 8085
# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress:
enabled: false
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
livenessProbe:
@@ -82,7 +73,6 @@ readinessProbe:
httpGet:
path: /
port: http
# This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
autoscaling:
enabled: false
@@ -90,7 +80,6 @@ autoscaling:
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
# Additional volumes on the output Deployment definition.
volumes: []
# - name: foo
@@ -105,7 +94,5 @@ volumeMounts: []
# readOnly: true
nodeSelector: {}
tolerations: []
affinity: {}
+2 -2
View File
@@ -4,7 +4,7 @@ description: A Helm chart for Kubernetes
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: v1.33.0
version: v1.35.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1.33.0
appVersion: v1.35.2
+1 -1
View File
@@ -5,7 +5,7 @@
replicaCount: 1
image:
repository: registry.gitlab.com/oceanbox/poseidon/sorcerer
tag: v1.33.0
tag: v1.35.2
pullPolicy: IfNotPresent
init:
enabled: false
+1 -1
View File
@@ -13,7 +13,7 @@ releases:
- name: dragonfly
namespace: dragonfly
chart: dragonfly/dragonfly-operator
version: v1.3.0
version: v1.3.1
condition: dragonfly.enabled
values:
- ../values/dragonfly/values/dragonfly.yaml.gotmpl
+43
View File
@@ -0,0 +1,43 @@
bases:
- ../envs/environments.yaml.gotmpl
repositories:
- name: stevehipwell
url: 'https://stevehipwell.github.io/helm-charts/'
commonLabels:
tier: system
releases:
- name: nexus3
namespace: nexus
chart: stevehipwell/nexus3
version: 5.9.0
condition: nexus.enabled
values:
- ../values/nexus/values/nexus.yaml.gotmpl
- ../values/nexus/values/nexus-{{ .Environment.Name }}.yaml.gotmpl
postRenderer: ../bin/kustomizer
postRendererArgs:
- ../values/nexus/kustomize/{{ .Environment.Name }}
missingFileHandler: Info
- name: manifests
namespace: nexus
chart: manifests
condition: nexus.enabled
missingFileHandler: Info
values:
- ../values/env.yaml
- ../values/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml
- ../values/nexus/env.yaml.gotmpl
- ../values/nexus/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml.gotmpl
hooks:
- events: [ prepare, cleanup ]
showlogs: true
command: ../bin/helmify
args:
- '{{`{{ if eq .Event.Name "prepare" }}build{{ else }}clean{{ end }}`}}'
- '{{`{{ .Release.Chart }}`}}'
- '{{`{{ .Environment.Name }}`}}'
- ../values/nexus/manifests
- manifests
+2 -2
View File
@@ -11,15 +11,15 @@ commonLabels:
releases:
- name: {{ .Environment.Name }}-sorcerer
namespace: {{ .Environment.Name }}-sorcerer
#chart: oceanbox/sorcerer
chart: ../charts/sorcerer
condition: sorcerer.enabled
values:
- ../values/sorcerer/values/values.yaml
- ../values/sorcerer/values/values-{{ .Environment.Name }}.yaml
- ../values/sorcerer/values/values-{{ .Environment.Name }}-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml
postRenderer: ../bin/kustomizer
postRendererArgs:
- ../values/sorcerer/kustomize/{{ .Environment.Name }}
- ../values/sorcerer/kustomize/{{ .Environment.Name }}-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}
missingFileHandler: Info
- name: manifests
namespace: {{ .Environment.Name }}-sorcerer
+2 -2
View File
@@ -3,8 +3,8 @@
"nixpkgs": {
"type": "Channel",
"name": "nixpkgs-unstable",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre883899.02f2cb8e0feb/nixexprs.tar.xz",
"hash": "0k4n6f873a4ls1mff6wck6z31kglgg8irwc5s3xsprrwbxdv7p58"
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre903996.59b6c96beacc/nixexprs.tar.xz",
"hash": "0b0yr9d1xyfwgpaj68bimsbjjbj7yis4whjvkrfdycfnasdf0gf0"
}
},
"version": 5
+3 -4
View File
@@ -25,17 +25,16 @@ pkgs.mkShellNoCC {
kubelogin-oidc
kubectl-rook-ceph
# linkerd
# other tools
step-cli
linkerd
# velero
velero
cmctl
# dapr
dapr-cli
];
ARGOCD_ENV_CLUSTER_NAME = "ekman";
ARGOCD_ENV_CLUSTER_NAME = "rossby";
HELM_GIT_ACCESS_TOKEN = "glpat-xxx";
}
+2
View File
@@ -72,6 +72,8 @@ spec:
server: https://kubernetes.default.svc
- namespace: headscale
server: https://kubernetes.default.svc
- namespace: drupal
server: https://kubernetes.default.svc
- namespace: otel
server: https://kubernetes.default.svc
- namespace: opentelemetry
@@ -0,0 +1,96 @@
{
"oidc": {
"issuer": "https://auth.oceanbox.io/realms/oceanbox",
"authorization_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/auth",
"token_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/token",
"jwks_uri": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/certs",
"userinfo_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/userinfo",
"end_session_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/logout",
"device_authorization_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/auth/device",
"clientId": "atlantis",
"clientSecret": "",
"scopes": [
"openid",
"email",
"offline_access",
"profile"
],
"audiences": [
"atlantis",
"atlantis_dev",
"sorcerer",
"sorcerer_dev"
]
},
"sso": {
"cookieDomain": ".oceanbox.io",
"cookieName": ".obx.beta",
"ttl": 12.0,
"signedOutRedirectUri": "https://maps.beta.oceanbox.io",
"realm": "atlantis",
"environment": "beta",
"keyStore": {
"kind": "azure",
"uri": "https://atlantis.blob.core.windows.net",
"key": "dataprotection-keys"
},
"keyVault": {
"kind": "azure",
"uri": "https://atlantisvault.vault.azure.net",
"key": "dataencryption-keys"
}
},
"fga": {
"apiUrl": "http://prod-openfga.openfga.svc.cluster.local:8080",
"apiKey": "",
"storeId": "01JKTZXMP7ANN4GG2P5W8Y56M6",
"modelId": "01JKTZYMCZZBVSBG66W27XMW0A"
},
"sentryUrl": "https://b6e03cfc8e247297b89217b09341b4cb@o4509530141622272.ingest.de.sentry.io/4509530195492944",
"plainAuthUsers": [
{
"username": "admin",
"password": "en-to-tre-fire",
"groups": [ "/oceanbox" ],
"roles": [ "admin" ]
},
{
"username": "sorcerer",
"password": "fire tre to en",
"groups": [ "/oceanbox" ],
"roles": [ "admin" ]
},
{
"username": "archivist",
"password": "en-to-tre-fire",
"groups": [ "/oceanbox" ],
"roles": [ "admin" ]
}
],
"plume": "plume.ekman.oceanbox.io",
"redis": "prod-atlantis-redis-master:6379",
"objectStore": "https://atlantis.blob.core.windows.net",
"connString": "Username=postgres;Password=secret;Host=localhost;Port=5432;Database=app;Pooling=true;",
"sorcerer" : "https://sorcerer.ekman.oceanbox.io",
"allowedOrigins": [
"https://maps.dev.oceanbox.io",
],
"appName": "atlantis",
"appEnv": "beta",
"appNamespace": "atlantis",
"appVersion": "2.95.1",
"otelCollector": "http://opentelemetry-collector.otel.svc:4317",
"pubsubName": "pubsub",
"pubsubTopic": "hipster-atlantis",
"slurm": {
"baseUrl": "https://slurmrestd.ekman.oceanbox.io/",
"slurmApi": "slurm/v0.0.42/",
"dbdApi": "slurmdbd/v0.0.42/",
"accessToken": ""
},
"amqp": {
"auth": "user:hunny-bunny",
"host": "10.255.241.201:30673"
},
"fenceRadius": 1250.0
}
@@ -0,0 +1,2 @@
client-id=simen.kirkvik@tromso.serit.no:simkir-tilt-atlantis
secret=d9tInZ1XpeDAxD.DySv'*SB=P
@@ -0,0 +1,22 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: slurm-events
spec:
type: bindings.rabbitmq
version: v1
metadata:
- name: host
secretKeyRef:
name: prod-atlantis-rabbitmq
key: connString
- name: queueName
value: prod-slurm-job-events
- name: durable
value: true
- name: contentType
value: "application/json"
- name: route
value: /events/slurm
scopes:
- beta-atlantis
@@ -0,0 +1,20 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: configstore
spec:
type: configuration.redis
version: v1
metadata:
- name: redisHost
value: beta-atlantis-redis-master:6379
- name: redisUsername
value: default
- name: redisPassword
secretKeyRef:
name: beta-atlantis-redis
key: redis-password
- name: redisDB
value: "1"
scopes:
- beta-atlantis
@@ -0,0 +1 @@
OIDC_CLIENT_SECRET=KOJ6bDHzE5vdyfSrzgwLjtM5PzA809Zm
@@ -0,0 +1,10 @@
- op: add
path: /spec/template/spec/containers/0/envFrom/-
value:
secretRef:
name: azure-keyvault
- op: add
path: /spec/template/spec/containers/0/envFrom/-
value:
secretRef:
name: prod-atlantis-env
@@ -0,0 +1,22 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: azure-keyvault
spec:
type: secretstores.azure.keyvault
version: v1
metadata:
- name: vaultName
value: atlantisvault
- name: azureTenantId
secretKeyRef:
name: azure-keyvault
key: AZURE_TENANT_ID
- name: azureClientId
secretKeyRef:
name: azure-keyvault
key: AZURE_CLIENT_ID
- name: azureClientSecret
secretKeyRef:
name: azure-keyvault
key: AZURE_CLIENT_SECRET
@@ -0,0 +1,24 @@
generatorOptions:
disableNameSuffixHash: true
configMapGenerator:
- name: beta-atlantis-appsettings
files:
- appsettings.json
patches:
- target:
group: apps
version: v1
kind: Deployment
path: deployment_patch.yaml
resources:
- ../base
- secrets.yaml
- rbac.yaml
- tracing.yaml
- bindings.yaml
- pubsub.yaml
- statestore.yaml
- subscriptions.yaml
- configurations.yaml
- secretstore.yaml
- keyvault.yaml
@@ -0,0 +1,52 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
spec:
version: v1
type: pubsub.rabbitmq
metadata:
- name: hostname
value: prod-rabbitmq.rabbitmq
- name: username
value: user
- name: password
secretKeyRef:
name: prod-atlantis-rabbitmq
key: rabbitmq-password
- name: protocol
value: amqp
- name: durable
value: true
- name: deletedWhenUnused
value: false
- name: autoAck
value: false
- name: deliveryMode
value: 1
- name: requeueInFailure
value: false
- name: prefetchCount
value: 0
- name: reconnectWait
value: 0
- name: concurrencyMode
value: parallel
- name: publisherConfirm
value: false
- name: backOffPolicy
value: exponential
- name: backOffInitialInterval
value: 100
- name: backOffMaxRetries
value: 16
- name: enableDeadLetter # Optional enable dead Letter or not
value: true
- name: maxLen # Optional max message count in a queue
value: 3000
- name: maxLenBytes # Optional maximum length in bytes of a queue.
value: 10485760
- name: exchangeKind
value: fanout
- name: clientName
value: "{appID}"
+40
View File
@@ -0,0 +1,40 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: beta-atlantis
namespace: beta-atlantis
rules:
- apiGroups:
- ""
resourceNames:
- beta-atlantis-appsettings
resources:
- configmaps
verbs:
- get
- watch
- apiGroups:
- ""
resourceNames:
- azure-keyvault
- beta-atlantis-redis
- slurm-access-token
resources:
- secrets
verbs:
- get
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: beta-atlantis
namespace: beta-atlantis
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: beta-atlantis
subjects:
- kind: ServiceAccount
name: beta-atlantis
namespace: beta-atlantis
@@ -0,0 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
annotations:
kyverno/clone: "true"
kyverno/env: "prod"
name: prod-atlantis-rabbitmq
type: Opaque
data:
@@ -0,0 +1,10 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: secretstore
spec:
type: secretstores.kubernetes
version: v1
metadata:
- name: defaultNamespace
value: prod-atlantis
@@ -0,0 +1,22 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: beta-atlantis-redis-master:6379
- name: redisUsername
value: default
- name: redisPassword
secretKeyRef:
name: beta-atlantis-redis
key: redis-password
- name: actorStateStore
value: "true"
- name: redisDB
value: "0"
scopes:
- beta-atlantis
@@ -0,0 +1,27 @@
apiVersion: dapr.io/v2alpha1
kind: Subscription
metadata:
name: hipster-events
spec:
topic: hipster
routes:
default: /events/hipster
pubsubname: pubsub
metadata:
queueType: quorum
scopes:
- beta-atlantis
---
apiVersion: dapr.io/v2alpha1
kind: Subscription
metadata:
name: inbox-events
spec:
topic: inbox
routes:
default: /events/inbox
pubsubname: pubsub
metadata:
queueType: quorum
scopes:
- beta-atlantis
@@ -0,0 +1,11 @@
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
spec:
tracing:
samplingRate: "1"
otel:
endpointAddress: "opentelemetry-collector.otel.svc.cluster.local:4317"
protocol: grpc
isSecure: false
@@ -26,7 +26,7 @@
"cookieDomain": ".oceanbox.io",
"cookieName": ".obx.staging",
"ttl": 12.0,
"signedOutRedirectUri": "https://atlantis.beta.oceanbox.io",
"signedOutRedirectUri": "https://maps.dev.oceanbox.io",
"realm": "atlantis",
"environment": "staging",
"keyStore": {
@@ -73,9 +73,10 @@
"connString": "Username=postgres;Password=secret;Host=localhost;Port=5432;Database=app;Pooling=true;",
"sorcerer" : "https://sorcerer.ekman.oceanbox.io",
"allowedOrigins": [
"https://atlantis.beta.oceanbox.io",
"https://maps.dev.oceanbox.io",
"https://atlantis.dev.oceanbox.io",
"https://atlantis.local.oceanbox.io:8080"
"https://atlantis.local.oceanbox.io:8080",
"https://maps.dev.oceanbox.io"
],
"appName": "atlantis",
"appEnv": "staging",
@@ -0,0 +1,81 @@
replicaCount: 1
podAnnotations:
dapr.io/app-id: "beta-atlantis"
env:
- name: APP_NAMESPACE
value: beta-atlantis
- name: APP_VERSION
value: "2.97.4"
- name: LOG_LEVEL
value: "2"
- name: ANALYTICS_WEB_ID
value: "16e7d807-4db5-45fd-92a9-27393445a153"
- name: REDIS_USER
value: default
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: beta-atlantis-redis
key: redis-password
- name: DB_HOST
value: beta-atlantis-db-rw
- name: DB_PORT
value: "5432"
- name: DB_USER
valueFrom:
secretKeyRef:
name: beta-atlantis-db-superuser
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: beta-atlantis-db-superuser
key: password
- name: DAPR_API_TOKEN
valueFrom:
secretKeyRef:
name: dapr-api-token
key: token
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
hosts:
- host: maps.beta.oceanbox.io
paths:
- path: /
pathType: ImplementationSpecific
internal:
- path: /internal
pathType: ImplementationSpecific
- path: /dapr
pathType: ImplementationSpecific
- path: /actors
pathType: ImplementationSpecific
- path: /job
pathType: ImplementationSpecific
- path: /events
pathType: ImplementationSpecific
- path: /metrics
pathType: ImplementationSpecific
tls:
- hosts:
- maps.beta.oceanbox.io
secretName: beta-atlantis-tls
cluster:
instances: 2
bootstrap:
enabled: false
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 1Gi
@@ -1,6 +1,6 @@
replicaCount: 1
image:
tag: 4d9e78cd-debug
tag: 369127e0-debug
podAnnotations:
dapr.io/app-id: "staging-atlantis"
env:
@@ -49,7 +49,24 @@ ingress:
# nginx.ingress.kubernetes.io/session-cookie-max-age: "86400"
# oceanbox.io/expose: internal
hosts:
- host: atlantis.beta.oceanbox.io
- host: maps.dev.oceanbox.io
paths:
- path: /
pathType: ImplementationSpecific
internal:
- path: /internal
pathType: ImplementationSpecific
- path: /dapr
pathType: ImplementationSpecific
- path: /actors
pathType: ImplementationSpecific
- path: /job
pathType: ImplementationSpecific
- path: /events
pathType: ImplementationSpecific
- path: /metrics
pathType: ImplementationSpecific
- host: maps.dev.oceanbox.io
paths:
- path: /
pathType: ImplementationSpecific
@@ -85,8 +102,9 @@ ingress:
pathType: ImplementationSpecific
tls:
- hosts:
- atlantis.beta.oceanbox.io
- maps.dev.oceanbox.io
- atlas.oceanbox.io
- maps.dev.oceanbox.io
secretName: staging-atlantis-tls
cluster:
instances: 1
@@ -1,4 +1,3 @@
podAnnotations:
dapr.io/enabled: "true"
dapr.io/app-port: "8085"
@@ -1,5 +1,65 @@
- op: add
path: /spec/template/spec/containers/0/envFrom/-
path: /spec/template/spec/containers/0/envFrom
value:
secretRef:
name: azure-keyvault
- secretRef:
name: azure-keyvault
- op: add
path: /spec/template/spec/containers/0/env
value:
- name: APP_NAMESPACE
value: staging-atlantis
- name: DOTNET_ENVIRONMENT
value: Development
- name: ASPNETCORE_ENVIRONMENT
value: Development
- name: DB_HOST
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: host
- name: DB_PORT
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: port
- name: DB_DATABASE
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: dbname
- name: DB_USER
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: user
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: password
- name: FGA_DB_HOST
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: host
- name: FGA_DB_PORT
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: port
- name: FGA_DB_DATABASE
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: dbname
- name: FGA_DB_USER
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: user
- name: FGA_DB_PASSWORD
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: password
name: azure-keyvault
@@ -1,82 +0,0 @@
# env.patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: staging-codex
labels:
app.kubernetes.io/name: codex
app.kubernetes.io/instance: staging-codex
spec:
template:
metadata:
labels:
app.kubernetes.io/name: codex
app.kubernetes.io/instance: staging-codex
spec:
containers:
- name: codex
env:
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: APP_NAMESPACE
value: prod-atlantis
- name: DOTNET_ENVIRONMENT
value: Development
- name: ASPNETCORE_ENVIRONMENT
value: Development
- name: DB_HOST
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: host
- name: DB_PORT
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: port
- name: DB_DATABASE
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: dbname
- name: DB_USER
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: user
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: staging-atlantis-db-app
key: password
- name: FGA_DB_HOST
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: host
- name: FGA_DB_PORT
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: port
- name: FGA_DB_DATABASE
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: dbname
- name: FGA_DB_USER
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: user
- name: FGA_DB_PASSWORD
valueFrom:
secretKeyRef:
name: staging-openfga-db-app
key: password
@@ -10,7 +10,5 @@ patches:
version: v1
kind: Deployment
path: deployment_patch.yaml
- path: env.patch.yaml
target:
labelSelector: "app.kubernetes.io/name=codex"
resources:
- ../base
+4 -1
View File
@@ -13,7 +13,7 @@ spec:
destination:
namespace: {{ .Values.codex.env }}-atlantis
server: https://kubernetes.default.svc
project: default
project: atlantis
sources:
- repoURL: {{ .Values.clusterConfig.manifests }}
targetRevision: HEAD
@@ -27,6 +27,9 @@ spec:
value: {{ .Values.codex.env }}
- name: HELMFILE_FILE_PATH
value: codex.yaml.gotmpl
- repoURL: https://gitlab.com/oceanbox/manifests.git
targetRevision: main
ref: values
syncPolicy:
syncOptions:
- CreateNamespace=true
+7 -6
View File
@@ -1,13 +1,11 @@
replicaCount: 1
image:
tag: 028945bf-debug
tag: 1b8167c6-debug
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/ssl-redirect: "true"
oceanbox.io/expose: internal
@@ -16,16 +14,19 @@ ingress:
paths:
- path: /
pathType: ImplementationSpecific
- host: codex.dev.tos.obx
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- codex.dev.oceanbox.io
- codex.dev.tos.obx
secretName: staging-codex-tls
volumes:
- name: appsettings
configMap:
name: staging-codex-appsettings
volumeMounts:
- name: appsettings
mountPath: "/app/appsettings.Development.json"
+2 -2
View File
@@ -14,7 +14,7 @@ metadata:
spec:
ingressClassName: nginx
rules:
- host: dapr.{{ .Values.clusterConfig.cluster }}.oceanbox.io
- host: dapr.adm.oceanbox.io
http:
paths:
- backend:
@@ -26,6 +26,6 @@ spec:
pathType: ImplementationSpecific
tls:
- hosts:
- dapr.{{ .Values.clusterConfig.cluster }}.oceanbox.io
- dapr.adm.oceanbox.io
secretName: dapr-dashboard-tls
{{- end }}
+2
View File
@@ -0,0 +1,2 @@
drupal:
enabled: true
+3
View File
@@ -0,0 +1,3 @@
drupal:
enabled: false
autosync: false
@@ -0,0 +1,13 @@
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-external-services
namespace: drupal
spec:
egress:
- toFQDNs:
- matchPattern: 'cache.nixos.org'
- matchPattern: 'nix-community.cachix.org'
endpointSelector:
matchLabels:
app: drupal
+11
View File
@@ -0,0 +1,11 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: drupal-db
spec:
instances: 1
primaryUpdateStrategy: unsupervised
storage:
size: 2Gi
monitoring:
enablePodMonitor: true
+22
View File
@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: drupal
namespace: argocd
spec:
destination:
namespace: drupal
server: 'https://kubernetes.default.svc'
sources:
- repoURL: https://gitlab.com/oceanbox/manifests.git
targetRevision: HEAD
path: values/drupal/manifests
project: sys
syncPolicy:
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
- ServerSideApply=true
automated:
prune: true
# selfHeal: false
+129
View File
@@ -0,0 +1,129 @@
apiVersion: v1
kind: Service
metadata:
name: drupal
labels:
app: drupal
spec:
ports:
- port: 80
name: http
targetPort: http
selector:
app: drupal
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: drupal
labels:
app: drupal
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: drupal
labels:
app: drupal
spec:
selector:
matchLabels:
app: drupal
strategy:
type: Recreate
template:
metadata:
labels:
app: drupal
spec:
initContainers:
- name: init-sites-volume
image: drupal
command: ["/bin/bash", "-c"]
args:
[
"cp -r /var/www/html/sites/ /data/; chown www-data:www-data /data/ -R",
]
volumeMounts:
- mountPath: /data
name: drupal
containers:
- image: registry.gitlab.com/oceanbox/fornix/oceanbox:dev
name: drupal
ports:
- containerPort: 80
name: http
protocol: TCP
env:
- name: DRUPAL_DATABASE_HOST
value: drupal-db-rw
- name: DRUPAL_DATABASE_PREFIX
value: ""
- name: DRUPAL_DATABASE_NAME
value: app
- name: DRUPAL_DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: drupal-db-app
key: username
- name: DRUPAL_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: drupal-db-app
key: password
volumeMounts:
- mountPath: /var/www/html/modules
name: drupal
subPath: modules
- mountPath: /var/www/html/profiles
name: drupal
subPath: profiles
- mountPath: /var/www/html/sites
name: drupal
subPath: sites
- mountPath: /var/www/html/themes
name: drupal
subPath: themes
volumes:
- name: drupal
persistentVolumeClaim:
claimName: drupal
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,172.19.255.0/24,100.64.0.0/12
labels:
app.kubernetes.io/component: drupal
name: drupal
namespace: drupal
spec:
ingressClassName: nginx
rules:
- host: drupal.hel1.oceanbox.io
http:
paths:
- backend:
service:
name: drupal
port:
number: 80
path: /
pathType: Prefix
tls:
- hosts:
- drupal.hel1.oceanbox.io
secretName: drupal-tls
+35
View File
@@ -0,0 +1,35 @@
# Default values for Example Single Node.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
drupal:
persistence:
enabled: true
## A manually managed Persistent Volume and Claim
## Requires persistence.enabled: true
## If defined, PVC must be created manually before volume will be bound
# existingClaim:
## Drupal data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
annotations: {}
accessMode: ReadWriteOnce
size: 2Gi
varnish:
enabled: false
redis:
enabled: false
mysql:
enabled: false
proxysql:
enabled: false
+10 -3
View File
@@ -79,21 +79,28 @@ config:
- "[RESPONSE_TIME] <= 1000"
endpoints:
- name: Atlantis
- name: Atlantis TOS
<<: *https-endpoint
group: "Primary Services"
url: https://maps.oceanbox.io/healthz
alerts:
- type: custom
- name: Sorcerer
- name: Sorcerer TOS
<<: *https-endpoint
group: "Primary Services"
url: https://sorcerer.data.oceanbox.io/healthz
alerts:
- type: custom
- name: Plume
- name: Sorcerer VTN
<<: *https-endpoint
group: "Primary Services"
url: https://sorcerer.vtn.oceanbox.io/healthz
# alerts:
# - type: custom
- name: Plume TOS
<<: *https-endpoint
group: "Secondary Services"
url: https://plume.data.oceanbox.io/healthz
+1 -1
View File
@@ -1,7 +1,7 @@
image:
repository: ghcr.io/juanfont/headscale
pullPolicy: IfNotPresent
tag: v0.26.1
tag: v0.27.1
args: [ "serve" ]
+7 -7
View File
@@ -1,7 +1,7 @@
image:
repository: ghcr.io/juanfont/headscale
pullPolicy: IfNotPresent
tag: v0.26.1
tag: v0.27.1
args: ["serve"]
@@ -107,6 +107,7 @@ configMaps:
"group:devops": [
"radovan.bast@oceanbox.io",
"ole.tytlandsvik@oceanbox.io",
"ismael.abujadur@oceanbox.io",
],
"group:oceanographer": [
"frank.gaardsted@oceanbox.io",
@@ -243,14 +244,11 @@ configMaps:
data:
records: |
[
{ "name": "ekman.oceanbox.io", "type": "A", "value": "10.255.241.100" },
{ "name": "ekman-manage.oceanbox.io", "type": "A", "value": "10.255.241.99" },
{ "name": "rossby.oceanbox.io", "type": "A", "value": "172.16.239.222" },
{ "name": "rossby-manage.oceanbox.io", "type": "A", "value": "172.16.239.221" },
{ "name": "maps.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "maps.beta.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "maps.dev.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "atlantis.beta.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "codex.dev.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "auth.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "auth.adm.oceanbox.io", "type": "A", "value": "10.255.241.11" },
@@ -299,6 +297,8 @@ configMaps:
{ "name": "alertmanager.ob-ceph.local", "type": "A", "value": "10.255.241.10" },
{ "name": "hubble.ob-ceph.local", "type": "A", "value": "10.255.241.10" },
{ "name": "codex.dev.tos.obx", "type": "A", "value": "10.255.241.11" },
{ "name": "dashboard.ceph.tos.obx", "type": "A", "value": "10.255.241.10" },
{ "name": "grafana.ceph.tos.obx", "type": "A", "value": "10.255.241.10" },
{ "name": "s3.ceph.tos.obx", "type": "A", "value": "10.255.241.10" },
@@ -326,7 +326,7 @@ configMaps:
{ "name": "mrtz-sorcerer.adm.vtn.obx", "type": "A", "value": "172.16.239.221" },
{ "name": "mrtz-plume.ekman.oceanbox.io", "type": "A", "value": "10.255.241.99" },
{ "name": "simkir-atlantis.dev.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "simkir-user-portal.dev.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "simkir-codex.dev.oceanbox.io", "type": "A", "value": "10.255.241.11" },
{ "name": "simkir-sorcerer.ekman.oceanbox.io", "type": "A", "value": "10.255.241.99" },
{ "name": "simkir-sorcerer.adm.vtn.obx", "type": "A", "value": "172.16.239.221" },
{ "name": "simkir-plume.ekman.oceanbox.io", "type": "A", "value": "10.255.241.99" },
+1 -1
View File
@@ -1,6 +1,6 @@
replicaCount: 1
image:
tag: "f2d0f9ad-debug"
tag: "aa4f7d23-debug"
env:
- name: APP_VERSION
value: "0.0.0-staging"
+3
View File
@@ -0,0 +1,3 @@
nexus:
enabled: true
autosync: true
+3
View File
@@ -0,0 +1,3 @@
nexus:
enabled: false
autosync: false
+8
View File
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
metadata:
name: nexus-admin-password
namespace: nexus
type: Opaque
stringData:
password: "changeme-admin-password-here"
+37
View File
@@ -0,0 +1,37 @@
{{- if .Values.clusterConfig.argo.enabled }}
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nexus
namespace: argocd
spec:
destination:
namespace: nexus
server: 'https://kubernetes.default.svc'
sources:
- repoURL: {{ .Values.clusterConfig.manifests }}
targetRevision: HEAD
path: helmfile.d
plugin:
name: helmfile-cmp
env:
- name: CLUSTER_NAME
value: {{ .Values.clusterConfig.cluster }}
- name: HELMFILE_ENVIRONMENT
value: default
- name: HELMFILE_FILE_PATH
value: nexus.yaml.gotmpl
project: sys
syncPolicy:
managedNamespaceMetadata:
labels:
component: sys
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
- ServerSideApply=true
{{- if .Values.nexus.autosync }}
automated:
prune: true
{{- end }}
{{- end }}
+60
View File
@@ -0,0 +1,60 @@
image:
tag: 3.74.0
ingress:
enabled: true
ingressClassName: nginx
hosts:
- host: mochi.tos.oceanbox.io
paths:
- path: /
pathType: Prefix
tls:
- secretName: nexus-tls
hosts:
- mochi.tos.oceanbox.io
persistence:
enabled: true
storageClass: "ceph-rbd"
size: 8Gi
env:
- name: INSTALL4J_ADD_VM_PARAMS
value: "-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"
resources:
requests:
cpu: 200m
memory: 1Gi
limits:
memory: 1Gi
config:
enabled: true
data:
nexus.properties: |
nexus.s3.blobstore.enabled=true
rootPassword:
secret: nexus-admin-password
key: password
serviceAccount:
create: true
additionalConfigMaps:
- name: nexus-s3-config
data:
s3-blobstore.json: |
{
"name": "s3-nuget",
"type": "S3",
"attributes": {
"s3": {
"bucket": "nexus-nuget-registry",
"region": "us-east-1",
"prefix": "nuget/",
"expiration": -1
}
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
nfs_provisioner:
enabled: true
enabled: false
autosync: true
archiveOnDelete: true
defaultClass: true
-1
View File
@@ -1,3 +1,2 @@
sorcerer:
enabled: true
+2
View File
@@ -0,0 +1,2 @@
sorcerer:
enabled: true
@@ -0,0 +1,73 @@
{
"oidc": {
"issuer": "https://auth.oceanbox.io/realms/oceanbox",
"authorization_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/auth",
"token_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/token",
"jwks_uri": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/certs",
"userinfo_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/userinfo",
"end_session_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/logout",
"device_authorization_endpoint": "https://auth.oceanbox.io/realms/oceanbox/protocol/openid-connect/auth/device",
"clientId": "sorcerer",
"clientSecret": "",
"scopes": [
"openid",
"email",
"offline_access",
"profile"
],
"audiences": [
"atlantis",
"atlantis_dev",
"sorcerer",
"sorcerer_dev"
]
},
"sso": {
"cookieDomain": ".oceanbox.io",
"cookieName": ".obx.prod",
"ttl": 12.0,
"signedOutRedirectUri": "https://maps.oceanbox.io",
"realm": "atlantis",
"environment": "prod",
"keyStore": {
"kind": "azure",
"uri": "https://atlantis.blob.core.windows.net",
"key": "dataprotection-keys"
},
"keyVault": {
"kind": "azure",
"uri": "https://atlantisvault.vault.azure.net",
"key": "dataencryption-keys"
}
},
"plainAuthUsers": [],
"fga": {
"apiUrl": "https://openfga.srv.oceanbox.io",
"apiKey": "",
"storeId": "01JKTZXMP7ANN4GG2P5W8Y56M6",
"modelId": "01JKTZYMCZZBVSBG66W27XMW0A"
},
"sentryUrl": "https://5e6e3584098dc006de18038cf85d2cbe@o4509530141622272.ingest.de.sentry.io/4509547350065232",
"redis": "localhost:6379,user=default,password=secret",
"allowedOrigins": [
"http://localhost:8085",
"http://localhost:8080",
"https://localhost:8080",
"https://sorcerer.vtn.oceanbox.io",
"https://sorcerer.local.oceanbox.io:8080",
"https://atlantis.local.oceanbox.io:8080",
"https://maps.oceanbox.io",
"https://maps.beta.oceanbox.io",
"https://atlantis.beta.oceanbox.io",
"https://jonas-atlantis.dev.oceanbox.io",
"https://stig-atlantis.dev.oceanbox.io",
],
"appName": "sorcerer",
"appEnv": "prod",
"appNamespace": "prod-sorcerer",
"appVersion": "0.0.0",
"otelCollector": "http://10.255.241.12:4317",
"archiveSvc": "https://maps.oceanbox.io",
"dataDir": "/data/archives",
"cacheDir": "/data/archives/cache"
}
@@ -0,0 +1,35 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-prod-backup-archives
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 400T
local:
path: /backup/archives
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- ekman
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prod-oceanbox-backup-archives
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 400T
storageClassName: ""
volumeMode: Filesystem
volumeName: pv-prod-backup-archives
@@ -0,0 +1,20 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: configstore
spec:
type: configuration.redis
version: v1
metadata:
- name: redisHost
value: prod-sorcerer-redis:6379
- name: redisUsername
value: default
- name: redisPassword
secretKeyRef:
name: prod-sorcerer-redis
key: redis-password
- name: redisDB
value: "1"
scopes:
- prod-sorcerer
@@ -0,0 +1 @@
SEQ_APIKEY=7iIXHJukYjSLQDix6CnZ
@@ -0,0 +1,13 @@
- op: replace
path: /spec/template/spec/containers/0/volumeMounts/0/mountPath
value: /data
- op: add
path: /spec/template/spec/containers/0/envFrom/-
value:
secretRef:
name: azure-keyvault
- op: add
path: /spec/template/spec/containers/0/envFrom/-
value:
secretRef:
name: prod-sorcerer-env
@@ -0,0 +1,23 @@
generatorOptions:
disableNameSuffixHash: true
configMapGenerator:
- name: prod-sorcerer-appsettings
files:
- appsettings.json
patches:
- target:
group: apps
version: v1
kind: Deployment
path: deployment_patch.yaml
resources:
- ../base
- pv.yaml
- pvc.yaml
- secrets.yaml
- configurations.yaml
- keyvault.yaml
- rbac.yaml
- secretstore.yaml
- statestore.yaml
- tracing.yaml
@@ -0,0 +1,22 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-prod-sorcerer-ceph-archives
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
csi:
driver: cephfs.csi.ceph.com
nodeStageSecretRef:
name: csi-cephfs-secret
namespace: ceph-csi-operator-system
volumeAttributes:
clusterID: storage
fsName: data
rootPath: /
staticVolume: "true"
volumeHandle: pv-prod-sorcerer-ceph-archives
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
@@ -0,0 +1,18 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prod-sorcerer-ceph-archives
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: ""
volumeMode: Filesystem
volumeName: pv-prod-sorcerer-ceph-archives
status:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
@@ -0,0 +1,39 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: prod-sorcerer
namespace: prod-sorcerer
rules:
- apiGroups:
- ""
resourceNames:
- prod-sorcerer-appsettings
resources:
- configmaps
verbs:
- get
- watch
- apiGroups:
- ""
resourceNames:
- azure-keyvault
- prod-sorcerer-redis
resources:
- secrets
verbs:
- get
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: prod-sorcerer
namespace: prod-sorcerer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: prod-sorcerer
subjects:
- kind: ServiceAccount
name: prod-sorcerer
namespace: prod-sorcerer
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Secret
metadata:
name: prod-sorcerer-env
type: Opaque
data:
---
apiVersion: v1
kind: Secret
metadata:
annotations:
kyverno/clone: "true"
name: azure-keyvault
type: Opaque
data:
@@ -0,0 +1,10 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: secretstore
spec:
type: secretstores.kubernetes
version: v1
metadata:
- name: defaultNamespace
value: prod-sorcerer
@@ -0,0 +1,22 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: prod-sorcerer-redis:6379
- name: redisUsername
value: default
- name: redisPassword
secretKeyRef:
name: prod-sorcerer-redis
key: redis-password
- name: actorStateStore
value: "true"
- name: redisDB
value: "0"
scopes:
- prod-sorcerer
@@ -0,0 +1,11 @@
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
spec:
tracing:
samplingRate: "1"
otel:
endpointAddress: "10.255.241.12:4317"
protocol: grpc
isSecure: false
@@ -26,7 +26,7 @@
"cookieDomain": ".oceanbox.io",
"cookieName": ".obx.staging",
"ttl": 12.0,
"signedOutRedirectUri": "https://atlantis.beta.oceanbox.io",
"signedOutRedirectUri": "https://maps.dev.oceanbox.io",
"realm": "atlantis",
"environment": "staging",
"keyStore": {
@@ -58,6 +58,7 @@
"https://atlantis.local.oceanbox.io:8080",
"https://maps.oceanbox.io",
"https://maps.beta.oceanbox.io",
"https://maps.dev.oceanbox.io",
"https://atlantis.beta.oceanbox.io",
"https://jonas-atlantis.dev.oceanbox.io",
"https://stig-atlantis.dev.oceanbox.io",
@@ -71,7 +72,7 @@
"appNamespace": "staging-sorcerer",
"appVersion": "0.0.0",
"otelCollector": "http://10.255.241.12:4317",
"archiveSvc": "https://atlantis.beta.oceanbox.io",
"archiveSvc": "https://maps.dev.oceanbox.io",
"dataDir": "/data/archives",
"cacheDir": "/data/archives/cache"
}
@@ -0,0 +1,22 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: azure-keyvault
spec:
type: secretstores.azure.keyvault
version: v1
metadata:
- name: vaultName
value: atlantisvault
- name: azureTenantId
secretKeyRef:
name: azure-keyvault
key: AZURE_TENANT_ID
- name: azureClientId
secretKeyRef:
name: azure-keyvault
key: AZURE_CLIENT_ID
- name: azureClientSecret
secretKeyRef:
name: azure-keyvault
key: AZURE_CLIENT_SECRET
@@ -0,0 +1,118 @@
replicaCount: 2
podAnnotations:
dapr.io/enabled: "true"
dapr.io/app-id: "prod-sorcerer"
dapr.io/app-port: "8085"
dapr.io/api-token-secret: "dapr-api-token"
dapr.io/config: "tracing"
dapr.io/app-protocol: "http"
dapr.io/log-as-json: "true"
dapr.io/sidecar-cpu-request: "10m"
dapr.io/sidecar-memory-request: "50Mi"
# dapr.io/sidecar-cpu-limit: "300m"
# dapr.io/sidecar-memory-limit: "1000Mi"
env:
- name: APP_VERSION
value: "4.16.3"
- name: LOG_LEVEL
value: "2"
- name: REDIS_USER
value: default
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: prod-sorcerer-redis
key: redis-password
- name: DAPR_API_TOKEN
valueFrom:
secretKeyRef:
name: dapr-api-token
key: token
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "http-affinity"
nginx.ingress.kubernetes.io/session-cookie-expires: "86400"
nginx.ingress.kubernetes.io/session-cookie-max-age: "86400"
hosts:
- host: sorcerer.vtn.oceanbox.io
paths:
paths:
- path: /
pathType: ImplementationSpecific
internal:
- path: /internal
pathType: ImplementationSpecific
- path: /dapr
pathType: ImplementationSpecific
- path: /actors
pathType: ImplementationSpecific
- path: /job
pathType: ImplementationSpecific
- path: /events
pathType: ImplementationSpecific
- path: /metrics
pathType: ImplementationSpecific
tls:
- hosts:
- sorcerer.vtn.oceanbox.io
secretName: prod-sorcerer-tls
persistence:
enabled: true
existingClaim: prod-sorcerer-ceph-archives
# existingClaim: prod-oceanbox-backup-archives
# nodeSelector:
# node-role.kubernetes.io/srv: ""
# kubernetes.io/hostname: fs-backup
# node-role.kubernetes.io/worker: c1-1
# tolerations:
# - key: workload
# operator: Equal
# value: compute
# effect: NoSchedule
redis:
enabled: true
replicas: 3
storageClass: "csi-rbd"
size: 2Gi
backup:
enabled: true
secret:
name: "prod-sorcerer-redis"
key: "redis-password"
resources:
cpu: 200m
memory: 2Gi
affinity: {}
# affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: "topology.kubernetes.io/group"
# operator: In
# values:
# - srv
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# - labelSelector:
# matchExpressions:
# - key: "app.kubernetes.io/name"
# operator: In
# values:
# - sorcerer
# - key: "app.kubernetes.io/instance"
# operator: In
# values:
# - prod-sorcerer
# topologyKey: "kubernetes.io/hostname"
+1 -1
View File
@@ -1,6 +1,6 @@
replicaCount: 1
image:
tag: 8c17a644-debug
tag: 1b8167c6-debug
podAnnotations:
dapr.io/enabled: "true"
dapr.io/app-id: "staging-sorcerer"

Some files were not shown because too many files have changed in this diff Show More