Compare commits

..

49 Commits

Author SHA1 Message Date
renovate-bot 7abe503050 Update ghcr.io/juanfont/headscale Docker tag to v0.28.0
renovate/stability-days Updates have not met minimum release age requirement
2026-03-17 14:57:21 +00:00
mrtz b39b3aefc8 fix(cilium): Disable clustermesh again 2026-03-17 13:00:55 +01:00
mrtz a9c658466f feat(cilium): Enable clustermesh 2026-03-17 10:56:43 +01:00
mrtz 730dc2b865 Add kueuectl via nix 2026-03-17 10:14:18 +01:00
mrtz 5eea620225 fix(kueue): Cohort is deprecated 2026-03-16 15:24:21 +01:00
mrtz 863c242a50 fix(kueue): Remove alpha and beta features 2026-03-16 15:22:40 +01:00
mrtz 1cf2303c62 fix(kueue): Use cert-manager 2026-03-16 15:21:46 +01:00
mrtz 81e6823f3d fix(kueue): Disable internal cert 2026-03-16 15:17:52 +01:00
mrtz 2f2d6c1b70 fix(kueue): Bump CRDs 2026-03-16 15:12:11 +01:00
mrtz c99ed29e62 fix(kueue): Wrong crd 2026-03-16 15:09:12 +01:00
mrtz 7eda27cdd6 fix(kueue): Add sync-wave hooks 2026-03-16 15:05:10 +01:00
mrtz bf6542398c fix(kueue): Correct repo 2026-03-16 14:59:17 +01:00
mrtz be7954d499 feat: Add Kueue and JobSet to ekman 2026-03-16 14:52:43 +01:00
mrtz cc8a121bf6 chore: Bump velero to bitnami free version 2026-03-16 10:32:54 +01:00
Gitea Actions 88d21ba674 ci(staging): deploy docs 0d279bb9-debug 2026-03-15 19:45:40 +00:00
Gitea Actions 1eb5249f64 ci(staging): deploy docs 8d2cafc0-debug 2026-03-15 17:35:07 +00:00
Gitea Actions 3ee37fc0f7 ci(staging): deploy docs 1a0619f9-debug 2026-03-15 15:48:21 +00:00
renovate-bot ea4d9f3003 Update Helm release kube-prometheus-stack to v82.10.3 2026-03-15 08:49:11 +00:00
renovate-bot 4566ac7c28 Update Helm release openfga to v0.2.56 2026-03-15 08:47:57 +00:00
renovate-bot c13d4519bd Update Helm release umami to v7.7.3 2026-03-15 00:03:38 +00:00
renovate-bot 077153c344 Update docker.gitea.com/gitea Docker tag to v1.25.5 2026-03-14 19:35:04 +00:00
mrtz e44e83da5e fix(keycloak): Undo last commit 2026-03-14 20:15:36 +01:00
mrtz a541829037 fix(keycloak): Add back RollingUpdate 2026-03-14 20:12:28 +01:00
mrtz b818bead29 fix(keycloak): Disable resource presets 2026-03-14 20:08:02 +01:00
mrtz 7edb275cbe fix(keycloak): Add proxyHeaders 2026-03-14 20:03:54 +01:00
mrtz e7773d7fa5 fix(keycloak): Bump to latest bitnami 2026-03-14 19:58:29 +01:00
mrtz 3ba1ba12aa fix(keycloak): Use theme from gitea 2026-03-14 18:56:50 +01:00
mrtz bfc2bfdf9d fix(keycloak): Migrate theme to gitea 2026-03-14 18:20:51 +01:00
mrtz 14fa2447ec fix(dex): Kill it 2026-03-14 17:55:43 +01:00
mrtz ffc3ca2a24 fix(dex): Disable dex in values only nginx 2026-03-14 17:42:29 +01:00
mrtz c0cc05f0dd fix(dex): CORS for *.oceanbox.io 2026-03-14 17:39:15 +01:00
mrtz 98dde62710 fix(dex): Extend scopes 2026-03-14 17:38:53 +01:00
mrtz b0a986807b fix(dex): Fix for options 2026-03-14 17:34:06 +01:00
mrtz 81d69fb8cd fix(dex): Allow * 2026-03-14 17:33:30 +01:00
mrtz cd2280b5ed fix(dex): Allow cors 2026-03-14 17:26:40 +01:00
mrtz 0b2119b769 fix(dex): Cors allow all 2026-03-14 17:12:12 +01:00
mrtz 352acc54b0 fix(cnp): Allow graph.microsoft.com 2026-03-14 17:03:01 +01:00
mrtz 365c47f621 fix(dex): Set default scopes 2026-03-14 16:49:05 +01:00
mrtz 8ecd09734e fix(dex): Add theme 2026-03-14 16:40:09 +01:00
mrtz ff8f3387ea fix(dex): Only dev for now 2026-03-14 16:26:24 +01:00
mrtz 0728ac0d8b fix(dex): Only 1 replica for now 2026-03-14 16:16:01 +01:00
mrtz 9e76021c37 fix(argo): Allow dex 2026-03-14 16:13:03 +01:00
mrtz d08937816d fix(dex): Move to tos1 2026-03-14 16:10:57 +01:00
mrtz 9f34fc8222 refactor: Replace pocket-id with dex 2026-03-14 14:58:22 +01:00
mrtz 0805e0c988 fix(pocket-id): One Instance 2026-03-13 18:04:05 +01:00
mrtz 1520d72b59 fix(argo): Allow pocket-id in sys 2026-03-13 18:01:08 +01:00
mrtz 67cb247556 fix(pocket-id): Everything into sys 2026-03-13 17:59:02 +01:00
mrtz 16f9976abb fix(nix): Not a function 2026-03-13 17:57:24 +01:00
mrtz cfdb9f1fdd feat(pocket-id): Add Pocket ID 2026-03-13 17:53:18 +01:00
71 changed files with 361 additions and 952 deletions
+3
View File
@@ -0,0 +1,3 @@
FROM busybox
COPY keycloak-themes/oceanbox /theme
@@ -0,0 +1,109 @@
/* Oceanbox Keycloak Login Theme
*
* Branding aligned with oceanbox.io:
* Primary teal: #0bb4aa
* Dark teal: #37746F
* Deep blue: #031275
* Background: #f9fafd
* Text: #101010
*/
:root {
--pf-v5-global--primary-color--100: #0bb4aa;
--pf-v5-global--primary-color--200: #099e95;
--pf-v5-global--link--Color: #0bb4aa;
--pf-v5-global--link--Color--hover: #031275;
}
.login-pf body {
background: #f9fafd url("../img/oceanbox-bg.png") no-repeat center bottom fixed;
background-size: cover;
height: 100%;
}
/* Login container layout */
.pf-v5-c-login__container {
grid-template-columns: 34rem;
grid-template-areas: "header"
"main";
}
/* Logo */
div.kc-logo-text {
background-image: url('../img/oceanbox-logo-text.png');
height: 80px;
width: 360px;
background-repeat: no-repeat;
background-size: contain;
background-position: center;
margin: 0 auto;
}
div.kc-logo-text span {
display: none;
}
/* Header */
#kc-header-wrapper {
font-size: 29px;
text-transform: uppercase;
letter-spacing: 3px;
line-height: 1.2em;
white-space: normal;
color: #37746F !important;
text-align: center;
}
/* Login card */
.pf-v5-c-login__main {
border-radius: 8px;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
}
/* Primary button */
.pf-v5-c-button.pf-m-primary {
--pf-v5-c-button--m-primary--BackgroundColor: #0bb4aa;
--pf-v5-c-button--m-primary--hover--BackgroundColor: #099e95;
--pf-v5-c-button--m-primary--active--BackgroundColor: #37746F;
--pf-v5-c-button--m-primary--focus--BackgroundColor: #099e95;
border-radius: 4px;
}
/* Links */
.pf-v5-c-button.pf-m-link {
--pf-v5-c-button--m-link--Color: #0bb4aa;
--pf-v5-c-button--m-link--hover--Color: #031275;
}
a {
color: #0bb4aa;
}
a:hover {
color: #031275;
}
/* Form inputs */
.pf-v5-c-form-control > input,
.pf-v5-c-form-control > textarea {
border-radius: 4px;
}
#kc-recovery-codes-list {
columns: 2;
}
#certificate_subjectDN {
overflow-wrap: break-word;
}
hr {
margin-top: var(--pf-v5-global--spacer--sm);
margin-bottom: var(--pf-v5-global--spacer--md);
}
@media (min-width: 768px) {
div.pf-v5-c-login__main-header {
grid-template-columns: 70% 30%;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

@@ -0,0 +1,5 @@
parent=keycloak.v2
import=common/keycloak
stylesCommon=vendor/patternfly-v5/patternfly.min.css vendor/patternfly-v5/patternfly-addons.css
styles=css/styles.css css/oceanbox.css
-46
View File
@@ -1,46 +0,0 @@
{{- if .Values.httpRoute.enabled -}}
{{- $fullName := include "docs.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: {{ $fullName }}
labels:
{{- include "docs.labels" . | nindent 4 }}
spec:
parentRefs:
{{- toYaml .Values.httpRoute.parentRefs | nindent 4 }}
{{- with .Values.httpRoute.hostnames }}
hostnames:
{{- toYaml . | nindent 4 }}
{{- end }}
rules:
{{- range .Values.httpRoute.rules }}
- {{- with .matches }}
matches:
{{- toYaml . | nindent 8 }}
{{- end }}
backendRefs:
- name: {{ $fullName }}
port: {{ $svcPort }}
{{- end }}
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-{{ $fullName }}
labels:
{{- include "docs.labels" . | nindent 4 }}
spec:
endpointSelector:
matchLabels:
{{- include "docs.selectorLabels" . | nindent 6 }}
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": {{ .Release.Namespace }}
{{- end }}
+1 -6
View File
@@ -46,13 +46,8 @@ service:
type: ClusterIP type: ClusterIP
port: 8080 port: 8080
ingress: ingress:
enabled: false enabled: true
className: nginx className: nginx
httpRoute:
enabled: false
parentRefs: []
hostnames: []
rules: []
persistence: persistence:
enabled: false enabled: false
size: 1G size: 1G
-46
View File
@@ -1,46 +0,0 @@
{{- if .Values.httpRoute.enabled -}}
{{- $fullName := include "makai.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: {{ $fullName }}
labels:
{{- include "makai.labels" . | nindent 4 }}
spec:
parentRefs:
{{- toYaml .Values.httpRoute.parentRefs | nindent 4 }}
{{- with .Values.httpRoute.hostnames }}
hostnames:
{{- toYaml . | nindent 4 }}
{{- end }}
rules:
{{- range .Values.httpRoute.rules }}
- {{- with .matches }}
matches:
{{- toYaml . | nindent 8 }}
{{- end }}
backendRefs:
- name: {{ $fullName }}
port: {{ $svcPort }}
{{- end }}
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-{{ $fullName }}
labels:
{{- include "makai.labels" . | nindent 4 }}
spec:
endpointSelector:
matchLabels:
{{- include "makai.selectorLabels" . | nindent 6 }}
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": {{ .Release.Namespace }}
{{- end }}
+1 -6
View File
@@ -46,13 +46,8 @@ service:
type: ClusterIP type: ClusterIP
port: 8080 port: 8080
ingress: ingress:
enabled: false enabled: true
className: nginx className: nginx
httpRoute:
enabled: false
parentRefs: []
hostnames: []
rules: []
persistence: persistence:
enabled: false enabled: false
size: 1G size: 1G
-1
View File
@@ -11,7 +11,6 @@ releases:
condition: docs.enabled condition: docs.enabled
values: values:
- ../values/docs/values/values.yaml - ../values/docs/values/values.yaml
- ../values/docs/values/values.yaml.gotmpl
- ../values/docs/values/values-{{ .Environment.Name }}.yaml - ../values/docs/values/values-{{ .Environment.Name }}.yaml
postRenderer: ../bin/kustomizer postRenderer: ../bin/kustomizer
postRendererArgs: postRendererArgs:
-1
View File
@@ -17,7 +17,6 @@ releases:
condition: gitea.enabled condition: gitea.enabled
values: values:
- ../values/gitea/values/values.yaml - ../values/gitea/values/values.yaml
- ../values/gitea/values/values.yaml.gotmpl
- ../values/gitea/values/values-{{ .Environment.Name }}.yaml - ../values/gitea/values/values-{{ .Environment.Name }}.yaml
postRenderer: ../bin/kustomizer postRenderer: ../bin/kustomizer
postRendererArgs: postRendererArgs:
+1 -1
View File
@@ -12,7 +12,7 @@ releases:
- name: {{ .Environment.Name }}-keycloak - name: {{ .Environment.Name }}-keycloak
namespace: keycloak namespace: keycloak
chart: bitnami/keycloak chart: bitnami/keycloak
version: 24.9.0 version: 25.2.0
condition: keycloak.enabled condition: keycloak.enabled
values: values:
- ../values/keycloak/values/values.yaml - ../values/keycloak/values/values.yaml
+1 -1
View File
@@ -8,7 +8,7 @@ releases:
- name: kueue - name: kueue
namespace: kueue-system namespace: kueue-system
chart: oci://registry.k8s.io/kueue/charts/kueue chart: oci://registry.k8s.io/kueue/charts/kueue
version: 0.15.0 version: 0.16.2
condition: kueue.enabled condition: kueue.enabled
values: values:
- ../values/kueue/values/values.yaml - ../values/kueue/values/values.yaml
-1
View File
@@ -11,7 +11,6 @@ releases:
condition: makai.enabled condition: makai.enabled
values: values:
- ../values/makai/values/values.yaml - ../values/makai/values/values.yaml
- ../values/makai/values/values.yaml.gotmpl
- ../values/makai/values/values-{{ .Environment.Name }}.yaml - ../values/makai/values/values-{{ .Environment.Name }}.yaml
postRenderer: ../bin/kustomizer postRenderer: ../bin/kustomizer
postRendererArgs: postRendererArgs:
+1 -1
View File
@@ -16,7 +16,7 @@ releases:
namespace: {{ .Environment.Name }}-openfga namespace: {{ .Environment.Name }}-openfga
{{- end }} {{- end }}
chart: openfga/openfga chart: openfga/openfga
version: 0.2.55 version: 0.2.56
condition: openfga.enabled condition: openfga.enabled
values: values:
- ../values/openfga/values/values.yaml - ../values/openfga/values/values.yaml
+1 -1
View File
@@ -15,7 +15,7 @@ releases:
- name: prometheus - name: prometheus
namespace: prometheus namespace: prometheus
chart: prometheus/kube-prometheus-stack chart: prometheus/kube-prometheus-stack
version: 82.10.1 version: 82.10.3
condition: prometheus.enabled condition: prometheus.enabled
values: values:
- ../values/prometheus/values/prometheus.yaml.gotmpl - ../values/prometheus/values/prometheus.yaml.gotmpl
+1 -1
View File
@@ -14,7 +14,7 @@ releases:
- name: umami - name: umami
namespace: analytics namespace: analytics
chart: umami/umami chart: umami/umami
version: 7.7.2 version: 7.7.3
condition: umami.enabled condition: umami.enabled
values: values:
- ../values/umami/values/values.yaml - ../values/umami/values/values.yaml
+1 -1
View File
@@ -15,7 +15,7 @@ releases:
- name: velero - name: velero
namespace: velero namespace: velero
chart: velero/velero chart: velero/velero
version: 11.4.0 version: 12.0.0
condition: velero.enabled condition: velero.enabled
values: values:
- ../values/velero/values/velero.yaml.gotmpl - ../values/velero/values/velero.yaml.gotmpl
+19
View File
@@ -0,0 +1,19 @@
{
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "kueuectl";
version = "0.16.3";
src = fetchFromGitHub {
owner = "kubernetes-sigs";
repo = "kueue";
rev = "v${version}";
hash = "sha256-JbU+ZoQ+YriaiIbbVCe45OTYycxYRanLhmQAdpE+xQ4=";
};
vendorHash = null;
subPackages = [ "cmd/kueuectl" ];
}
+5 -18
View File
@@ -1,23 +1,10 @@
{ {
"pins": { "pins": {
"git-hooks": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "cachix",
"repo": "git-hooks.nix"
},
"branch": "master",
"submodules": false,
"revision": "a1ef738813b15cf8ec759bdff5761b027e3e1d23",
"url": "https://github.com/cachix/git-hooks.nix/archive/a1ef738813b15cf8ec759bdff5761b027e3e1d23.tar.gz",
"hash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U="
},
"nixpkgs": { "nixpkgs": {
"type": "Channel", "type": "Channel",
"name": "nixpkgs-unstable", "name": "nixpkgs-unstable",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre930822.ed142ab1b3a0/nixexprs.tar.xz", "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre961788.75690239f08f/nixexprs.tar.xz",
"hash": "sha256-XH6awru9NnBc/m+2YhRNT8r1PAKEiPGF3gs//F3ods0=" "hash": "sha256-p0h/nSeqzIkbn/2uFC4keoIPwmqXGHsX0gkCXM7km00="
}, },
"treefmt-nix": { "treefmt-nix": {
"type": "Git", "type": "Git",
@@ -28,9 +15,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "337a4fe074be1042a35086f15481d763b8ddc0e7", "revision": "71b125cd05fbfd78cab3e070b73544abe24c5016",
"url": "https://github.com/numtide/treefmt-nix/archive/337a4fe074be1042a35086f15481d763b8ddc0e7.tar.gz", "url": "https://github.com/numtide/treefmt-nix/archive/71b125cd05fbfd78cab3e070b73544abe24c5016.tar.gz",
"hash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=" "hash": "sha256-6E/yhXP7Oy/NbXtf1ktzmU8SdVqJQ09HC/48ebEGBpk="
} }
}, },
"version": 7 "version": 7
+6 -1
View File
@@ -7,6 +7,7 @@ let
overlays = [ ]; overlays = [ ];
}; };
treefmt = import ./nix/treefmt.nix { }; treefmt = import ./nix/treefmt.nix { };
kueuectl = pkgs.callPackage ./nix/kueuectl.nix { };
in in
pkgs.mkShellNoCC { pkgs.mkShellNoCC {
packages = [ packages = [
@@ -27,6 +28,7 @@ pkgs.mkShellNoCC {
pkgs.kubectl-rook-ceph pkgs.kubectl-rook-ceph
# other tools activate when needed # other tools activate when needed
kueuectl
# pkgs.step-cli # pkgs.step-cli
# pkgs.linkerd # pkgs.linkerd
# pkgs.cmctl # pkgs.cmctl
@@ -35,12 +37,15 @@ pkgs.mkShellNoCC {
# pkgs.renovate # pkgs.renovate
# pkgs.graphviz # pkgs.graphviz
# pkgs.hubble # pkgs.hubble
# pkgs.dapr-cli pkgs.cilium-cli
pkgs.dapr-cli
]; ];
# Environment variables # Environment variables
ARGOCD_ENV_CLUSTER_NAME = "ekman"; ARGOCD_ENV_CLUSTER_NAME = "ekman";
HELM_GIT_ACCESS_TOKEN = "glpat-xxx"; HELM_GIT_ACCESS_TOKEN = "glpat-xxx";
API_SERVER_IP = "localhost";
API_SERVER_PORT = "7445";
# Alternative shells # Alternative shells
passthru = pkgs.lib.mapAttrs (name: value: pkgs.mkShellNoCC (value // { inherit name; })) { passthru = pkgs.lib.mapAttrs (name: value: pkgs.mkShellNoCC (value // { inherit name; })) {
-1
View File
@@ -28,7 +28,6 @@ spec:
managedNamespaceMetadata: managedNamespaceMetadata:
labels: labels:
component: sys component: sys
shared-gateway-access: "true"
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
-40
View File
@@ -1,40 +0,0 @@
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: argocd-server
namespace: argocd
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-internal
hostnames:
- argocd.{{ .Values.clusterConfig.domain }}
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: argocd-server
port: 80
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-argocd
namespace: argocd
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: argocd-server
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": argocd
{{- end }}
+3
View File
@@ -94,6 +94,8 @@ spec:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
- namespace: jobset-system - namespace: jobset-system
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
- namespace: dex
server: https://kubernetes.default.svc
sourceRepos: sourceRepos:
- https://argoproj.github.io/argo-helm - https://argoproj.github.io/argo-helm
- https://kubernetes-sigs.github.io/metrics-server/ - https://kubernetes-sigs.github.io/metrics-server/
@@ -140,3 +142,4 @@ spec:
- https://operator.mariadb.com - https://operator.mariadb.com
- https://ot-container-kit.github.io/helm-charts - https://ot-container-kit.github.io/helm-charts
- https://twin.github.io/helm-charts - https://twin.github.io/helm-charts
- https://charts.dexidp.io
+1 -8
View File
@@ -4,11 +4,8 @@ global:
## Ref: https://github.com/argoproj/argo-cd ## Ref: https://github.com/argoproj/argo-cd
## ##
configs: configs:
params:
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
server.insecure: "true"
{{- end }}
{{- if .Values.argocd.anyNamespaces.enabled }} {{- if .Values.argocd.anyNamespaces.enabled }}
params:
applicationsetcontroller.namespaces: "{{ .Values.argocd.anyNamespaces.glob }}" applicationsetcontroller.namespaces: "{{ .Values.argocd.anyNamespaces.glob }}"
# TODO(kai): anyapp will disable PR review apps. Look into anyapp settings to fix it # TODO(kai): anyapp will disable PR review apps. Look into anyapp settings to fix it
applicationsetcontroller.enable.scm.providers: "false" applicationsetcontroller.enable.scm.providers: "false"
@@ -241,9 +238,6 @@ server:
serviceMonitor: serviceMonitor:
enabled: true enabled: true
ingress: ingress:
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
enabled: false
{{- else }}
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
@@ -260,7 +254,6 @@ server:
- secretName: argocd-tls - secretName: argocd-tls
hosts: hosts:
- "argocd.{{ .Values.clusterConfig.domain }}" - "argocd.{{ .Values.clusterConfig.domain }}"
{{- end }}
applicationSet: applicationSet:
metrics: metrics:
enabled: true enabled: true
+1 -55
View File
@@ -13,7 +13,7 @@ spec:
annotations: annotations:
load-balancer.hetzner.cloud/location: hel1 load-balancer.hetzner.cloud/location: hel1
load-balancer.hetzner.cloud/type: lb11 load-balancer.hetzner.cloud/type: lb11
load-balancer.hetzner.cloud/name: load-balancer-1 load-balancer.hetzner.cloud/name: load-balancer-2
load-balancer.hetzner.cloud/use-private-ip: "true" load-balancer.hetzner.cloud/use-private-ip: "true"
load-balancer.hetzner.cloud/uses-proxyprotocol: "true" load-balancer.hetzner.cloud/uses-proxyprotocol: "true"
load-balancer.hetzner.cloud/http-redirect-https: "false" load-balancer.hetzner.cloud/http-redirect-https: "false"
@@ -42,36 +42,6 @@ spec:
selector: selector:
matchLabels: matchLabels:
shared-gateway-access: "true" shared-gateway-access: "true"
- name: https-hel1
protocol: HTTPS
port: 443
hostname: "*.hel1.oceanbox.io"
tls:
certificateRefs:
- group: ''
kind: Secret
name: wildcard-hel1-oceanbox-io
allowedRoutes:
namespaces:
from: Selector
selector:
matchLabels:
shared-gateway-access: "true"
- name: https-internal
protocol: HTTPS
port: 443
hostname: "*.adm.hel1.obx"
tls:
certificateRefs:
- group: ''
kind: Secret
name: wildcard-adm-hel1-obx
allowedRoutes:
namespaces:
from: Selector
selector:
matchLabels:
shared-gateway-access: "true"
- name: ssh - name: ssh
protocol: TCP protocol: TCP
port: 22 port: 22
@@ -95,28 +65,4 @@ spec:
issuerRef: issuerRef:
name: letsencrypt-prod-dns01 name: letsencrypt-prod-dns01
kind: ClusterIssuer kind: ClusterIssuer
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: wildcard-hel1-oceanbox-io
spec:
secretName: wildcard-hel1-oceanbox-io
dnsNames:
- "*.hel1.oceanbox.io"
issuerRef:
name: letsencrypt-prod-dns01
kind: ClusterIssuer
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: wildcard-adm-hel1-obx
spec:
secretName: wildcard-adm-hel1-obx
dnsNames:
- "*.adm.hel1.obx"
issuerRef:
name: ca-issuer
kind: ClusterIssuer
{{- end}} {{- end}}
+6 -3
View File
@@ -1,8 +1,11 @@
cilium: cilium:
enabled: true enabled: true
# WireGuard cannot be used during migration -- Flannel nodes have no WireGuard clustermesh:
# keys so encrypted traffic is unreadable by them. enabled: false
# TODO: re-enable after migration clusterId: 2
# NodePort until L2LB is available (kubeproxyless)
apiserverServiceType: NodePort
# TODO: WireGuard blocks all traffic on ekman -- disable until root cause is found.
encryption: encryption:
enabled: false enabled: false
envoy: envoy:
+3
View File
@@ -1,5 +1,8 @@
cilium: cilium:
enabled: true enabled: true
clustermesh:
enabled: false
clusterId: 1
nodePort: nodePort:
enabled: true enabled: true
l2announcement: l2announcement:
+4
View File
@@ -30,4 +30,8 @@ cilium:
loadbalancerPool: loadbalancerPool:
enabled: false enabled: false
cidr: [] cidr: []
clustermesh:
enabled: false
clusterId: 0
apiserverServiceType: LoadBalancer
cluster: {{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }} cluster: {{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}
+14 -1
View File
@@ -1,3 +1,16 @@
cluster:
name: {{ .Values.cilium.cluster }}
id: {{ .Values.cilium.clustermesh.clusterId }}
{{- if .Values.cilium.clustermesh.enabled }}
clustermesh:
useAPIServer: true
apiserver:
service:
type: {{ .Values.cilium.clustermesh.apiserverServiceType }}
tls:
auto:
method: helm
{{- end }}
authentication: authentication:
mutual: mutual:
spire: spire:
@@ -90,7 +103,7 @@ operator:
prometheus: prometheus:
enabled: true enabled: true
port: 12301 port: 12301
serviceMointor: serviceMonitor:
enabled: true enabled: true
port: 12302 port: 12302
rollOutPods: true rollOutPods: true
-3
View File
@@ -28,9 +28,6 @@ spec:
- name: HELMFILE_FILE_PATH - name: HELMFILE_FILE_PATH
value: docs.yaml.gotmpl value: docs.yaml.gotmpl
syncPolicy: syncPolicy:
managedNamespaceMetadata:
labels:
shared-gateway-access: "true"
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
@@ -1 +0,0 @@
{{- /* HTTPRoute and CiliumNetworkPolicy are managed by the docs chart template */ -}}
+1 -1
View File
@@ -1,6 +1,6 @@
replicaCount: 1 replicaCount: 1
image: image:
tag: "e9fd3fc6-debug" tag: "0d279bb9-debug"
env: env:
- name: APP_VERSION - name: APP_VERSION
value: "0.0.0" value: "0.0.0"
-46
View File
@@ -1,46 +0,0 @@
replicaCount: 1
image:
tag: "e9fd3fc6-debug"
env:
- name: APP_VERSION
value: "0.0.0"
- name: LOG_LEVEL
value: "1"
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
ingress:
enabled: false
className: "nginx"
httpRoute:
enabled: true
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https
hostnames:
- docs.oceanbox.io
rules:
- matches:
- path:
type: PathPrefix
value: "/"
{{- else }}
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
oceanbox.io/expose: internal
hosts:
- host: docs.oceanbox.io
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- docs.oceanbox.io
secretName: docs-tls
{{- end }}
+27 -33
View File
@@ -1,38 +1,32 @@
apiVersion: gateway.networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: HTTPRoute kind: Ingress
metadata: 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 name: drupal
namespace: fornix namespace: fornix
spec: spec:
parentRefs: ingressClassName: nginx
- name: shared-gateway
namespace: kube-system
sectionName: https-hel1
hostnames:
- drupal.hel1.oceanbox.io
rules: rules:
- matches: - host: drupal.hel1.oceanbox.io
- path: http:
type: PathPrefix paths:
value: "/" - backend:
backendRefs: service:
- name: drupal name: drupal
port: 80 port:
--- number: 80
apiVersion: cilium.io/v2 path: /
kind: CiliumNetworkPolicy pathType: Prefix
metadata: tls:
name: allow-gateway-to-drupal - hosts:
namespace: fornix - drupal.hel1.oceanbox.io
spec: secretName: drupal-tls
endpointSelector:
matchLabels:
app: drupal
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": fornix
-2
View File
@@ -20,8 +20,6 @@ clusterConfig:
patterns: [] patterns: []
cidr: [] cidr: []
nodes: [] nodes: []
gatewayAPI:
enabled: true
ingress_whitelist: ingress_whitelist:
- 10.0.0.0/8 - 10.0.0.0/8
- 172.16.0.0/12 - 172.16.0.0/12
-2
View File
@@ -20,8 +20,6 @@ clusterConfig:
- 192.168.0.0/16 - 192.168.0.0/16
- 172.19.255.0/24 - 172.19.255.0/24
- 100.64.0.0/12 # tailnet - 100.64.0.0/12 # tailnet
gatewayAPI:
enabled: false
ingress_hostnetwork: false ingress_hostnetwork: false
ingress_hostport: false ingress_hostport: false
ingress_nodeport: true ingress_nodeport: true
-3
View File
@@ -31,9 +31,6 @@ spec:
targetRevision: main targetRevision: main
ref: values ref: values
syncPolicy: syncPolicy:
managedNamespaceMetadata:
labels:
shared-gateway-access: "true"
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
@@ -1,38 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: fornix
namespace: fornix
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-hel1
hostnames:
- fornix.hel1.oceanbox.io
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: fornix
port: 8085
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-fornix
namespace: fornix
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: fornix
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": fornix
+1 -1
View File
@@ -3,7 +3,7 @@ drupalUrl: http://drupal
replicaCount: 1 replicaCount: 1
ingress: ingress:
enabled: false enabled: true
className: "nginx" className: "nginx"
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-production cert-manager.io/cluster-issuer: letsencrypt-production
-1
View File
@@ -26,7 +26,6 @@ spec:
managedNamespaceMetadata: managedNamespaceMetadata:
labels: labels:
component: sys component: sys
shared-gateway-access: "true"
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
+3 -44
View File
@@ -1,48 +1,8 @@
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: gatus
namespace: uptime
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-internal
hostnames:
- uptime.{{ .Values.clusterConfig.domain }}
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: gatus
port: 80
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-gatus
namespace: uptime
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: gatus
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": uptime
{{- else }}
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
annotations: annotations:
cert-manager.io/cluster-issuer: {{ .Values.clusterConfig.ingress_clusterissuer }} cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/backend-protocol: HTTP nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/cors-allow-headers: Content-Type, x-gatus-cache nginx.ingress.kubernetes.io/cors-allow-headers: Content-Type, x-gatus-cache
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -55,7 +15,7 @@ metadata:
spec: spec:
ingressClassName: nginx ingressClassName: nginx
rules: rules:
- host: uptime.{{ .Values.clusterConfig.domain }} - host: uptime.adm.hel1.obx
http: http:
paths: paths:
- backend: - backend:
@@ -67,6 +27,5 @@ spec:
pathType: ImplementationSpecific pathType: ImplementationSpecific
tls: tls:
- hosts: - hosts:
- uptime.{{ .Values.clusterConfig.domain }} - uptime.adm.hel1.obx
secretName: gatus-tls secretName: gatus-tls
{{- end }}
@@ -14,36 +14,11 @@ spec:
- path: - path:
type: PathPrefix type: PathPrefix
value: "/" value: "/"
timeouts:
request: 600s
backendRequest: 600s
backendRefs: backendRefs:
- name: gitea-http - name: gitea-http
port: 3000 port: 3000
--- ---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-gitea
namespace: gitea
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: gitea
ingress:
- fromCIDRSet:
- cidr: 10.0.0.0/8
- cidr: 172.16.0.0/12
- cidr: 192.168.0.0/16
- cidr: 172.19.255.0/24
- cidr: 100.64.0.0/12
- cidr: 185.125.160.4/32
- cidr: 37.27.203.38/32
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": gitea
---
apiVersion: gateway.networking.k8s.io/v1alpha2 apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TCPRoute kind: TCPRoute
metadata: metadata:
+1 -1
View File
@@ -3,7 +3,7 @@ replicaCount: 1
image: image:
registry: "docker.gitea.com" registry: "docker.gitea.com"
repository: gitea repository: gitea
tag: "1.25.4" tag: "1.25.5"
resources: resources:
requests: requests:
-8
View File
@@ -1,8 +0,0 @@
{{- /* Gateway API: disable ingress when cilium gateway is enabled (HTTPRoute is in manifests/gateway-routes.yaml) */ -}}
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
ingress:
enabled: false
{{- else }}
ingress:
enabled: true
{{- end }}
+1 -1
View File
@@ -1,7 +1,7 @@
image: image:
repository: ghcr.io/juanfont/headscale repository: ghcr.io/juanfont/headscale
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
tag: v0.27.1 tag: v0.28.0
args: [ "serve" ] args: [ "serve" ]
+1 -1
View File
@@ -1,7 +1,7 @@
image: image:
repository: ghcr.io/juanfont/headscale repository: ghcr.io/juanfont/headscale
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
tag: v0.27.1 tag: v0.28.0
args: ["serve"] args: ["serve"]
+1 -1
View File
@@ -38,7 +38,7 @@ spec:
- group: "" - group: ""
kind: Secret kind: Secret
name: jobset-webhook-server-cert name: jobset-webhook-server-cert
namespace: default namespace: jobset-system
jsonPointers: jsonPointers:
- /data - /data
{{- end }} {{- end }}
+2 -1
View File
@@ -8,6 +8,7 @@ kubectl cp -n keycloak oceanbox-realm.json prod-keycloak-0:/tmp/backup/oceanbox-
kubectl cp -n keycloak oceanbox-users-0.json prod-keycloak-0:/tmp/backup/oceanbox-users-0.json kubectl cp -n keycloak oceanbox-users-0.json prod-keycloak-0:/tmp/backup/oceanbox-users-0.json
kc.sh -Djgroups.bind.port=7801 import --dir /tmp/backup kc.sh -Djgroups.bind.port=7801 import --dir /tmp/backup
``` ```
## Theme ## Theme
Our keycloak theme is inserted using the image provided [here](https://gitlab.com/oceanbox/keycloak-theme) The keycloak theme is maintained at [git.oceanbox.io/platform/keycloak-theme](https://git.oceanbox.io/platform/keycloak-theme) and is deployed via an init container using the `git.oceanbox.io/platform/keycloak-theme` image.
-2
View File
@@ -33,10 +33,8 @@ spec:
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
# - ServerSideApply=true
{{- if .Values.keycloak.autosync }} {{- if .Values.keycloak.autosync }}
automated: automated:
prune: true prune: true
# selfHeal: false
{{- end }} {{- end }}
{{- end }} {{- end }}
+3 -45
View File
@@ -1,26 +1,14 @@
replicaCount: 2 replicaCount: 2
# NOTE(mrtz): Hack for working with bitnami legacy registry
global:
security:
allowInsecureImages: true
image:
repository: bitnamilegacy/keycloak
production: true
proxy: edge
auth: auth:
adminPassword: en to tre fire adminPassword: en to tre fire
adminUser: admin
existingSecret: "" existingSecret: ""
managementPassword: "" managementPassword: ""
managementUser: manager
postgresql: postgresql:
enabled: false enabled: false
resourcesPreset: "none"
resources: resources:
limits: limits:
cpu: 750m cpu: 750m
@@ -48,37 +36,7 @@ extraVolumes:
name: theme name: theme
ingress: ingress:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
enabled: true
hostname: auth.oceanbox.io hostname: auth.oceanbox.io
ingressClassName: nginx
path: /
pathType: ImplementationSpecific
selfSigned: false
servicePort: http
tls: true
adminIngress:
enabled: false
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
oceanbox.io/expose: internal
hostname: keycloak.adm.oceanbox.io
ingressClassName: nginx
path: /
pathType: ImplementationSpecific
selfSigned: false
servicePort: http
tls: true
keycloakConfigCli: keycloakConfigCli:
enabled: false enabled: false
@@ -93,8 +51,8 @@ keycloakConfigCli:
initContainers: | initContainers: |
- name: keycloak-theme-provider - name: keycloak-theme-provider
image: docker.io/juselius/oceanbox-theme:1.2 image: git.oceanbox.io/platform/keycloak-theme:latest
imagePullPolicy: Always imagePullPolicy: IfNotPresent
command: command:
- sh - sh
args: args:
@@ -1,22 +1,7 @@
replicaCount: 1 replicaCount: 1
# NOTE(mrtz): Hack for working with bitnami legacy registry
global:
security:
allowInsecureImages: true
image:
repository: bitnamilegacy/keycloak
production: true
proxy: edge
auth: auth:
adminPassword: en to tre fire adminPassword: en to tre fire
adminUser: admin
existingSecret: ""
managementPassword: ""
managementUser: manager
postgresql: postgresql:
enabled: true enabled: true
@@ -24,58 +9,5 @@ postgresql:
postgresPassword: "avatar mustiness economic" postgresPassword: "avatar mustiness economic"
password: "punctured abstain facility" password: "punctured abstain facility"
extraVolumeMounts:
- mountPath: /opt/bitnami/keycloak/themes/oceanbox
name: theme
extraVolumes:
- emptyDir: {}
name: theme
ingress: ingress:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
enabled: true
hostname: auth.srv.oceanbox.io hostname: auth.srv.oceanbox.io
ingressClassName: nginx
path: /
pathType: ImplementationSpecific
selfSigned: false
servicePort: http
tls: true
adminIngress:
enabled: false
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
oceanbox.io/expose: internal
hostname: auth.adm.oceanbox.io
ingressClassName: nginx
path: /
pathType: ImplementationSpecific
selfSigned: false
servicePort: http
tls: true
initContainers: |
- name: keycloak-theme-provider
image: docker.io/juselius/oceanbox-theme:1.2
imagePullPolicy: Always
command:
- sh
args:
- -c
- |
echo "Copying theme..."
cp -R /theme/* /keycloak/themes/oceanbox
volumeMounts:
- name: theme
mountPath: /keycloak/themes/oceanbox
+29
View File
@@ -0,0 +1,29 @@
# NOTE(mrtz): Hack for working with bitnami legacy registry
global:
security:
allowInsecureImages: true
image:
repository: bitnamilegacy/keycloak
production: true
proxyHeaders: xforwarded
auth:
adminUser: admin
managementUser: manager
ingress:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
enabled: true
ingressClassName: nginx
path: /
pathType: ImplementationSpecific
selfSigned: false
servicePort: http
tls: true
-3
View File
@@ -1,3 +0,0 @@
kueue:
enabled: true
autosync: false
+46 -29
View File
@@ -1,51 +1,68 @@
apiVersion: kueue.x-k8s.io/v1beta1 apiVersion: kueue.x-k8s.io/v1beta2
kind: ResourceFlavor kind: ResourceFlavor
metadata: metadata:
name: compute # Just needs to exist, can be managed with tains/tolerations name: compute # Just needs to exist, can be managed with tains/tolerations
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
nodeLabels:
node-role.kubernetes.io/compute: compute
topology.kubernetes.io/group: c1 # Only run on C1 for now
--- ---
apiVersion: kueue.x-k8s.io/v1beta1 apiVersion: kueue.x-k8s.io/v1beta2
kind: ClusterQueue kind: ClusterQueue
metadata: metadata:
name: jobs name: cluster-queue
annotations:
argocd.argoproj.io/sync-wave: "2"
spec: spec:
cohort: general
namespaceSelector: {} # Accept workloads from any namespace namespaceSelector: {} # Accept workloads from any namespace
preemption: queueingStrategy: BestEffortFIFO
withinClusterQueue: "LowerPriority" # Allow higher priority to preempt lower # preemption:
# withinClusterQueue: "LowerPriority" # Allow higher priority to preempt lower
resourceGroups: resourceGroups:
- coveredResources: ["cpu", "memory"] # Cover both memory and cpu resources - coveredResources: ["cpu", "memory"] # Cover both memory and cpu resources
flavors: flavors:
- name: compute - name: compute
resources: resources:
- name: "cpu" - name: "cpu"
nominalQuota: '4' nominalQuota: '32'
- name: "memory" - name: "memory"
nominalQuota: 8Gi nominalQuota: 64Gi
# ---
# apiVersion: kueue.x-k8s.io/v1beta2
# kind: LocalQueue
# metadata:
# name: prod-queue
# namespace: prod-queue
# spec:
# clusterQueue: cluster-queue
--- ---
apiVersion: kueue.x-k8s.io/v1beta1 apiVersion: v1
kind: LocalQueue kind: Namespace
metadata: metadata:
name: prod-queue name: dev-queue
namespace: prod-sorcerer annotations:
spec: argocd.argoproj.io/sync-wave: "2"
clusterQueue: jobs
--- ---
apiVersion: kueue.x-k8s.io/v1beta1 apiVersion: kueue.x-k8s.io/v1beta2
kind: LocalQueue kind: LocalQueue
metadata: metadata:
name: staging-queue name: staging-queue
namespace: staging-sorcerer namespace: dev-queue
annotations:
argocd.argoproj.io/sync-wave: "2"
spec: spec:
clusterQueue: jobs clusterQueue: cluster-queue
--- # ---
apiVersion: kueue.x-k8s.io/v1beta1 # apiVersion: kueue.x-k8s.io/v1beta2
kind: WorkloadPriorityClass # kind: WorkloadPriorityClass
metadata: # metadata:
name: "normal" # name: "normal"
value: 100 # value: 100
--- # ---
apiVersion: kueue.x-k8s.io/v1beta1 # apiVersion: kueue.x-k8s.io/v1beta2
kind: WorkloadPriorityClass # kind: WorkloadPriorityClass
metadata: # metadata:
name: "high" # name: "high"
value: 200 # Higher value = higher priority # value: 200 # Higher value = higher priority
-89
View File
@@ -1,89 +0,0 @@
{{- if eq .Values.clusterConfig.cluster "ekman"}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kueueviz-ingress
namespace: kueue-system
annotations:
cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/websocket-services: kueue-kueueviz-backend
spec:
rules:
- host: kueue.dev.tos.obx
http:
paths:
- path: /ws
pathType: Prefix
backend:
service:
name: kueue-kueueviz-backend
port:
number: 8080
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: kueue-kueueviz-backend
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: kueue-kueueviz-frontend
port:
number: 8080
tls:
- hosts:
- kueue.dev.tos.obx
secretName: kueueviz-tls
{{- end}}
---
{{- if eq .Values.clusterConfig.cluster "rossby"}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kueueviz-ingress
namespace: kueue-system
annotations:
cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/websocket-services: kueue-kueueviz-backend
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
spec:
rules:
- host: kueue.dev.vtn.obx
http:
paths:
- path: /ws
pathType: Prefix
backend:
service:
name: kueue-kueueviz-backend
port:
number: 8080
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: kueue-kueueviz-backend
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: kueue-kueueviz-frontend
port:
number: 8080
tls:
- hosts:
- kueue.dev.vtn.obx
secretName: kueueviz-tls
{{- end}}
+2 -2
View File
@@ -5,6 +5,7 @@ metadata:
name: kueue name: kueue
namespace: argocd namespace: argocd
annotations: annotations:
argocd.argoproj.io/sync-wave: "1"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
argocd.argoproj.io/compare-options: ServerSideDiff=true argocd.argoproj.io/compare-options: ServerSideDiff=true
finalizers: finalizers:
@@ -27,7 +28,7 @@ spec:
value: {{ .Values.kueue.env }} value: {{ .Values.kueue.env }}
- name: HELMFILE_FILE_PATH - name: HELMFILE_FILE_PATH
value: kueue.yaml.gotmpl value: kueue.yaml.gotmpl
- repoURL: https://gitlab.com/oceanbox/manifests.git - repoURL: {{ .Values.clusterConfig.manifests }}
targetRevision: main targetRevision: main
ref: values ref: values
syncPolicy: syncPolicy:
@@ -41,4 +42,3 @@ spec:
selfHeal: false selfHeal: false
{{- end }} {{- end }}
{{- end }} {{- end }}
-9
View File
@@ -1,9 +0,0 @@
kueueViz:
backend:
env:
- name: KUEUEVIZ_ALLOWED_ORIGINS
value: "https://kueue.dev.tos.obx"
frontend:
env:
- name: REACT_APP_WEBSOCKET_URL
value: "wss://kueue.dev.tos.obx"
-9
View File
@@ -1,9 +0,0 @@
kueueViz:
backend:
env:
- name: KUEUEVIZ_ALLOWED_ORIGINS
value: "https://kueue.dev.vtn.obx"
frontend:
env:
- name: REACT_APP_WEBSOCKET_URL
value: "wss://kueue.dev.vtn.obx"
+3 -10
View File
@@ -1,12 +1,6 @@
controllerManager: managerConfig:
featureGates:
- name: TopologyAwareScheduling
enabled: true
- name: LocalQueueMetrics
enabled: true
managerConfig:
controllerManagerConfigYaml: | controllerManagerConfigYaml: |
apiVersion: config.kueue.x-k8s.io/v1beta1 apiVersion: config.kueue.x-k8s.io/v1beta2
kind: Configuration kind: Configuration
integrations: integrations:
frameworks: frameworks:
@@ -14,8 +8,7 @@ controllerManager:
- jobset.x-k8s.io/jobset - jobset.x-k8s.io/jobset
internalCertManagement: internalCertManagement:
enable: false enable: false
enableCertManager: false enableCertManager: true
enablePrometheus: true enablePrometheus: true
metrics: metrics:
prometheusNamespace: prometheus prometheusNamespace: prometheus
enableKueueViz: true
@@ -1 +0,0 @@
{{- /* HTTPRoute and CiliumNetworkPolicy are managed by the makai chart template */ -}}
-3
View File
@@ -28,9 +28,6 @@ spec:
- name: HELMFILE_FILE_PATH - name: HELMFILE_FILE_PATH
value: makai.yaml.gotmpl value: makai.yaml.gotmpl
syncPolicy: syncPolicy:
managedNamespaceMetadata:
labels:
shared-gateway-access: "true"
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
- ApplyOutOfSyncOnly=true - ApplyOutOfSyncOnly=true
-46
View File
@@ -1,46 +0,0 @@
replicaCount: 1
image:
tag: "d5e61949-debug"
env:
- name: APP_VERSION
value: "0.0.0"
- name: LOG_LEVEL
value: "1"
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
ingress:
enabled: false
className: "nginx"
httpRoute:
enabled: true
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https
hostnames:
- makai.oceanbox.io
rules:
- matches:
- path:
type: PathPrefix
value: "/"
{{- else }}
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
nginx.ingress.kubernetes.io/ssl-redirect: "true"
oceanbox.io/expose: internal
hosts:
- host: makai.oceanbox.io
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- makai.oceanbox.io
secretName: makai-tls
{{- end }}
-118
View File
@@ -1,118 +0,0 @@
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: grafana
namespace: prometheus
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-internal
hostnames:
- grafana.{{ .Values.clusterConfig.domain }}
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: prometheus-grafana
port: 80
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: alertmanager
namespace: prometheus
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-internal
hostnames:
- alertmanager.{{ .Values.clusterConfig.domain }}
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: prometheus-kube-prometheus-alertmanager
port: 9093
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: prometheus
namespace: prometheus
spec:
parentRefs:
- name: shared-gateway
namespace: kube-system
sectionName: https-internal
hostnames:
- prometheus.{{ .Values.clusterConfig.domain }}
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: prometheus-kube-prometheus-prometheus
port: 9090
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-grafana
namespace: prometheus
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: grafana
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": prometheus
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-alertmanager
namespace: prometheus
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: alertmanager
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": prometheus
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-gateway-to-prometheus
namespace: prometheus
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: prometheus
ingress:
- fromCIDRSet:
{{- range .Values.clusterConfig.ingress_whitelist }}
- cidr: {{ . }}
{{- end }}
- fromEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": prometheus
{{- end }}
@@ -26,7 +26,6 @@ spec:
managedNamespaceMetadata: managedNamespaceMetadata:
labels: labels:
component: sys component: sys
shared-gateway-access: "true"
syncOptions: syncOptions:
- ServerSideApply=true - ServerSideApply=true
- CreateNamespace=true - CreateNamespace=true
@@ -67,9 +67,6 @@ alertmanager:
storage: {} storage: {}
ingress: ingress:
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
enabled: false
{{- else }}
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
@@ -87,7 +84,6 @@ alertmanager:
- secretName: alertmanager-general-tls - secretName: alertmanager-general-tls
hosts: hosts:
- alertmanager.{{ .Values.clusterConfig.domain }} - alertmanager.{{ .Values.clusterConfig.domain }}
{{- end }}
ingressPerReplica: ingressPerReplica:
pathType: ImplementationSpecific pathType: ImplementationSpecific
@@ -174,9 +170,6 @@ grafana:
size: 10Gi size: 10Gi
{{- end }} {{- end }}
ingress: ingress:
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
enabled: false
{{- else }}
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
@@ -195,7 +188,6 @@ grafana:
- secretName: grafana-general-tls - secretName: grafana-general-tls
hosts: hosts:
- grafana.{{ .Values.clusterConfig.domain }} - grafana.{{ .Values.clusterConfig.domain }}
{{- end }}
sidecar: sidecar:
dashboards: dashboards:
enabled: true enabled: true
@@ -466,9 +458,6 @@ prometheus:
{{- end }} {{- end }}
ingress: ingress:
{{- if .Values.clusterConfig.gatewayAPI.enabled }}
enabled: false
{{- else }}
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
@@ -489,7 +478,6 @@ prometheus:
- secretName: prometheus-general-tls - secretName: prometheus-general-tls
hosts: hosts:
- prometheus.{{ .Values.clusterConfig.domain }} - prometheus.{{ .Values.clusterConfig.domain }}
{{- end }}
ingressPerReplica: ingressPerReplica:
enabled: false enabled: false
+41 -32
View File
@@ -1,41 +1,50 @@
# oauth2-proxy must be configured with --upstream=http://hubble-ui:80 apiVersion: networking.k8s.io/v1
# so that it proxies authenticated requests to hubble-ui. kind: Ingress
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: metadata:
annotations:
nginx.ingress.kubernetes.io/auth-signin: https://$host/oauth2/start?rd=$escaped_request_uri
nginx.ingress.kubernetes.io/auth-url: https://$host/oauth2/auth
oceanbox.io/expose: internal
name: hubble-ui name: hubble-ui
namespace: kube-system namespace: kube-system
spec: spec:
parentRefs: ingressClassName: nginx
- name: shared-gateway
namespace: kube-system
sectionName: https-hel1
hostnames:
- hubble.hel1.oceanbox.io
rules: rules:
- matches: - host: hubble.hel1.oceanbox.io
- path: http:
type: PathPrefix paths:
value: "/" - backend:
backendRefs: service:
- name: oauth2-proxy name: hubble-ui
port: 80 port:
number: 80
path: /
pathType: Prefix
--- ---
apiVersion: cilium.io/v2 apiVersion: networking.k8s.io/v1
kind: CiliumNetworkPolicy kind: Ingress
metadata: metadata:
name: allow-gateway-to-hubble-ui annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
nginx.ingress.kubernetes.io/proxy-buffer-size: 8k
nginx.ingress.kubernetes.io/proxy-busy-buffers-size: 16k
oceanbox.io/expose: internal
name: hubble-ui-oauth2-proxy
namespace: kube-system namespace: kube-system
spec: spec:
endpointSelector: ingressClassName: nginx
matchLabels: rules:
app.kubernetes.io/name: oauth2-proxy - host: hubble.hel1.oceanbox.io
ingress: http:
- fromCIDRSet: paths:
- cidr: 10.0.0.0/8 - backend:
- cidr: 172.16.0.0/12 service:
- cidr: 192.168.0.0/16 name: oauth2-proxy
- cidr: 100.64.0.0/12 port:
- fromEndpoints: name: http
- matchLabels: path: /oauth2
"k8s:io.kubernetes.pod.namespace": kube-system pathType: Prefix
tls:
- hosts:
- hubble.hel1.oceanbox.io
secretName: hubble-tls
@@ -1,6 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: kube-system
labels:
shared-gateway-access: "true"
@@ -9,4 +9,5 @@ spec:
- toFQDNs: - toFQDNs:
- matchName: login.microsoftonline.com - matchName: login.microsoftonline.com
- matchPattern: '*.microsoftonline.com' - matchPattern: '*.microsoftonline.com'
- matchName: graph.microsoft.com
{{- end }} {{- end }}
@@ -9,4 +9,5 @@ spec:
- toFQDNs: - toFQDNs:
- matchName: login.microsoftonline.com - matchName: login.microsoftonline.com
- matchPattern: '*.microsoftonline.com' - matchPattern: '*.microsoftonline.com'
- matchName: graph.microsoft.com
{{- end }} {{- end }}
-4
View File
@@ -72,7 +72,3 @@ metrics:
for: 15m for: 15m
labels: labels:
severity: critical severity: critical
kubectl:
image:
repository: docker.io/bitnamilegacy/kubectl
tag: 1.33.4