blob: d8aca0bd43f5c2e3072b0da9c7b77cf1c4433ee1 [file] [log] [blame]
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +01001local kube = import "../../../kube/hscloud.libsonnet";
2
3{
4 local top = self,
5 local cfg = self.cfg,
6
7 cfg:: {
8 name: "wordpress",
9 namespace: "personal-radex",
10 domain: "wordpress.hs.radex.io",
11
12 storageClassName: "waw-hdd-redundant-3",
13 storageSize: "5Gi",
14 },
15
16 secrets:: {
17 mysql: { secretKeyRef: { name: cfg.name, key: 'mysql_password' } },
18 wordpress: { secretKeyRef: { name: cfg.name, key: 'wordpress_password' } },
19 },
20
radex99ed6a72023-11-24 11:42:55 +010021 local ns = kube.Namespace(cfg.namespace),
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010022
radex99ed6a72023-11-24 11:42:55 +010023 deployment: ns.Contain(kube.Deployment(cfg.name)) {
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010024 spec+: {
25 replicas: 1,
26 template+: {
27 spec+: {
28 containers_: {
29 default: kube.Container("default") {
30 image: 'bitnami/wordpress',
31 resources: {
32 requests: { cpu: "50m", memory: "128M" },
33 limits: { cpu: "750m", memory: "256M" },
34 },
35 ports_: {
36 http: { containerPort: 8080 },
37 },
38 env_: {
39 WORDPRESS_DATABASE_HOST: 'wordpress-mysql',
40 WORDPRESS_DATABASE_NAME: 'wordpress',
41 WORDPRESS_DATABASE_USER: 'wordpress',
42 WORDPRESS_DATABASE_PASSWORD: top.secrets.mysql,
43 WORDPRESS_USERNAME: 'admin',
44 WORDPRESS_PASSWORD: top.secrets.wordpress,
45 },
46 },
47 },
48 },
49 },
50 },
51 },
52
radex99ed6a72023-11-24 11:42:55 +010053 service: ns.Contain(kube.Service(cfg.name)) {
radex8b8f3872023-11-24 11:09:46 +010054 target:: top.deployment,
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010055 },
56
radex99ed6a72023-11-24 11:42:55 +010057 ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010058 hosts:: [cfg.domain],
59 target_service:: top.service,
60 },
61
62 mysql: {
63 local mysql = self,
64
radex99ed6a72023-11-24 11:42:55 +010065 volume: ns.Contain(kube.PersistentVolumeClaim("wordpress-mysql")) {
radex36964dc2023-11-24 11:19:46 +010066 storage:: cfg.storageSize,
67 storageClass:: cfg.storageClassName,
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010068 },
69
radex99ed6a72023-11-24 11:42:55 +010070 deployment: ns.Contain(kube.Deployment("wordpress-mysql")) {
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +010071 spec+: {
72 replicas: 1,
73 template+: {
74 spec+: {
75 volumes_: {
76 data: kube.PersistentVolumeClaimVolume(mysql.volume),
77 },
78 containers_: {
79 default: kube.Container("default") {
80 image: "mysql:8.2.0",
81 ports_: {
82 client: { containerPort: 3306 },
83 },
84 env_: {
85 MYSQL_RANDOM_ROOT_PASSWORD: "yes",
86 MYSQL_DATABASE: "wordpress",
87 MYSQL_USER: "wordpress",
88 MYSQL_PASSWORD: top.secrets.mysql,
89 },
90 volumeMounts_: {
91 data: { mountPath: '/var/lib/mysql' },
92 },
93 }
94 },
95 securityContext: {
96 runAsUser: 999,
97 },
98 }
99 }
100 }
101 },
102
radex99ed6a72023-11-24 11:42:55 +0100103 service: ns.Contain(kube.Service("wordpress-mysql")) {
radex8b8f3872023-11-24 11:09:46 +0100104 target:: mysql.deployment,
Radek Pietruszewskie1dbc3c2023-10-29 22:21:35 +0100105 },
106 },
107}