7 Commits

17 changed files with 415 additions and 163 deletions

View File

@ -13,7 +13,6 @@ steps:
RUST_LOG: info
commands:
- cdh --kind helmfile -p $CI_WORKSPACE/helmfile.yaml --helmfile-environment badhouseplants -o --output html >> result.html
notification:
image: deblan/woodpecker-email
settings:

View File

@ -16,22 +16,6 @@ steps:
- mkdir $HOME/.kube
- echo "$KUBECONFIG_CONTENT" > $HOME/.kube/config && chmod 0600 $HOME/.kube/config
- helmfile -e $ENVIRONMENT diff --suppress-secrets
notification:
image: deblan/woodpecker-email
settings:
from: woody@badhouseplants.net
host: badhouseplants.net
username:
from_secret: smtp_username
password:
from_secret: smtp_password
recipients:
- allanger@badhouseplants.net
subject: CDH result
target: main
when:
- status: [success, failure]
apply:
image: ghcr.io/helmfile/helmfile:canary
secrets: [sops_age_key, kubeconfig_content]

View File

@ -5,47 +5,42 @@ releases:
- <<: *drone
installed: true
namespace: drone-service
createNamespace: false
createNamespace: true
- <<: *drone-runner-docker
installed: true
namespace: drone-service
createNamespace: false
createNamespace: true
- <<: *longhorn
installed: true
namespace: longhorn-system
createNamespace: false
createNamespace: true
- <<: *argocd
installed: true
namespace: argo-system
createNamespace: false
createNamespace: true
- <<: *nrodionov
installed: true
namespace: nrodionov-application
createNamespace: false
- <<: *elementor
installed: true
namespace: elementor-application
createNamespace: false
createNamespace: true
- <<: *minecraft
installed: true
namespace: minecraft-application
createNamespace: false
createNamespace: true
- <<: *gitea
installed: true
namespace: gitea-service
createNamespace: false
createNamespace: true
- <<: *funkwhale
installed: true
namespace: funkwhale-application
createNamespace: false
createNamespace: true
- <<: *prometheus
installed: true
@ -55,16 +50,11 @@ releases:
- <<: *loki
installed: true
namespace: monitoring-system
createNamespace: false
createNamespace: true
- <<: *promtail
installed: true
namespace: monitoring-system
createNamespace: false
- <<: *bitwarden
installed: false
namespace: bitwarden-application
createNamespace: true
- <<: *redis
@ -87,11 +77,6 @@ releases:
namespace: database-service
createNamespace: true
- <<: *mysql
installed: false
namespace: database-service
createNamespace: true
- <<: *docker-mailserver
installed: true
namespace: mail-service
@ -100,7 +85,7 @@ releases:
- <<: *istio-gateway-resources
installed: true
namespace: istio-system
createNamespace: false
createNamespace: true
- <<: *vaultwarden
createNamespace: true
@ -112,6 +97,16 @@ releases:
namespace: woodpecker-ci
createNamespace: true
- <<: *rook-ceph
installed: true
namespace: rook-ceph
createNamespace: true
- <<: *rook-ceph-cluster
installed: true
namespace: rook-ceph-cluster
createNamespace: true
bases:
- ../environments.yaml
- ../repositories.yaml

View File

@ -1,28 +0,0 @@
wordpressPassword: ENC[AES256_GCM,data:WVNPgi7QCoCeYqpWETnZWtxnT5dl7Ffzlg==,iv:1nhk8JDEfBSXQwEVUgimsYvv1iyTS2YgALW3Pr2R3Jc=,tag:Xy9BtSWl4V7pyJelZyZN1g==,type:str]
wordpressEmail: ENC[AES256_GCM,data:BXVBeqlUsBS3iLB1LlaZmEVBbCifjSjOiEg=,iv:hbkrawGiZCFka0zuK0mPSLpR6JMgP87pEZIGhAXB1dg=,tag:sWzT00jZZ3mnCPQR85ncEA==,type:str]
mariadb:
auth:
rootPassword: ENC[AES256_GCM,data:BT0YXF8MxiapCyJ4sZ0LwAAfLYzImtfPfw==,iv:W5l1TA6FJXZ9iNTWXKP5wsyB75hG+R0WrCM/QdJ4gxo=,tag:qPg5hBfY7gsAbIFVgUilYQ==,type:str]
database: ENC[AES256_GCM,data:EB/3kKgiTLOWORXhgRpZKYA=,iv:XZXr0vPl0idWYewicpNB+P4CypF3HqndH0uDsx8ZMFY=,tag:2X6rZ3Rw8uCnM+c/I+1Jew==,type:str]
username: ENC[AES256_GCM,data:41CY65J+EfKW0oiq,iv:VGs3Ka3u1KjFI7ZK6WXvus/DNbQkNAHModJcvnAkQ14=,tag:VNDVXpixML+bTc9RZ7IGCg==,type:str]
password: ENC[AES256_GCM,data:Kg417xg8acWSAyMgKyRNzpQ4y5Ow+kLr4A==,iv:L2vr8DtMx6mYPMAStdUooVSVhKKv8YLB3rCsNwzE4f0=,tag:I/j1EAgc65qzHrCUABcDeg==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1vzkv97n2p7gfkw8dyx8ctz2kumattz89th2jq47zyjyrarmnssysdkw9v8
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0U2QxWDMwMkxxdG1QK0No
VU1sejBKellnSGFpSXpVRTE0clcvS0Q0NXpVCnFXRlpsVXQ0V2NlYk1nUjlUY1Fj
NEJVYkVxalEvdDliSGY3c2dqRmQ4ZWcKLS0tIERYd0laME1iR203SFRPWTlPaCtB
T0dvMXp6NkwwTkRKcFpYMHlJVGFKejAKIy1VdB7mSXLkHZywSc1c+VUgtc0mrUrD
oStf0xCbfZvKx0XhA+u7R0jM5rM6CfvQr4yYTpW2fDszsS9yKjH33A==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-12-13T20:16:19Z"
mac: ENC[AES256_GCM,data:vQZxLR2SCEJd29DC9OuSeoblM4vgELPEAVG/1fxpchKzlh2QpKdyz51Art0ATsKcoHM8RjKztMxne5LN2VciFAdvfn3fa4/itG1oK/b8FM0PQkcLJAxtZFeZLfTtW9NCPfTorcEIcA+3PUwSjW1dO6BaeEFxpA9dSceOJd6dXd8=,iv:DzpEwuTFtdzjEh0T1x7W70nluLM1XH8gabLeulgow7g=,tag:9ak6El1tY8W8X//gC0Gbqw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1

View File

@ -2,7 +2,7 @@ vaultwarden:
smtp:
username: ENC[AES256_GCM,data:6kAu3et5PmRgZ7B/qQQKA/hwsubozpBEcuzA,iv:cqNO3VWKFRWqBRAFTf2AyMQskuZvcDghseT2PWEsCjA=,tag:nkzugvJTJ/KhLuldXxdBrg==,type:str]
password:
value: ENC[AES256_GCM,data:9PJzeGeXiNN50GrWMxU1ho9+jHs=,iv:wOrU8g/xBBKFRYvDB1G/I+VG3lpvFdMirgJmP01PbhQ=,tag:dlDq9S+SQmlb4SZIGYhrlQ==,type:str]
value: ENC[AES256_GCM,data:rTCIH4vU7sfCNu6FxfdfyPKKQ01MQHBM0g==,iv:ZKD98V5W1GH0NZCfYG86AdFhbe8Ig+nCHFdU0NGcQT4=,tag:cL3fSAKntmWZ/QvSPYwbvw==,type:str]
adminToken:
value: ENC[AES256_GCM,data:PT62LcyiNqW1NVeuZ5+HTj8fzwSwuD1av/Z8S2GnR6j62+F8/aibhW/ATFG92chw++w=,iv:LnaRBem4dsggV4u4IlNjlWY301ajAHot2D259Y383m0=,tag:f24QDtGrtNJFA95Qo6Umqg==,type:str]
sops:
@ -20,8 +20,8 @@ sops:
U25tMkxQS1gzcyt6R2NkZnVLRVVoOWMKZSaIZxzTlYim2kmiHrQcgRu9XmWelRkT
HZZmSa0L9yEdksUCK3+iqjCZhQBYc/6qJHRYvuAaJ+/hs5RxuLUr8g==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-10-20T07:01:25Z"
mac: ENC[AES256_GCM,data:Oa6UiHJR5U8Tquo/FmKM2LNR1l7Tdc95T55sl8IbC80ywC5hmJcpOdYXSeVzAdEtr2EauEH74FAwyFtjeFHpneRjkl8Hx0Vann3qBMJ1laxYEQhKESqeyJTcMv15Hu61aUQ+OhW9hP9xkcRCNmkXHa0KeoCXy1aloTWc3u7Ls8E=,iv:SsywMpg5KQvfsFbIRiZkEadtQ7Ce2AqjM9+zeaG/ZaM=,tag:X426dGhxmeMqDJnRs4Qhww==,type:str]
lastmodified: "2023-12-25T19:33:37Z"
mac: ENC[AES256_GCM,data:Fl9x8f4YlhAciCdRNRWukK4lj/OqP+TJ8+xEXUSb+1FqUAv/aHocy/f3IuzEhgq/+i9RSKORy2+glYBdK+tL50FzaPQCXz9YgYMtshsIkfkVIw2j9R7sqs5Uo5fQ6g5V3ir5/czb8FSqoS7S+2onyHxZawuG1XCWYPPLATVrKa8=,iv:7K6NABns5rzYIJgthRxqkGD5bQXKPhgIxoCs2ZS0JGY=,tag:FvTTObosyFZom45xuVABog==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1

View File

@ -1,59 +0,0 @@
---
# ------------------------------------------
# -- Istio extenstion. Just because I'm
# -- not using ingress nginx
# ------------------------------------------
istio:
enabled: true
istio:
- name: elementor-http
gateway: istio-system/badhouseplants-net
kind: http
hostname: elementor.badhouseplants.net
service: elementor-wordpress
port: 8080
ext-database:
enabled: true
name: nrodionov-mysql
instance: mysql
wordpressPlugins:
- elementor
wordpressBlogName: Elementor
wordpressUsername: admin
wordpressFirstName: Nikolai
wordpressLastName: Rodionov
wordpressTablePrefix: wp_
wordpressScheme: http
existingWordPressConfigurationSecret: ""
resources:
requests:
memory: 300Mi
cpu: 10m
service:
type: ClusterIP
ports:
http: 8080
https: 8443
persistence:
enabled: true
storageClass: ""
accessModes:
- ReadWriteOnce
accessMode: ReadWriteOnce
size: 2Gi
dataSource: {}
existingClaim: ""
selector: {}
mariadb:
enabled: true
primary:
persistence:
enabled: true
storageClass: ""
accessModes:
- ReadWriteOnce
size: 3Gi

View File

@ -76,7 +76,7 @@ istio-gateway:
- '*'
port:
name: ssh
number: 22
number: 2022
protocol: TCP
- name: badhouseplants-minecraft
servers:

View File

@ -6,7 +6,7 @@ service:
protocol: TCP
targetPort: 25565
- name: ssh-gitea
port: 22
port: 2222
protocol: TCP
targetPort: 22
- name: http2
@ -21,10 +21,6 @@ service:
port: 1194
protocol: TCP
targetPort: 1194
- name: tcp
port: 25
protocol: TCP
targetPort: 25
# -----------
# -- Email
# -----------

View File

@ -1,6 +1,10 @@
metrics:
enabled: false
secretAnnotations:
reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "gitea-service,funkwhale-application"
architecture: standalone
master:
persistence:

View File

@ -0,0 +1,96 @@
cephFileSystems:
- name: ceph-filesystem
spec:
metadataPool:
replicated:
size: 3
dataPools:
- failureDomain: host
replicated:
size: 3
name: data0
metadataServer:
activeCount: 1
activeStandby: true
resources:
limits:
cpu: "200m"
memory: "256Mi"
requests:
cpu: "50m"
memory: "128Mi"
priorityClassName: system-cluster-critical
storageClass:
enabled: true
isDefault: false
name: ceph-filesystem
pool: data0
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: "Immediate"
mountOptions: []
parameters:
csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner
csi.storage.k8s.io/provisioner-secret-namespace: "{{ .Release.Namespace }}"
csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner
csi.storage.k8s.io/controller-expand-secret-namespace: "{{ .Release.Namespace }}"
csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node
csi.storage.k8s.io/node-stage-secret-namespace: "{{ .Release.Namespace }}"
csi.storage.k8s.io/fstype: ext4
cephObjectStores: []
# - name: ceph-objectstore
# spec:
# metadataPool:
# failureDomain: host
# replicated:
# size: 3
# dataPool:
# failureDomain: host
# erasureCoded:
# dataChunks: 2
# codingChunks: 1
# preservePoolsOnDelete: true
# gateway:
# port: 80
# resources:
# limits:
# cpu: "150m"
# memory: "256Mi"
# requests:
# cpu: "50m"
# memory: "128Mi"
# instances: 1
# priorityClassName: system-cluster-critical
# storageClass:
# enabled: true
# name: ceph-bucket
# reclaimPolicy: Delete
# volumeBindingMode: "Immediate"
# parameters:
# region: us-east-1
# ingress:
# enabled: false
cephClusterSpec:
resources:
mgr:
limits:
cpu: "200m"
memory: "512Mi"
requests:
cpu: "100m"
memory: "128Mi"
mon:
limits:
cpu: "200m"
memory: "512Mi"
requests:
cpu: "100m"
memory: "128Mi"
osd:
limits:
cpu: "200m"
memory: "2Gi"
requests:
cpu: "100m"
memory: "256Mi"

View File

@ -0,0 +1,215 @@
---
csi:
csiRBDProvisionerResource: |
- name : csi-provisioner
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-resizer
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-attacher
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-snapshotter
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-rbdplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-omap-generator
resource:
requests:
memory: 12Mi
cpu: 250m
limits:
memory: 1Gi
cpu: 500m
- name : liveness-prometheus
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
# -- CEPH CSI RBD plugin resource requirement list
# @default -- see values.yaml
csiRBDPluginResource: |
- name : driver-registrar
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : csi-rbdplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : liveness-prometheus
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
# -- CEPH CSI CephFS provisioner resource requirement list
# @default -- see values.yaml
csiCephFSProvisionerResource: |
- name : csi-provisioner
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-resizer
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-attacher
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-snapshotter
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-cephfsplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : liveness-prometheus
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
# -- CEPH CSI CephFS plugin resource requirement list
# @default -- see values.yaml
csiCephFSPluginResource: |
- name : driver-registrar
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : csi-cephfsplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : liveness-prometheus
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
# -- CEPH CSI NFS provisioner resource requirement list
# @default -- see values.yaml
csiNFSProvisionerResource: |
- name : csi-provisioner
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
- name : csi-nfsplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : csi-attacher
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
# -- CEPH CSI NFS plugin resource requirement list
# @default -- see values.yaml
csiNFSPluginResource: |
- name : driver-registrar
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m
- name : csi-nfsplugin
resource:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 50m

View File

@ -18,6 +18,11 @@ ext-database:
credentials:
WOODPECKER_DATABASE_DATASOURCE: "postgres://{{ .Username }}:{{ .Password }}@{{ .Hostname }}:{{ .Port }}/{{ .Database }}?sslmode=disable"
server:
#image:
# registry: git.badhouseplants.net
# repository: allanger/woodpecker-server
# pullPolicy: Always
# tag: icon
enabled: true
env:
WOODPECKER_GITEA: true
@ -34,13 +39,9 @@ server:
- woodpecker-postgres16-creds
agent:
image:
# -- The image registry
registry: git.badhouseplants.net
# -- The image repository
repository: allanger/woodpecker-agent
# -- The pull policy for the image
pullPolicy: Always
# -- Overrides the image tag whose default is the chart appVersion.
tag: dev
enabled: true
extraSecretNamesForEnvFrom: []

View File

@ -1,5 +1,5 @@
environments:
badhouseplants:
kubeContext: badhouseplants
kubeContext: badhouseplants-arm
etersoft:
kubeContext: etersoft

View File

@ -9,42 +9,47 @@ releases:
- <<: *metrics-server
installed: true
namespace: kube-system
createNamespace: false
createNamespace: true
- <<: *istio-base
installed: true
namespace: istio-system
createNamespace: false
createNamespace: true
- <<: *istio-gateway
installed: true
namespace: istio-system
createNamespace: false
createNamespace: true
- <<: *istiod
installed: true
namespace: istio-system
createNamespace: false
createNamespace: true
- <<: *cert-manager
installed: true
namespace: cert-manager
createNamespace: false
createNamespace: true
- <<: *minio
installed: true
namespace: minio-service
createNamespace: false
createNamespace: true
- <<: *openvpn
installed: true
namespace: openvpn-service
createNamespace: false
createNamespace: true
- <<: *metallb
installed: true
namespace: metallb-system
createNamespace: true
- <<: *reflector
installed: true
namespace: reflector-system
createNamespace: true
helmfiles:
- path: {{.Environment.Name }}/helmfile.yaml

View File

@ -250,16 +250,6 @@ templates:
- template: ext-istio-resource
- template: ext-database
elementor: &elementor
name: elementor
chart: bitnami/wordpress
version: 18.1.24
inherit:
- template: default-env-values
- template: default-env-secrets
- template: ext-istio-resource
- template: ext-database
minio: &minio
name: minio
chart: minio/minio
@ -362,3 +352,22 @@ templates:
- template: default-env-secrets
- template: ext-istio-resource
- template: ext-database
reflector: &reflector
name: reflector
chart: emberstack/reflector
version: 7.1.216
rook-ceph: &rook-ceph
name: rook-ceph
chart: rook/rook-ceph
version: v1.13.1
inherit:
- template: default-env-values
rook-ceph-cluster: &rook-ceph-cluster
name: rook-ceph-cluster
chart: rook/rook-ceph-cluster
version: v1.13.1
inherit:
- template: default-env-values

View File

@ -1,4 +1,3 @@
---
repositories:
- name: metrics-server
url: https://kubernetes-sigs.github.io/metrics-server/
@ -40,3 +39,9 @@ repositories:
url: https://badhouseplants.github.io/helm-charts/
- name: woodpecker
url: https://woodpecker-ci.org
- name: firefly-iii
url: https://firefly-iii.github.io/kubernetes/
- name: emberstack
url: https://emberstack.github.io/helm-charts
- name: rook
url: https://charts.rook.io/release

30
test/test.yaml Normal file
View File

@ -0,0 +1,30 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: Pod
metadata:
name: pvc-test
spec:
restartPolicy: Never
volumes:
- name: vol
persistentVolumeClaim:
claimName: pvc-test
containers:
- name: pv-recycler
image: ubuntu
command: ["/bin/sh", "-c", "sleep 10000"]
volumeMounts:
- name: vol
mountPath: /data