Skip to content

Commit de8e5e7

Browse files
committed
(openvpn) deploy mariadb operator
1 parent c4596ef commit de8e5e7

File tree

13 files changed

+279
-0
lines changed

13 files changed

+279
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
name: mariadb-operator
3+
defaultNamespace: &name mariadb-system
4+
labels:
5+
bundle: *name
6+
helm:
7+
chart: mariadb-operator
8+
releaseName: mariadb-operator
9+
repo: https://helm.mariadb.com/mariadb-operator
10+
version: 0.38.1
11+
waitForJobs: true
12+
timeoutSeconds: 900
13+
values:
14+
crds:
15+
enabled: true
16+
ha:
17+
enabled: true
18+
replicas: 2
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: metallb.io/v1beta1
2+
kind: IPAddressPool
3+
metadata:
4+
name: openvpndb
5+
namespace: metallb-system
6+
spec:
7+
addresses:
8+
- 139.229.144.10/32
9+
autoAssign: false
10+
---
11+
apiVersion: metallb.io/v1beta1
12+
kind: L2Advertisement
13+
metadata:
14+
name: openvpndb
15+
namespace: metallb-system
16+
spec:
17+
ipAddressPools:
18+
- openvpndb
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: external-secrets.io/v1
2+
kind: ExternalSecret
3+
metadata:
4+
name: dockerhub-secret
5+
namespace: openvpn-db
6+
spec:
7+
secretStoreRef:
8+
kind: ClusterSecretStore
9+
name: onepassword
10+
target:
11+
name: dockerhub-secret
12+
creationPolicy: Owner
13+
template:
14+
type: kubernetes.io/dockerconfigjson
15+
data:
16+
.dockerconfigjson: |
17+
{
18+
"auths": {
19+
"docker.io": {
20+
"username": "{{ .dockerhub_username }}",
21+
"password": "{{ .dockerhub_token }}",
22+
"auth": "{{ printf "%s:%s" .dockerhub_username .dockerhub_token | b64enc }}"
23+
}
24+
}
25+
}
26+
data:
27+
- secretKey: dockerhub_username
28+
remoteRef:
29+
key: lsstitadmin-docker-hub
30+
property: username
31+
- secretKey: dockerhub_token
32+
remoteRef:
33+
key: lsstitadmin-docker-hub
34+
property: docker hub api token
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
apiVersion: external-secrets.io/v1
3+
kind: ExternalSecret
4+
metadata:
5+
name: mariadb-root
6+
namespace: openvpn-db
7+
spec:
8+
secretStoreRef:
9+
kind: ClusterSecretStore
10+
name: onepassword
11+
target:
12+
name: mariadb-root
13+
creationPolicy: Owner
14+
data:
15+
- secretKey: mariadb-root-password
16+
remoteRef:
17+
key: ovpn-mariadb-root
18+
property: mariadb-root-password
19+
---
20+
apiVersion: external-secrets.io/v1
21+
kind: ExternalSecret
22+
metadata:
23+
name: mariadb-replication
24+
namespace: openvpn-db
25+
spec:
26+
secretStoreRef:
27+
kind: ClusterSecretStore
28+
name: onepassword
29+
target:
30+
name: mariadb-replication
31+
creationPolicy: Owner
32+
data:
33+
- secretKey: mariadb-replication-password
34+
remoteRef:
35+
key: ovpn-mariadb-replication
36+
property: mariadb-replication-password
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
resources:
2+
- external-secret-dockerhub.yaml
3+
- external-secret-openvpndb.yaml
4+
- service-mariadb-headless.yaml
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: mariadb-galera
5+
namespace: openvpn-db
6+
spec:
7+
clusterIP: None
8+
selector:
9+
app.kubernetes.io/name: mariadb
10+
ports:
11+
- protocol: TCP
12+
port: 3306
13+
targetPort: 3306
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defaultNamespace: openvpn-db
2+
labels:
3+
bundle: openvpn-db-pre
4+
name: openvpn-db-pre
5+
kustomize:
6+
dir: base

fleet/lib/openvpn-db/fleet.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: openvpn-db
2+
defaultNamespace: &name openvpn-db
3+
namespaceLabels:
4+
lsst.io/discover: "true"
5+
labels:
6+
bundle: *name
7+
dependsOn:
8+
- name: mariadb-operator
9+
namespace: mariadb-system
10+
- name: openvpn-db-pre
11+
namespace: openvpn-db
12+
targetCustomizations:
13+
- name: ayekan
14+
clusterSelector:
15+
matchExpressions:
16+
- key: management.cattle.io/cluster-display-name
17+
operator: In
18+
values:
19+
- ayekan
20+
kustomize:
21+
dir: overlays/ayekan
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
resources:
2+
- mariadb-cluster.yaml
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
apiVersion: k8s.mariadb.com/v1alpha1
2+
kind: MariaDB
3+
metadata:
4+
name: mariadb
5+
namespace: openvpn-db
6+
spec:
7+
replicas: 3
8+
galera:
9+
enabled: true
10+
primary:
11+
podIndex: 0
12+
automaticFailover: true
13+
sst: mariabackup
14+
15+
rootPasswordSecretKeyRef:
16+
name: mariadb-root
17+
key: mariadb-root-password
18+
19+
username: mariadb
20+
passwordSecretKeyRef:
21+
name: mariadb-replication
22+
key: mariadb-replication-password
23+
database: mariadb
24+
25+
image: docker.io/library/mariadb:11.4.5
26+
imagePullPolicy: IfNotPresent
27+
imagePullSecrets:
28+
- name: dockerhub-secret
29+
30+
storage:
31+
size: 100Gi
32+
storageClassName: rook-ceph-block
33+
34+
connection:
35+
secretName: connection-mariadb
36+
secretTemplate:
37+
key: dsn
38+
healthCheck:
39+
interval: 10s
40+
retryInterval: 3s
41+
params:
42+
parseTime: "true"
43+
44+
myCnf: |
45+
[mariadb]
46+
bind-address=*
47+
skip-name-resolve
48+
connect_timeout=30
49+
wait_timeout=28800
50+
interactive_timeout=28800
51+
net_read_timeout=60
52+
net_write_timeout=60
53+
max_connections=500
54+
max_allowed_packet=64M
55+
thread_cache_size=100
56+
table_open_cache=2048
57+
open_files_limit=65535
58+
default_storage_engine=InnoDB
59+
binlog_format=row
60+
innodb_autoinc_lock_mode=2
61+
innodb_buffer_pool_size=1024M
62+
63+
livenessProbe:
64+
exec:
65+
command:
66+
- bash
67+
- -c
68+
- mysqladmin ping -u root -p"$MARIADB_ROOT_PASSWORD" --silent
69+
periodSeconds: 10
70+
timeoutSeconds: 5
71+
72+
readinessProbe:
73+
exec:
74+
command:
75+
- bash
76+
- -c
77+
- >
78+
mariadb -u root -p"$MARIADB_ROOT_PASSWORD" -e "
79+
SHOW STATUS LIKE 'wsrep_ready';
80+
SHOW STATUS LIKE 'wsrep_local_state_comment';" |
81+
grep -q 'ON' && grep -q 'Synced'
82+
periodSeconds: 10
83+
timeoutSeconds: 5
84+
85+
service:
86+
type: ClusterIP
87+
primaryService:
88+
type: LoadBalancer
89+
metadata:
90+
annotations:
91+
metallb.universe.tf/address-pool: openvpndb
92+
secondaryService:
93+
type: ClusterIP
94+
95+
affinity:
96+
podAntiAffinity:
97+
requiredDuringSchedulingIgnoredDuringExecution:
98+
- labelSelector:
99+
matchLabels:
100+
app.kubernetes.io/name: mariadb
101+
topologyKey: kubernetes.io/hostname
102+
topologySpreadConstraints:
103+
- maxSkew: 1
104+
topologyKey: kubernetes.io/hostname
105+
whenUnsatisfiable: DoNotSchedule
106+
labelSelector:
107+
matchLabels:
108+
app.kubernetes.io/name: mariadb
109+
110+
podDisruptionBudget:
111+
minAvailable: 2
112+
113+
terminationGracePeriodSeconds: 180
114+
115+
podSecurityContext:
116+
runAsUser: 999
117+
runAsGroup: 999
118+
fsGroup: 999
119+
securityContext:
120+
allowPrivilegeEscalation: false
121+
readOnlyRootFilesystem: false
122+
123+
metrics:
124+
enabled: true

0 commit comments

Comments
 (0)