Compare commits

..

14 Commits

13 changed files with 120 additions and 39 deletions

View File

@@ -1,4 +1,4 @@
replicaCount: 3 replicaCount: 1
image: image:
runAsNonRoot: true runAsNonRoot: true
nodeSelector: nodeSelector:

View File

@@ -73,7 +73,7 @@ export class NixCache extends Construct {
namespace, namespace,
}, },
spec: { spec: {
replicas: "3", replicas: "1",
selector: { selector: {
matchLabels: { matchLabels: {
app: name, app: name,

View File

@@ -70,7 +70,7 @@ export class NpmCache extends Construct {
namespace, namespace,
}, },
spec: { spec: {
replicas: "3", replicas: "1",
selector: { selector: {
matchLabels: { matchLabels: {
app: name, app: name,

View File

@@ -6,3 +6,6 @@ prometheus:
webhook: webhook:
timeoutSeconds: 4 timeoutSeconds: 4
enableCertificateOwnerRef: true enableCertificateOwnerRef: true
extraArgs:
- "--dns01-recursive-nameservers-only"
- "--dns01-recursive-nameservers=1.1.1.1:53"

View File

@@ -3,11 +3,6 @@ image:
providers: providers:
kubernetesCRD: kubernetesCRD:
allowCrossNamespace: true allowCrossNamespace: true
ingress:
ingressClass:
enabled: false
isDefaultClass: true
name: traefik
deployment: deployment:
replicas: 1 replicas: 1
podLabels: podLabels:
@@ -25,28 +20,11 @@ topologySpreadConstraints:
matchLabels: matchLabels:
app: traefik app: traefik
additionalArguments: additionalArguments:
- "--entryPoints.ssh.address=:22/tcp" - "--entryPoints.ssh.address=:2222/tcp"
- "--entryPoints.minecraft-gtnh.address=:25566/tcp"
- "--entryPoints.minecraft-tfg.address=:25567/tcp"
ports: ports:
ssh: ssh:
name: ssh port: 2222
port: 22 exposedPort: 2222
exposedPort: 22
expose:
default: true
protocol: TCP
minecraft-gtnh:
name: minecraft-gtnh
port: 25566
exposedPort: 25566
expose:
default: true
protocol: TCP
minecraft-tfg:
name: minecraft-tfg
port: 25567
exposedPort: 25567
expose: expose:
default: true default: true
protocol: TCP protocol: TCP

View File

@@ -0,0 +1,55 @@
---
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elasticsearch
namespace: elastic-system
spec:
version: 8.15.2
http:
tls:
certificate:
secretName: elasticsearch-es-http-tls-internal
nodeSets:
- name: master
count: 3
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
limits:
memory: 8Gi
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: longhorn
config:
node.roles: ["master"]
- name: data
count: 3
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
limits:
memory: 8Gi
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: longhorn
config:
node.roles: ["data", "ingest"]

16
elasticsearch/kibana.yaml Normal file
View File

@@ -0,0 +1,16 @@
---
apiVersion: kibana.k8s.elastic.co/v1beta1
kind: Kibana
metadata:
name: kibana
namespace: elastic-system
spec:
version: 8.15.2
count: 1
elasticsearchRef:
name: elasticsearch
http:
tls:
certificate:
secretName: kibana-kb-http-tls-internal

View File

@@ -3,8 +3,8 @@ import { TerraformStack } from "cdktf";
import { KubernetesProvider } from "@cdktf/provider-kubernetes/lib/provider"; import { KubernetesProvider } from "@cdktf/provider-kubernetes/lib/provider";
import { NamespaceV1 } from "@cdktf/provider-kubernetes/lib/namespace-v1"; import { NamespaceV1 } from "@cdktf/provider-kubernetes/lib/namespace-v1";
import { OnePasswordSecret } from "../../utils"; import { OnePasswordSecret } from "../../utils";
import { TerraFirmaGreg } from "./tfg"; // import { TerraFirmaGreg } from "./tfg";
import { GTNH } from "./gtnh"; // import { GTNH } from "./gtnh";
export class GamingServices extends TerraformStack { export class GamingServices extends TerraformStack {
constructor(scope: Construct, id: string) { constructor(scope: Construct, id: string) {
@@ -29,7 +29,7 @@ export class GamingServices extends TerraformStack {
itemPath: "vaults/Lab/items/curseforge", itemPath: "vaults/Lab/items/curseforge",
}); });
new TerraFirmaGreg(this, "tfg", provider, namespace); // new TerraFirmaGreg(this, "tfg", provider, namespace);
new GTNH(this, "gtnh", provider, namespace); // new GTNH(this, "gtnh", provider, namespace);
} }
} }

View File

@@ -53,7 +53,7 @@ export class MinecraftServer extends Construct {
}, },
waitForRollout: false, waitForRollout: false,
spec: { spec: {
replicas: "1", replicas: "0",
serviceName: name, serviceName: name,
updateStrategy: [ updateStrategy: [
{ {
@@ -75,10 +75,6 @@ export class MinecraftServer extends Construct {
{ {
metadata: { metadata: {
name: `${name}-data`, name: `${name}-data`,
labels: {
"recurring-job.longhorn.io/source": "enabled",
"recurring-job.longhorn.io/daily-backup": "enabled",
},
}, },
spec: { spec: {
accessModes: ["ReadWriteOnce"], accessModes: ["ReadWriteOnce"],

View File

@@ -42,5 +42,14 @@ export class K8SOperators extends TerraformStack {
}); });
barman.node.addDependency(cnpg); barman.node.addDependency(cnpg);
new Release(this, "elasticsearch", {
provider: helm,
repository: "https://helm.elastic.co",
chart: "eck-operator",
name: "elasticsearch",
namespace: "elastic-system",
createNamespace: true,
});
} }
} }

View File

@@ -79,7 +79,7 @@ export class GiteaServer extends Construct {
match: "HostSNI(`*`)", match: "HostSNI(`*`)",
entryPoint: "ssh", entryPoint: "ssh",
serviceName: `${name}-ssh`, serviceName: `${name}-ssh`,
servicePort: 22, servicePort: 2222,
}); });
new PublicIngressRoute(this, "http-ingress", { new PublicIngressRoute(this, "http-ingress", {

View File

@@ -12,6 +12,7 @@ service:
ssh: ssh:
annotations: annotations:
metallb.universe.tf/allow-shared-ip: gitea metallb.universe.tf/allow-shared-ip: gitea
port: 2222
ingress: ingress:
enabled: false enabled: false
gitea: gitea:
@@ -40,7 +41,7 @@ gitea:
SSH_DOMAIN: git.dogar.dev SSH_DOMAIN: git.dogar.dev
DISABLE_SSH: false DISABLE_SSH: false
SSH_LISTEN_PORT: 2222 SSH_LISTEN_PORT: 2222
SSH_PORT: 22 SSH_PORT: 2222
database: database:
DB_TYPE: postgres DB_TYPE: postgres
HOST: postgres-cluster-rw HOST: postgres-cluster-rw

View File

@@ -8,6 +8,7 @@ import { GiteaRunner, GiteaServer } from "./gitea";
import { AuthentikServer } from "./authentik"; import { AuthentikServer } from "./authentik";
import { PostgresCluster } from "./postgres"; import { PostgresCluster } from "./postgres";
import { DynamicDNS } from "./dynamic-dns"; import { DynamicDNS } from "./dynamic-dns";
import { PublicIngressRoute } from "../utils";
export class UtilityServices extends TerraformStack { export class UtilityServices extends TerraformStack {
constructor(scope: Construct, id: string) { constructor(scope: Construct, id: string) {
@@ -71,6 +72,8 @@ export class UtilityServices extends TerraformStack {
"pip.dogar.dev", "pip.dogar.dev",
"npm.dogar.dev", "npm.dogar.dev",
"go.dogar.dev", "go.dogar.dev",
"elastic.dogar.dev",
"kibana.dogar.dev",
], ],
}); });
@@ -114,5 +117,25 @@ export class UtilityServices extends TerraformStack {
name: "gitea-runner", name: "gitea-runner",
replicas: 3, replicas: 3,
}); });
new PublicIngressRoute(this, "elasticsearch", {
provider: kubernetes,
namespace: "elastic-system",
name: "elasticsearch",
host: "elastic.dogar.dev",
serviceName: "elasticsearch-es-http",
servicePort: 9200,
serviceProtocol: "https",
});
new PublicIngressRoute(this, "kibana", {
provider: kubernetes,
namespace: "elastic-system",
name: "kibana",
host: "kibana.dogar.dev",
serviceName: "kibana-kb-http",
servicePort: 5601,
serviceProtocol: "https",
});
} }
} }