Compare commits

..

288 Commits

Author SHA1 Message Date
alexlebens
610af91b32 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-03-06 00:10:46 +00:00
alexlebens
d3abb9efb5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-03-03 17:17:28 +00:00
alexlebens
473bbf0dba Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-03-03 17:16:31 +00:00
alexlebens
9de1e8bb20 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-02-26 19:58:07 +00:00
alexlebens
c273645944 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-02-18 02:19:47 +00:00
alexlebens
35b6e040fb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-02-18 02:17:50 +00:00
alexlebens
0a73098177 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-02-18 02:16:40 +00:00
alexlebens
2510671468 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-31 03:08:56 +00:00
alexlebens
528fb29dc1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-17 23:23:32 +00:00
alexlebens
71a76aef91 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-08 23:39:27 +00:00
alexlebens
a683733861 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-08 21:50:39 +00:00
alexlebens
7193fa0e43 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-08 21:34:13 +00:00
alexlebens
4d0778700c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-08 21:20:44 +00:00
alexlebens
9400aae940 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-07 20:22:42 +00:00
alexlebens
bd37be4bd5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2025-01-07 19:45:54 +00:00
alexlebens
11918960dc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-30 23:11:15 +00:00
alexlebens
e5ad8122cb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-30 23:04:31 +00:00
alexlebens
34c5ae6ff9 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-30 23:00:56 +00:00
alexlebens
efaf49caeb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-30 22:55:32 +00:00
alexlebens
c0b6e849ae Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-25 03:08:20 +00:00
alexlebens
38487b296b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 23:29:48 +00:00
alexlebens
13b0b3c060 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:48:31 +00:00
alexlebens
81d804f550 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:40:38 +00:00
alexlebens
72c30e6dc5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:30:04 +00:00
alexlebens
f0c2cd0b19 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:26:54 +00:00
alexlebens
45670a55c8 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:22:53 +00:00
alexlebens
5d96c9a1d6 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 05:08:32 +00:00
alexlebens
9c0b97c753 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 04:54:14 +00:00
alexlebens
5b4f8d0ed7 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 04:46:33 +00:00
alexlebens
f07d9ec151 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 04:40:09 +00:00
alexlebens
515f4f91be Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 04:31:16 +00:00
alexlebens
a2dc782e14 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-22 04:20:27 +00:00
alexlebens
fe322f909e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-21 01:33:43 +00:00
alexlebens
fd75a39adb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-21 01:25:55 +00:00
alexlebens
7b29fe16d8 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-19 20:50:15 +00:00
alexlebens
081ac23ce4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-19 19:59:50 +00:00
alexlebens
552ee9f4ce Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-19 19:58:55 +00:00
alexlebens
9b96e15872 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-16 16:32:15 +00:00
alexlebens
6b9abf71cb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-12-12 17:13:15 +00:00
alexlebens
4b84ec822a Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-11-24 04:41:10 +00:00
alexlebens
c08ddac2cb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-11-24 04:38:54 +00:00
alexlebens
0194e3fb79 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-10-19 05:59:06 +00:00
alexlebens
37e3de028e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-10-13 17:39:19 +00:00
alexlebens
3ac94f8aed Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-10-13 04:35:21 +00:00
alexlebens
30c8789ffa Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-10-13 04:18:28 +00:00
alexlebens
8f4de35f4a Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-10-12 00:03:40 +00:00
alexlebens
4dafc9c9e2 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-09-28 21:44:00 +00:00
alexlebens
b42ff70fb3 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-09-28 07:07:44 +00:00
alexlebens
047338cf09 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-09-28 02:30:22 +00:00
alexlebens
9524ccad75 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-08-24 06:30:34 +00:00
alexlebens
a82c593200 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-08-19 21:43:11 +00:00
alexlebens
13da8c9acb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-08-19 21:41:35 +00:00
alexlebens
b6ceaa4dcd Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-08-19 21:40:30 +00:00
alexlebens
500d1cb201 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-07-08 17:09:44 +00:00
alexlebens
6d5e37091c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-07-05 03:52:17 +00:00
alexlebens
d374fb1638 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-07-05 03:45:55 +00:00
alexlebens
563b46e16b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-07-05 03:41:51 +00:00
alexlebens
7776863d14 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-07-01 23:08:39 +00:00
alexlebens
4f02bbc1c7 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-28 22:01:20 +00:00
alexlebens
224437bb9b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-22 23:26:36 +00:00
alexlebens
d5a477f068 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-22 23:22:39 +00:00
alexlebens
9149d3c05c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-22 23:18:20 +00:00
alexlebens
dc072ba102 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-22 22:59:00 +00:00
alexlebens
c3bb7d6137 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-15 02:37:15 +00:00
alexlebens
7e38a8aa04 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-15 02:31:10 +00:00
alexlebens
4486902d0e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-15 02:24:04 +00:00
alexlebens
81006a958e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-15 02:17:59 +00:00
alexlebens
a1b6a39989 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-13 16:01:17 +00:00
alexlebens
4caa7851a4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-06-13 15:58:46 +00:00
alexlebens
0930742d3e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-28 20:28:16 +00:00
alexlebens
4f2ed4e5cc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-28 20:09:51 +00:00
alexlebens
43f7bf3766 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-28 19:04:11 +00:00
alexlebens
ad7e930bd9 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-26 20:43:35 +00:00
alexlebens
7a3cfda12f Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-26 20:31:27 +00:00
alexlebens
da8171ce2c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-26 20:28:37 +00:00
alexlebens
e4cbf821a7 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-25 02:50:46 +00:00
alexlebens
efed4951f6 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-25 02:01:05 +00:00
alexlebens
32927c3c64 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-20 17:14:22 +00:00
alexlebens
6239551f2c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-20 17:12:31 +00:00
alexlebens
3992d9a7a0 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-18 19:40:36 +00:00
alexlebens
9700f8c662 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-18 19:40:23 +00:00
alexlebens
a12294d785 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-17 17:08:33 +00:00
alexlebens
939bb2a104 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-17 17:08:04 +00:00
alexlebens
98a660ac54 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 22:19:58 +00:00
alexlebens
784bd59523 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 18:57:46 +00:00
alexlebens
064e67a9fd Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 18:44:44 +00:00
alexlebens
b9a68c67b1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 18:44:26 +00:00
alexlebens
0b69ea6362 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 18:15:32 +00:00
alexlebens
1ba753446f Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:49:02 +00:00
alexlebens
9f1c32e5fc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:48:43 +00:00
alexlebens
4147016809 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:47:56 +00:00
alexlebens
24b52d8716 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:46:59 +00:00
alexlebens
2576527aa0 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:46:04 +00:00
alexlebens
2aae35d757 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:45:31 +00:00
alexlebens
548db97f81 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:45:02 +00:00
alexlebens
094a8b3b90 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:43:19 +00:00
alexlebens
222a87befc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:42:05 +00:00
alexlebens
44be1ae304 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:35:54 +00:00
alexlebens
e8fb911722 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:35:46 +00:00
alexlebens
7cd16dd92f Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-05-16 17:35:21 +00:00
alexlebens
1f240a8fac Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-26 20:36:10 +00:00
alexlebens
4b84bd188e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-26 20:05:43 +00:00
alexlebens
f4a591eaca Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-26 16:00:28 +00:00
alexlebens
8a0068c120 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-23 22:43:42 +00:00
alexlebens
fc751e627b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-23 21:58:06 +00:00
alexlebens
37e374fa31 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-23 09:35:00 +00:00
alexlebens
d6062263de Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-23 09:33:12 +00:00
alexlebens
631e5c3073 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-22 12:43:52 +00:00
alexlebens
d9e72caf94 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-21 12:41:00 +00:00
alexlebens
4d909a32b4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-21 10:03:50 +00:00
alexlebens
390b7ccfa1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-21 09:59:41 +00:00
alexlebens
5e0fc7ffbe Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-20 03:37:42 +00:00
alexlebens
7fd290fb89 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 11:41:59 +00:00
alexlebens
4b4acdf570 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 11:32:49 +00:00
alexlebens
4ee3bb4d49 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 11:22:34 +00:00
alexlebens
d04e10a4e5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 11:05:31 +00:00
alexlebens
86b7430210 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 11:01:43 +00:00
alexlebens
c4c054f983 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 10:59:06 +00:00
alexlebens
933a92bb07 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 10:54:26 +00:00
alexlebens
952ab164d4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 10:51:14 +00:00
alexlebens
c588e18077 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 10:41:47 +00:00
alexlebens
0e91873833 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 10:09:46 +00:00
alexlebens
3843f7d272 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-19 04:03:15 +00:00
alexlebens
b3f43086d7 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 11:49:33 +00:00
alexlebens
af8a8127fe Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 11:35:26 +00:00
alexlebens
c0f6ac7fbc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 10:35:57 +00:00
alexlebens
bf62fdd631 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 09:44:09 +00:00
alexlebens
b4718bce46 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 09:27:18 +00:00
alexlebens
792a5723be Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:51:23 +00:00
alexlebens
6ca9b94db4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:48:20 +00:00
alexlebens
a530195ea9 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:39:49 +00:00
alexlebens
02801b1aa1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:35:35 +00:00
alexlebens
810d74b2ae Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:17:31 +00:00
alexlebens
d69a2d28b0 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 07:07:54 +00:00
alexlebens
d054e42199 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 02:02:05 +00:00
alexlebens
63b5ca7614 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 02:00:24 +00:00
alexlebens
4be5cd418d Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:16:18 +00:00
alexlebens
df96e6556e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:14:18 +00:00
alexlebens
59b2ed8001 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:10:07 +00:00
alexlebens
cd9fbe56a4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:05:45 +00:00
alexlebens
20fcd67ea3 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:05:27 +00:00
alexlebens
6f6d30a862 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 01:03:35 +00:00
alexlebens
f1a65dd177 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-18 00:55:51 +00:00
alexlebens
bdd7060748 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-17 10:43:21 +00:00
alexlebens
07e2ac7acd Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-15 09:32:13 +00:00
alexlebens
787765f1e7 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-15 08:48:10 +00:00
alexlebens
9f18f3ba2f Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-15 08:44:39 +00:00
alexlebens
e62daee353 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:38:22 +00:00
alexlebens
85f3f47dca Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:33:14 +00:00
alexlebens
9ff16890c5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:28:29 +00:00
alexlebens
c68b04c38e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:20:27 +00:00
alexlebens
04d98c0d65 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:14:46 +00:00
alexlebens
62512ca909 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:12:10 +00:00
alexlebens
9409e36b58 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:07:43 +00:00
alexlebens
25af8d718d Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 05:05:34 +00:00
alexlebens
554c480d39 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 04:58:16 +00:00
alexlebens
b55dfc3cad Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 04:31:36 +00:00
alexlebens
afd5c8b4b2 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 04:30:03 +00:00
alexlebens
c7cf440b0e Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-14 04:18:12 +00:00
alexlebens
a5be172d48 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 20:58:43 +00:00
alexlebens
dbc1cdd8d5 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 09:28:43 +00:00
alexlebens
3c2d3d6ef4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 09:25:13 +00:00
alexlebens
6890d1d974 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 08:42:04 +00:00
alexlebens
df8bfb1b55 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 08:06:16 +00:00
alexlebens
a6cb051c9c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-13 02:11:30 +00:00
alexlebens
8154a36b2d Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 23:42:50 +00:00
alexlebens
297b3f9a70 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 01:38:02 +00:00
alexlebens
af003f0990 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 01:35:24 +00:00
alexlebens
0a2facc20d Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 01:33:37 +00:00
alexlebens
f06d4e26a1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 01:32:16 +00:00
alexlebens
a2a25f3e2d Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 01:05:35 +00:00
alexlebens
e7ee0ee1d6 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 00:04:57 +00:00
alexlebens
0553d58a6b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-12 00:04:10 +00:00
alexlebens
5db00bf5b8 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-11 23:45:21 +00:00
alexlebens
57178b4b42 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-11 23:38:45 +00:00
alexlebens
18f2464049 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-10 04:35:45 +00:00
alexlebens
ba610b41c8 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-10 02:17:05 +00:00
alexlebens
3cfedcd13f Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-09 00:19:33 +00:00
alexlebens
1d4547aea8 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-08 17:30:43 +00:00
alexlebens
eea3e93b2c Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-08 17:28:25 +00:00
alexlebens
72087e86aa Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-06 21:41:20 +00:00
alexlebens
ee1f7a1760 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-05 05:22:32 +00:00
alexlebens
97d93a6f55 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-04 20:53:50 +00:00
alexlebens
98cc39ddcc Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-04 19:43:30 +00:00
alexlebens
cd41ea7174 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-04 19:36:55 +00:00
alexlebens
c65b033644 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-04 17:48:42 +00:00
alexlebens
e07b07eb64 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-04-04 02:15:59 +00:00
AlexanderLebens
871e6e0a62 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-04-01 15:28:34 +00:00
AlexanderLebens
e80814b9b9 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 22:47:56 +00:00
AlexanderLebens
e37a5842f5 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:49:04 +00:00
AlexanderLebens
7be8dfcd6b Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:43:27 +00:00
AlexanderLebens
d69358027d Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:32:36 +00:00
AlexanderLebens
3c36d6ce01 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:27:42 +00:00
AlexanderLebens
4a583293fc Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:23:11 +00:00
AlexanderLebens
04bce9d600 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 20:17:37 +00:00
AlexanderLebens
c8b61dec7e Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 19:31:03 +00:00
AlexanderLebens
fca1400d3b Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-30 19:30:25 +00:00
alexlebens
ec74e2fae0 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-25 16:16:36 +00:00
alexlebens
f0d53c3b4a Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-25 16:16:00 +00:00
alexlebens
25b7379a06 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-25 16:13:23 +00:00
alexlebens
6462d8fed1 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-25 16:12:41 +00:00
alexlebens
de2b2541c0 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-22 21:50:46 +00:00
alexlebens
8dde430d41 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-22 21:42:25 +00:00
alexlebens
f27eaafdaa Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-18 07:30:19 +00:00
alexlebens
fc12a578fb Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-18 07:28:35 +00:00
AlexanderLebens
a05bcb83cb Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-17 07:32:37 +00:00
AlexanderLebens
c62e8ab3ef Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:56:20 +00:00
AlexanderLebens
f44a361278 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:52:30 +00:00
AlexanderLebens
558fdfd00e Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:42:04 +00:00
AlexanderLebens
f38e146609 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:37:11 +00:00
AlexanderLebens
10129a8e68 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:34:23 +00:00
AlexanderLebens
814ac3c4f8 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:29:21 +00:00
AlexanderLebens
23d159db0a Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:21:50 +00:00
AlexanderLebens
51ae6468dc Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:13:01 +00:00
AlexanderLebens
cbff0f59f2 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 15:04:39 +00:00
AlexanderLebens
bce9ccfa78 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 14:16:57 +00:00
AlexanderLebens
f6a0eedc3f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 13:25:42 +00:00
AlexanderLebens
3cca83b6cc Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 13:16:04 +00:00
AlexanderLebens
3f309e422c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 11:44:27 +00:00
AlexanderLebens
455e9d9384 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 10:38:58 +00:00
AlexanderLebens
c7fdfd8f5c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 10:12:03 +00:00
AlexanderLebens
bd13cce830 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 10:11:36 +00:00
AlexanderLebens
bfc0e8b773 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 07:43:11 +00:00
AlexanderLebens
c784a90fed Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 07:35:02 +00:00
AlexanderLebens
6eba5070ff Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 05:05:02 +00:00
AlexanderLebens
9ef14fba32 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 04:38:07 +00:00
AlexanderLebens
3c9a2f82af Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 04:37:02 +00:00
AlexanderLebens
e1c29c604f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-16 01:12:28 +00:00
AlexanderLebens
c3e8cf22cc Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 08:23:47 +00:00
AlexanderLebens
bbfb4ee61c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 08:19:27 +00:00
AlexanderLebens
c459ef40d3 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 08:16:54 +00:00
AlexanderLebens
9f16e49683 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 08:01:11 +00:00
AlexanderLebens
5b21ae3351 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 07:57:42 +00:00
AlexanderLebens
57458962e8 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-15 05:59:33 +00:00
alexlebens
543addccb4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-14 23:11:53 +00:00
AlexanderLebens
02f2335783 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 14:59:42 +00:00
AlexanderLebens
08d9c65bd9 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 14:53:10 +00:00
AlexanderLebens
716d16810f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 14:47:17 +00:00
AlexanderLebens
7bb2f3ff91 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 12:32:57 +00:00
AlexanderLebens
e8d1097b55 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 07:30:33 +00:00
AlexanderLebens
106f40f661 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-14 06:18:30 +00:00
AlexanderLebens
27cf8540f7 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 12:00:48 +00:00
AlexanderLebens
5273942d52 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 12:00:42 +00:00
AlexanderLebens
76049fa566 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 11:55:07 +00:00
AlexanderLebens
69252499cd Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 11:49:51 +00:00
AlexanderLebens
d913d3da59 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 11:46:28 +00:00
AlexanderLebens
396bbfe5f2 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 11:40:51 +00:00
AlexanderLebens
4c895a4ed0 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 10:43:34 +00:00
AlexanderLebens
e9a392c950 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 10:38:16 +00:00
AlexanderLebens
445738af76 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 07:12:16 +00:00
AlexanderLebens
9ea0742dfa Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 07:08:49 +00:00
AlexanderLebens
4e9899edc7 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 07:07:19 +00:00
AlexanderLebens
f55b3255e3 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-13 05:23:51 +00:00
AlexanderLebens
f39c7c4a80 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-12 04:53:06 +00:00
AlexanderLebens
480d729a4c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-12 04:50:09 +00:00
AlexanderLebens
250938ffff Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-03-12 04:36:40 +00:00
alexlebens
6c3ad7f7ad Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-03-07 18:25:14 +00:00
alexlebens
e1bc375c55 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-28 15:41:17 +00:00
alexlebens
c75b850bfa Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-28 14:42:47 +00:00
alexlebens
ed29678481 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-27 00:46:29 +00:00
alexlebens
a7a249fe91 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-24 00:12:51 +00:00
alexlebens
15375ef4ba Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-23 20:14:02 +00:00
alexlebens
d49119097b Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-23 02:02:58 +00:00
alexlebens
570a13a8f4 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-23 01:02:14 +00:00
alexlebens
6888ede71a Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-22 20:57:28 +00:00
alexlebens
16acf28739 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-22 20:49:20 +00:00
alexlebens
6bda8bee03 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-22 20:05:19 +00:00
alexlebens
0278d8c496 Update index.yaml
Signed-off-by: alexlebens <alexlebens@users.noreply.github.com>
2024-02-21 12:50:25 +00:00
AlexanderLebens
6dfd30b631 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-15 18:47:52 +00:00
AlexanderLebens
e62ffb332d Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 14:34:35 +00:00
AlexanderLebens
3792ad098f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 14:07:08 +00:00
AlexanderLebens
ad46386aaf Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:58:08 +00:00
AlexanderLebens
8976ae00ec Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:41:25 +00:00
AlexanderLebens
3ca7ae0bec Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:40:11 +00:00
AlexanderLebens
cfa13cf66a Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:16:12 +00:00
AlexanderLebens
8bf1ac6e6c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:07:07 +00:00
AlexanderLebens
aaf2cda058 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 13:01:22 +00:00
AlexanderLebens
75c28e6358 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 04:05:20 +00:00
AlexanderLebens
a36ea6690f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 03:56:01 +00:00
AlexanderLebens
6cb3333d9f Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 03:06:36 +00:00
AlexanderLebens
5e9f0b0c7c Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-13 02:34:06 +00:00
AlexanderLebens
663f974072 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-10 18:35:00 +00:00
AlexanderLebens
4b0c86c2b9 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-10 18:12:55 +00:00
AlexanderLebens
ee7ea230e6 Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-10 11:09:13 +00:00
AlexanderLebens
5f147e0d0a Update index.yaml
Signed-off-by: AlexanderLebens <AlexanderLebens@users.noreply.github.com>
2024-02-10 10:16:35 +00:00
1ab49f7f94 change readme 2024-02-10 03:04:42 -07:00
2992ee5b5b change readme 2024-02-10 03:03:06 -07:00
be85591839 remove for page 2024-02-10 02:53:41 -07:00
62 changed files with 6018 additions and 3719 deletions

View File

@@ -1,38 +0,0 @@
name: lint-and-test-charts
on: pull_request
jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: latest
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
check-latest: true
- name: Set up Chart Testing
uses: helm/chart-testing-action@v2.7.0
- name: Run Chart Testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --target-branch ${{ gitea.event.repository.default_branch }})
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Run Chart Testing (lint)
if: steps.list-changed.outputs.changed == 'true'
run: ct lint --target-branch ${{ gitea.event.repository.default_branch }}

View File

@@ -1,66 +0,0 @@
name: release-charts-cloudfbarman-cloudlared
on:
push:
branches:
- main
paths:
- "charts/barman-cloud/**"
workflow_dispatch:
env:
WORKFLOW_DIR: "charts/barman-cloud"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: latest
- name: Package Helm Chart
run: |
cd $WORKFLOW_DIR
helm dependency build
echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV
- name: Publish Helm Chart to Harbor
run: |
helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }}
helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts
- name: Publish Helm Chart to Gitea
run: |
helm plugin install https://github.com/chartmuseum/helm-push
helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm
helm cm-push ${{ env.PACKAGE_PATH }} helm-charts
- name: Extract Chart Metadata
run: |
cd $WORKFLOW_DIR
echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV
echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV
- name: Release Helm Chart
uses: akkuman/gitea-release-action@v1
with:
name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
files: |-
${{ env.PACKAGE_PATH }}
- name: Actions Ntfy
run: |
curl \
-H "Authorization: Bearer ${{ secrets.NTFY_CRED }}" \
-H "Title: Chart Released: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}" \
-H "Content-Type: text/plain" \
-d $'Repo: ${{ gitea.repository }}\nCommit: ${{ gitea.sha }}\nRef: ${{ gitea.ref }}\nStatus: ${{ job.status}}' \
${{ secrets.NTFY_URL }}

View File

@@ -1,66 +0,0 @@
name: release-charts-cloudflared
on:
push:
branches:
- main
paths:
- "charts/cloudflared/**"
workflow_dispatch:
env:
WORKFLOW_DIR: "charts/cloudflared"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: latest
- name: Package Helm Chart
run: |
cd $WORKFLOW_DIR
helm dependency build
echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV
- name: Publish Helm Chart to Harbor
run: |
helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }}
helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts
- name: Publish Helm Chart to Gitea
run: |
helm plugin install https://github.com/chartmuseum/helm-push
helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm
helm cm-push ${{ env.PACKAGE_PATH }} helm-charts
- name: Extract Chart Metadata
run: |
cd $WORKFLOW_DIR
echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV
echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV
- name: Release Helm Chart
uses: akkuman/gitea-release-action@v1
with:
name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
files: |-
${{ env.PACKAGE_PATH }}
- name: Actions Ntfy
run: |
curl \
-H "Authorization: Bearer ${{ secrets.NTFY_CRED }}" \
-H "Title: Chart Released: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}" \
-H "Content-Type: text/plain" \
-d $'Repo: ${{ gitea.repository }}\nCommit: ${{ gitea.sha }}\nRef: ${{ gitea.ref }}\nStatus: ${{ job.status}}' \
${{ secrets.NTFY_URL }}

View File

@@ -1,66 +0,0 @@
name: release-charts-generic-device-plugin
on:
push:
branches:
- main
paths:
- "charts/generic-device-plugin/**"
workflow_dispatch:
env:
WORKFLOW_DIR: "charts/generic-device-plugin"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: latest
- name: Package Helm Chart
run: |
cd $WORKFLOW_DIR
helm dependency build
echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV
- name: Publish Helm Chart to Harbor
run: |
helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }}
helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts
- name: Publish Helm Chart to Gitea
run: |
helm plugin install https://github.com/chartmuseum/helm-push
helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm
helm cm-push ${{ env.PACKAGE_PATH }} helm-charts
- name: Extract Chart Metadata
run: |
cd $WORKFLOW_DIR
echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV
echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV
- name: Release Helm Chart
uses: akkuman/gitea-release-action@v1
with:
name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
files: |-
${{ env.PACKAGE_PATH }}
- name: Actions Ntfy
run: |
curl \
-H "Authorization: Bearer ${{ secrets.NTFY_CRED }}" \
-H "Title: Chart Released: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}" \
-H "Content-Type: text/plain" \
-d $'Repo: ${{ gitea.repository }}\nCommit: ${{ gitea.sha }}\nRef: ${{ gitea.ref }}\nStatus: ${{ job.status}}' \
${{ secrets.NTFY_URL }}

View File

@@ -1,66 +0,0 @@
name: release-charts-postgres-cluster
on:
push:
branches:
- main
paths:
- "charts/postgres-cluster/**"
workflow_dispatch:
env:
WORKFLOW_DIR: "charts/postgres-cluster"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: latest
- name: Package Helm Chart
run: |
cd $WORKFLOW_DIR
helm dependency build
echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV
- name: Publish Helm Chart to Harbor
run: |
helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }}
helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts
- name: Publish Helm Chart to Gitea
run: |
helm plugin install https://github.com/chartmuseum/helm-push
helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm
helm cm-push ${{ env.PACKAGE_PATH }} helm-charts
- name: Extract Chart Metadata
run: |
cd $WORKFLOW_DIR
echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV
echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV
- name: Release Helm Chart
uses: akkuman/gitea-release-action@v1
with:
name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
files: |-
${{ env.PACKAGE_PATH }}
- name: Actions Ntfy
run: |
curl \
-H "Authorization: Bearer ${{ secrets.NTFY_CRED }}" \
-H "Title: Chart Released: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}" \
-H "Content-Type: text/plain" \
-d $'Repo: ${{ gitea.repository }}\nCommit: ${{ gitea.sha }}\nRef: ${{ gitea.ref }}\nStatus: ${{ job.status}}' \
${{ secrets.NTFY_URL }}

View File

@@ -1,29 +0,0 @@
name: release-charts
on:
push:
branches:
- main
paths:
- "charts/**"
jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.7.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

12
.gitignore vendored
View File

@@ -1,12 +0,0 @@
# Archived
charts/**/archive
# Compiled Helm chart dependencies
charts/**/Chart.lock
charts/**/charts/
# Testing
__snapshot__/
# Docs
_site/

View File

@@ -1,19 +0,0 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-added-large-files
- id: check-yaml
exclude: 'charts/'
args:
- --multi
- repo: https://github.com/norwoodj/helm-docs
rev: v1.14.2
hooks:
- id: helm-docs
args:
- --chart-search-root=charts
- --template-files=./_templates.gotmpl
- --template-files=README.md.gotmpl

201
LICENSE
View File

@@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

1
_config.yml Normal file
View File

@@ -0,0 +1 @@
theme: jekyll-theme-cayman

View File

@@ -1,18 +0,0 @@
apiVersion: v2
name: barman-cloud
version: 0.2.5
description: Barman Cloud Plugin
keywords:
- barman-cloud
- cloudnative-pg
sources:
- https://github.com/cloudnative-pg/plugin-barman-cloud
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/library/common
maintainers:
- name: alexlebens
dependencies:
- name: common
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.0.1
icon: https://avatars.githubusercontent.com/u/100373852?s=48&v=4
appVersion: v.0.4.0

View File

@@ -1,33 +0,0 @@
# barman-cloud
![Version: 0.2.5](https://img.shields.io/badge/Version-0.2.5-informational?style=flat-square) ![AppVersion: v.0.4.0](https://img.shields.io/badge/AppVersion-v.0.4.0-informational?style=flat-square)
Barman Cloud Plugin
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| alexlebens | | |
## Source Code
* <https://github.com/cloudnative-pg/plugin-barman-cloud>
* <https://github.com/bjw-s-labs/helm-charts/tree/main/charts/library/common>
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| https://bjw-s-labs.github.io/helm-charts/ | common | 4.0.1 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| image | object | `{"pullPolicy":"IfNotPresent","repository":"ghcr.io/cloudnative-pg/plugin-barman-cloud","tag":"v0.4.0"}` | Default image |
| name | string | `"barman-cloud"` | Name override of release |
| service | object | `{"listenPort":9090}` | Default service |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -1,46 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ .Values.name }}-client
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Values.name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
commonName: {{ .Values.name }}-client
duration: 2160h
isCA: false
issuerRef:
group: cert-manager.io
kind: Issuer
name: selfsigned-issuer
renewBefore: 360h
secretName: {{ .Values.name }}-client-tls
usages:
- client auth
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ .Values.name }}-server
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Values.name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
commonName: {{ .Values.name }}
dnsNames:
- {{ .Values.name }}
duration: 2160h
isCA: false
issuerRef:
group: cert-manager.io
kind: Issuer
name: selfsigned-issuer
renewBefore: 360h
secretName: {{ .Values.name }}-server-tls
usages:
- server auth

View File

@@ -1,34 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: metrics-auth-rolebinding
labels:
app.kubernetes.io/name: metrics-auth-rolebinding
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: metrics-auth-role
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-barman-cloud
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: plugin-barman-cloud-binding
labels:
app.kubernetes.io/name: plugin-barman-cloud
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: plugin-barman-cloud
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-barman-cloud
namespace: {{ .Release.Namespace }}

View File

@@ -1,157 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: metrics-auth-role
labels:
app.kubernetes.io/name: metrics-auth-role
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: metrics-reader
labels:
app.kubernetes.io/name: metrics-reader
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- nonResourceURLs:
- /metrics
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: objectstore-editor-role
labels:
app.kubernetes.io/name: objectstore-editor-role
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: objectstore-viewer-role
labels:
app.kubernetes.io/name: objectstore-viewer-role
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores
verbs:
- get
- list
- watch
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: plugin-barman-cloud
labels:
app.kubernetes.io/name: plugin-barman-cloud
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- watch
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores/finalizers
verbs:
- update
- apiGroups:
- barmancloud.cnpg.io
resources:
- objectstores/status
verbs:
- get
- patch
- update
- apiGroups:
- postgresql.cnpg.io
resources:
- backups
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
- roles
verbs:
- create
- get
- list
- patch
- update
- watch

View File

@@ -1,99 +0,0 @@
{{ include "bjw-s.common.loader.init" . }}
{{ define "barman-cloud.hardcodedValues" }}
{{ if not .Values.global.nameOverride }}
global:
nameOverride: {{ .Values.name }}
{{ end }}
controllers:
main:
type: deployment
labels:
app: {{ .Values.name }}
replicas: 1
strategy: Recreate
serviceAccount:
name: {{ .Release.Name }}-barman-cloud
pod:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
selector:
matchLabels:
app: {{ .Values.name }}
containers:
main:
image:
repository: {{ .Values.image.repository }}
tag: {{ .Values.image.tag }}
pullPolicy: {{ .Values.image.pullPolicy }}
args:
- operator
- --server-cert=/server/tls.crt
- --server-key=/server/tls.key
- --client-cert=/client/tls.crt
- --server-address=:{{ .Values.service.listenPort }}
- --leader-elect
- --log-level=debug
env:
- name: SIDECAR_IMAGE
valueFrom:
secretKeyRef:
key: SIDECAR_IMAGE
name: plugin-barman-cloud-m76km67hd7
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 10001
runAsUser: 10001
seccompProfile:
type: RuntimeDefault
serviceAccount:
barman-cloud:
enabled: true
service:
main:
controller: main
annotations:
cnpg.io/pluginPort: "{{ .Values.service.listenPort }}"
cnpg.io/pluginClientSecret: {{ .Values.name }}-client-tls
cnpg.io/pluginServerSecret: {{ .Values.name }}-server-tls
labels:
app: {{ .Values.name }}
cnpg.io/pluginName: barman-cloud.cloudnative-pg.io
ports:
http:
port: {{ .Values.service.listenPort }}
protocol: TCP
targetPort: {{ .Values.service.listenPort }}
persistence:
server-tls:
enabled: true
type: secret
name: {{ .Values.name }}-server-tls
advancedMounts:
main:
main:
- path: /server
readOnly: true
mountPropagation: None
client-tls:
enabled: true
type: secret
name: {{ .Values.name }}-client-tls
advancedMounts:
main:
main:
- path: /client
readOnly: true
mountPropagation: None
{{ end }}
{{ $_ := mergeOverwrite .Values (include "barman-cloud.hardcodedValues" . | fromYaml) }}
{{/* Render the templates */}}
{{ include "bjw-s.common.loader.generate" . }}

View File

@@ -1,627 +0,0 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.18.0
name: objectstores.barmancloud.cnpg.io
spec:
group: barmancloud.cnpg.io
names:
kind: ObjectStore
listKind: ObjectStoreList
plural: objectstores
singular: objectstore
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: ObjectStore is the Schema for the objectstores API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
properties:
configuration:
description: The configuration for the barman-cloud tool suite
properties:
azureCredentials:
description: The credentials to use to upload data to Azure Blob
Storage
properties:
connectionString:
description: The connection string to be used
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
inheritFromAzureAD:
description: Use the Azure AD based authentication without
providing explicitly the keys.
type: boolean
storageAccount:
description: The storage account where to upload data
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
storageKey:
description: |-
The storage account key to be used in conjunction
with the storage account name
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
storageSasToken:
description: |-
A shared-access-signature to be used in conjunction with
the storage account name
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
type: object
data:
description: |-
The configuration to be used to backup the data files
When not defined, base backups files will be stored uncompressed and may
be unencrypted in the object store, according to the bucket default
policy.
properties:
additionalCommandArgs:
description: |-
AdditionalCommandArgs represents additional arguments that can be appended
to the 'barman-cloud-backup' command-line invocation. These arguments
provide flexibility to customize the backup process further according to
specific requirements or configurations.
Example:
In a scenario where specialized backup options are required, such as setting
a specific timeout or defining custom behavior, users can use this field
to specify additional command arguments.
Note:
It's essential to ensure that the provided arguments are valid and supported
by the 'barman-cloud-backup' command, to avoid potential errors or unintended
behavior during execution.
items:
type: string
type: array
compression:
description: |-
Compress a backup file (a tar file per tablespace) while streaming it
to the object store. Available options are empty string (no
compression, default), `gzip`, `bzip2`, and `snappy`.
enum:
- bzip2
- gzip
- snappy
type: string
encryption:
description: |-
Whenever to force the encryption of files (if the bucket is
not already configured for that).
Allowed options are empty string (use the bucket policy, default),
`AES256` and `aws:kms`
enum:
- AES256
- aws:kms
type: string
immediateCheckpoint:
description: |-
Control whether the I/O workload for the backup initial checkpoint will
be limited, according to the `checkpoint_completion_target` setting on
the PostgreSQL server. If set to true, an immediate checkpoint will be
used, meaning PostgreSQL will complete the checkpoint as soon as
possible. `false` by default.
type: boolean
jobs:
description: |-
The number of parallel jobs to be used to upload the backup, defaults
to 2
format: int32
minimum: 1
type: integer
type: object
destinationPath:
description: |-
The path where to store the backup (i.e. s3://bucket/path/to/folder)
this path, with different destination folders, will be used for WALs
and for data
minLength: 1
type: string
endpointCA:
description: |-
EndpointCA store the CA bundle of the barman endpoint.
Useful when using self-signed certificates to avoid
errors with certificate issuer and barman-cloud-wal-archive
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
endpointURL:
description: |-
Endpoint to be used to upload data to the cloud,
overriding the automatic endpoint discovery
type: string
googleCredentials:
description: The credentials to use to upload data to Google Cloud
Storage
properties:
applicationCredentials:
description: The secret containing the Google Cloud Storage
JSON file with the credentials
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
gkeEnvironment:
description: |-
If set to true, will presume that it's running inside a GKE environment,
default to false.
type: boolean
type: object
historyTags:
additionalProperties:
type: string
description: |-
HistoryTags is a list of key value pairs that will be passed to the
Barman --history-tags option.
type: object
s3Credentials:
description: The credentials to use to upload data to S3
properties:
accessKeyId:
description: The reference to the access key id
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
inheritFromIAMRole:
description: Use the role based authentication without providing
explicitly the keys.
type: boolean
region:
description: The reference to the secret containing the region
name
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
secretAccessKey:
description: The reference to the secret access key
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
sessionToken:
description: The references to the session key
properties:
key:
description: The key to select
type: string
name:
description: Name of the referent.
type: string
required:
- key
- name
type: object
type: object
serverName:
description: |-
The server name on S3, the cluster name is used if this
parameter is omitted
type: string
tags:
additionalProperties:
type: string
description: |-
Tags is a list of key value pairs that will be passed to the
Barman --tags option.
type: object
wal:
description: |-
The configuration for the backup of the WAL stream.
When not defined, WAL files will be stored uncompressed and may be
unencrypted in the object store, according to the bucket default policy.
properties:
archiveAdditionalCommandArgs:
description: |-
Additional arguments that can be appended to the 'barman-cloud-wal-archive'
command-line invocation. These arguments provide flexibility to customize
the WAL archive process further, according to specific requirements or configurations.
Example:
In a scenario where specialized backup options are required, such as setting
a specific timeout or defining custom behavior, users can use this field
to specify additional command arguments.
Note:
It's essential to ensure that the provided arguments are valid and supported
by the 'barman-cloud-wal-archive' command, to avoid potential errors or unintended
behavior during execution.
items:
type: string
type: array
compression:
description: |-
Compress a WAL file before sending it to the object store. Available
options are empty string (no compression, default), `gzip`, `bzip2`,
`lz4`, `snappy`, `xz`, and `zstd`.
enum:
- bzip2
- gzip
- lz4
- snappy
- xz
- zstd
type: string
encryption:
description: |-
Whenever to force the encryption of files (if the bucket is
not already configured for that).
Allowed options are empty string (use the bucket policy, default),
`AES256` and `aws:kms`
enum:
- AES256
- aws:kms
type: string
maxParallel:
description: |-
Number of WAL files to be either archived in parallel (when the
PostgreSQL instance is archiving to a backup object store) or
restored in parallel (when a PostgreSQL standby is fetching WAL
files from a recovery object store). If not specified, WAL files
will be processed one at a time. It accepts a positive integer as a
value - with 1 being the minimum accepted value.
minimum: 1
type: integer
restoreAdditionalCommandArgs:
description: |-
Additional arguments that can be appended to the 'barman-cloud-wal-restore'
command-line invocation. These arguments provide flexibility to customize
the WAL restore process further, according to specific requirements or configurations.
Example:
In a scenario where specialized backup options are required, such as setting
a specific timeout or defining custom behavior, users can use this field
to specify additional command arguments.
Note:
It's essential to ensure that the provided arguments are valid and supported
by the 'barman-cloud-wal-restore' command, to avoid potential errors or unintended
behavior during execution.
items:
type: string
type: array
type: object
required:
- destinationPath
type: object
x-kubernetes-validations:
- fieldPath: .serverName
message: use the 'serverName' plugin parameter in the Cluster resource
reason: FieldValueForbidden
rule: '!has(self.serverName)'
instanceSidecarConfiguration:
description: The configuration for the sidecar that runs in the instance
pods
properties:
env:
description: The environment to be explicitly passed to the sidecar
items:
description: EnvVar represents an environment variable present
in a Container.
properties:
name:
description: Name of the environment variable. Must be a
C_IDENTIFIER.
type: string
value:
description: |-
Variable references $(VAR_NAME) are expanded
using the previously defined environment variables in the container and
any service environment variables. If a variable cannot be resolved,
the reference in the input string will be unchanged. Double $$ are reduced
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
"$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
Escaped references will never be expanded, regardless of whether the variable
exists or not.
Defaults to "".
type: string
valueFrom:
description: Source for the environment variable's value.
Cannot be used if value is not empty.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap or its
key must be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
fieldRef:
description: |-
Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
properties:
apiVersion:
description: Version of the schema the FieldPath
is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the
specified API version.
type: string
required:
- fieldPath
type: object
x-kubernetes-map-type: atomic
resourceFieldRef:
description: |-
Selects a resource of the container: only resources limits and requests
(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
properties:
containerName:
description: 'Container name: required for volumes,
optional for env vars'
type: string
divisor:
anyOf:
- type: integer
- type: string
description: Specifies the output format of the
exposed resources, defaults to "1"
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
x-kubernetes-map-type: atomic
secretKeyRef:
description: Selects a key of a secret in the pod's
namespace
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key
must be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
type: object
required:
- name
type: object
type: array
resources:
description: Resources define cpu/memory requests and limits for
the sidecar that runs in the instance pods.
properties:
claims:
description: |-
Claims lists the names of resources, defined in spec.resourceClaims,
that are used by this container.
This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate.
This field is immutable. It can only be set for containers.
items:
description: ResourceClaim references one entry in PodSpec.ResourceClaims.
properties:
name:
description: |-
Name must match the name of one entry in pod.spec.resourceClaims of
the Pod where this field is used. It makes that resource available
inside a container.
type: string
request:
description: |-
Request is the name chosen for a request in the referenced claim.
If empty, everything from the claim is made available, otherwise
only the result of this request.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: |-
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: |-
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
retentionPolicyIntervalSeconds:
default: 1800
description: |-
The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies.
type: integer
type: object
retentionPolicy:
description: |-
RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months.
pattern: ^[1-9][0-9]*[dwm]$
type: string
required:
- configuration
type: object
status:
description: |-
Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
properties:
serverRecoveryWindow:
additionalProperties:
description: |-
RecoveryWindow represents the time span between the first
recoverability point and the last successful backup of a PostgreSQL
server, defining the period during which data can be restored.
properties:
firstRecoverabilityPoint:
description: |-
The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored.
format: date-time
type: string
lastSuccussfulBackupTime:
description: The last successful backup time
format: date-time
type: string
type: object
description: ServerRecoveryWindow maps each server to its recovery
window
type: object
type: object
required:
- metadata
- spec
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -1,11 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Values.name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selfSigned: {}

View File

@@ -1,17 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: leader-election-rolebinding
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: plugin-barman-cloud
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: leader-election-role
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-barman-cloud
namespace: {{ .Release.Namespace }}

View File

@@ -1,41 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: leader-election-role
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: leader-election-role
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch

View File

@@ -1,14 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: plugin-barman-cloud-m76km67hd7
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Values.name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
type: Opaque
data:
SIDECAR_IMAGE: |
Z2hjci5pby9jbG91ZG5hdGl2ZS1wZy9wbHVnaW4tYmFybWFuLWNsb3VkLXNpZGVjYXI6dj
AuNC4w

View File

@@ -1,12 +0,0 @@
# -- Name override of release
name: barman-cloud
# -- Default image
image:
repository: ghcr.io/cloudnative-pg/plugin-barman-cloud
tag: "v0.4.0"
pullPolicy: IfNotPresent
# -- Default service
service:
listenPort: 9090

View File

@@ -1,18 +0,0 @@
apiVersion: v2
name: cloudflared
version: 1.15.0
description: Cloudflared Tunnel
keywords:
- cloudflare
- tunnel
sources:
- https://github.com/cloudflare/cloudflared
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/library/common
maintainers:
- name: alexlebens
dependencies:
- name: common
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.0.1
icon: https://avatars.githubusercontent.com/u/314135?s=48&v=4
appVersion: "2025.5.0"

View File

@@ -1,35 +0,0 @@
# cloudflared
![Version: 1.15.0](https://img.shields.io/badge/Version-1.15.0-informational?style=flat-square) ![AppVersion: 2025.5.0](https://img.shields.io/badge/AppVersion-2025.5.0-informational?style=flat-square)
Cloudflared Tunnel
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| alexlebens | | |
## Source Code
* <https://github.com/cloudflare/cloudflared>
* <https://github.com/bjw-s-labs/helm-charts/tree/main/charts/library/common>
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| https://bjw-s-labs.github.io/helm-charts/ | common | 4.0.1 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| existingSecretKey | string | `"cf-tunnel-token"` | Name of key that contains the token in the existingSecret |
| existingSecretName | string | `"cloudflared-secret"` | Name of existing secret that contains Cloudflare token |
| image | object | `{"pullPolicy":"IfNotPresent","repository":"cloudflare/cloudflared","tag":"2025.5.0"}` | Default image |
| name | string | `"cloudflared"` | Name override of release |
| resources | object | `{"requests":{"cpu":"10m","memory":"128Mi"}}` | Default resources |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -1,41 +0,0 @@
{{- include "bjw-s.common.loader.init" . }}
{{- define "cloudflared.hardcodedValues" -}}
{{ if not .Values.global.nameOverride }}
global:
nameOverride: {{ .Values.name }}
{{ end }}
controllers:
main:
type: deployment
strategy: Recreate
containers:
main:
image:
repository: {{ .Values.image.repository }}
tag: {{ .Values.image.tag }}
pullPolicy: {{ .Values.image.pullPolicy }}
args:
- tunnel
- --protocol
- http2
- --no-autoupdate
- run
- --token
- $(CF_MANAGED_TUNNEL_TOKEN)
env:
- name: CF_MANAGED_TUNNEL_TOKEN
valueFrom:
secretKeyRef:
name: {{ .Values.existingSecretName }}
key: {{ .Values.existingSecretKey }}
resources:
{{- with .Values.resources }}
resources:
{{- toYaml . | nindent 10 }}
{{ end }}
{{- end -}}
{{- $_ := mergeOverwrite .Values (include "cloudflared.hardcodedValues" . | fromYaml) -}}
{{/* Render the templates */}}
{{ include "bjw-s.common.loader.generate" . }}

View File

@@ -1,20 +0,0 @@
# -- Name override of release
name: cloudflared
# -- Name of existing secret that contains Cloudflare token
existingSecretName: cloudflared-secret
# -- Name of key that contains the token in the existingSecret
existingSecretKey: cf-tunnel-token
# -- Default image
image:
repository: cloudflare/cloudflared
tag: "2025.5.0"
pullPolicy: IfNotPresent
# -- Default resources
resources:
requests:
cpu: 10m
memory: 128Mi

View File

@@ -1,18 +0,0 @@
apiVersion: v2
name: generic-device-plugin
version: 0.1.10
description: Generic Device Plugin
keywords:
- generic-device-plugin
- device
- plugin
sources:
- https://github.com/squat/generic-device-plugin
- https://github.com/bjw-s/helm-charts/tree/main/charts/library/common
maintainers:
- name: alexlebens
dependencies:
- name: common
repository: https://bjw-s.github.io/helm-charts/
version: 3.7.3
appVersion: 0.1.10

View File

@@ -1,37 +0,0 @@
# generic-device-plugin
![Version: 0.1.10](https://img.shields.io/badge/Version-0.1.10-informational?style=flat-square) ![AppVersion: 0.1.10](https://img.shields.io/badge/AppVersion-0.1.10-informational?style=flat-square)
Generic Device Plugin
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| alexlebens | | |
## Source Code
* <https://github.com/squat/generic-device-plugin>
* <https://github.com/bjw-s/helm-charts/tree/main/charts/library/common>
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| https://bjw-s.github.io/helm-charts/ | common | 3.7.3 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| config | object | `{"data":"devices:\n - name: serial\n groups:\n - paths:\n - path: /dev/ttyUSB*\n - paths:\n - path: /dev/ttyACM*\n - paths:\n - path: /dev/tty.usb*\n - paths:\n - path: /dev/cu.*\n - paths:\n - path: /dev/cuaU*\n - paths:\n - path: /dev/rfcomm*\n - name: video\n groups:\n - paths:\n - path: /dev/video0\n - name: fuse\n groups:\n - count: 10\n paths:\n - path: /dev/fuse\n - name: audio\n groups:\n - count: 10\n paths:\n - path: /dev/snd\n - name: capture\n groups:\n - paths:\n - path: /dev/snd/controlC0\n - path: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC1\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC1D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC2\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC2D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC3\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC3D0c\n mountPath: /dev/snd/pcmC0D0c\n","enabled":true}` | Config map |
| config.data | string | See [values.yaml](./values.yaml) | generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage) |
| deviceDomain | string | `"squat.ai"` | Domain used by devices for identifcation |
| image | object | `{"pullPolicy":"Always","repository":"ghcr.io/squat/generic-device-plugin","tag":"latest@sha256:d7d0951df7f11479185fd9fba1c1cb4d9c8f3232d38a5468d6fe80074f2b45d5"}` | Default image |
| name | string | `"generic-device-plugin"` | Name override of release |
| resources | object | `{"limit":{"cpu":"100m","memory":"20Mi"},"requests":{"cpu":"50m","memory":"10Mi"}}` | Default resources |
| service | object | `{"listenPort":8080}` | Service port |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -1,82 +0,0 @@
{{ include "bjw-s.common.loader.init" . }}
{{ define "genericDevicePlugin.hardcodedValues" }}
{{ if not .Values.global.nameOverride }}
global:
nameOverride: {{ .Values.name }}
{{ end }}
controllers:
main:
type: daemonset
pod:
priorityClassName: system-node-critical
tolerations:
- operator: "Exists"
effect: "NoExecute"
- operator: "Exists"
effect: "NoSchedule"
containers:
main:
image:
repository: {{ .Values.image.repository }}
tag: {{ .Values.image.tag }}
pullPolicy: {{ .Values.image.pullPolicy }}
args:
- --config=/config/config.yaml
env:
- name: LISTEN
value: :{{ .Values.service.listenPort }}
- name: PLUGIN_DIRECTORY
value: /var/lib/kubelet/device-plugins
- name: DOMAIN
value: {{ .Values.deviceDomain }}
probes:
liveness:
type: HTTP
path: /health
readiness:
type: HTTP
path: /health
startup:
type: HTTP
path: /health
securityContext:
privileged: True
configMaps:
config:
enabled: {{ .Values.config.enabled }}
data:
config.yaml: {{ toYaml .Values.config.data | nindent 8 }}
service:
main:
controller: main
ports:
http:
port: {{ .Values.service.listenPort }}
persistence:
config:
enabled: true
type: configMap
name: {{ .Values.name }}-config
device-plugins:
enabled: true
type: hostPath
hostPath: /var/lib/kubelet/device-plugins
dev:
enabled: true
type: hostPath
hostPath: /dev
serviceMonitor:
main:
serviceName: generic-device-plugin
endpoints:
- port: http
scheme: http
path: /metrics
interval: 30s
scrapeTimeout: 10s
{{ end }}
{{ $_ := mergeOverwrite .Values (include "genericDevicePlugin.hardcodedValues" . | fromYaml) }}
{{/* Render the templates */}}
{{ include "bjw-s.common.loader.generate" . }}

View File

@@ -1,80 +0,0 @@
# -- Name override of release
name: generic-device-plugin
# -- Default image
image:
repository: ghcr.io/squat/generic-device-plugin
tag: latest@sha256:d7d0951df7f11479185fd9fba1c1cb4d9c8f3232d38a5468d6fe80074f2b45d5
pullPolicy: Always
# -- Domain used by devices for identifcation
deviceDomain: squat.ai
# -- Service port
service:
listenPort: 8080
# -- Default resources
resources:
limit:
cpu: 100m
memory: 20Mi
requests:
cpu: 50m
memory: 10Mi
# -- Config map
config:
enabled: true
# -- generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage)
# @default -- See [values.yaml](./values.yaml)
data: |
devices:
- name: serial
groups:
- paths:
- path: /dev/ttyUSB*
- paths:
- path: /dev/ttyACM*
- paths:
- path: /dev/tty.usb*
- paths:
- path: /dev/cu.*
- paths:
- path: /dev/cuaU*
- paths:
- path: /dev/rfcomm*
- name: video
groups:
- paths:
- path: /dev/video0
- name: fuse
groups:
- count: 10
paths:
- path: /dev/fuse
- name: audio
groups:
- count: 10
paths:
- path: /dev/snd
- name: capture
groups:
- paths:
- path: /dev/snd/controlC0
- path: /dev/snd/pcmC0D0c
- paths:
- path: /dev/snd/controlC1
mountPath: /dev/snd/controlC0
- path: /dev/snd/pcmC1D0c
mountPath: /dev/snd/pcmC0D0c
- paths:
- path: /dev/snd/controlC2
mountPath: /dev/snd/controlC0
- path: /dev/snd/pcmC2D0c
mountPath: /dev/snd/pcmC0D0c
- paths:
- path: /dev/snd/controlC3
mountPath: /dev/snd/controlC0
- path: /dev/snd/pcmC3D0c
mountPath: /dev/snd/pcmC0D0c

View File

@@ -1,14 +0,0 @@
apiVersion: v2
name: postgres-cluster
version: 6.4.0
description: Cloudnative-pg Cluster
keywords:
- database
- postgres
sources:
- https://github.com/cloudnative-pg/cloudnative-pg
- https://github.com/cloudnative-pg/charts/tree/main/charts/cluster
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/100373852?s=48&v=4
appVersion: v1.26.0

View File

@@ -1,115 +0,0 @@
# postgres-cluster
![Version: 6.4.0](https://img.shields.io/badge/Version-6.4.0-informational?style=flat-square) ![AppVersion: v1.26.0](https://img.shields.io/badge/AppVersion-v1.26.0-informational?style=flat-square)
Cloudnative-pg Cluster
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| alexlebens | | |
## Source Code
* <https://github.com/cloudnative-pg/cloudnative-pg>
* <https://github.com/cloudnative-pg/charts/tree/main/charts/cluster>
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| backup | object | `{"enabled":false,"method":"objectStore","objectStore":[],"scheduledBackups":[]}` | Backup settings |
| backup.enabled | bool | `false` | You need to configure backups manually, so backups are disabled by default. |
| backup.method | string | `"objectStore"` | Method to create backups, options currently are only objectStore |
| backup.objectStore | list | `[]` | Options for object store backups |
| backup.scheduledBackups | list | `[]` | List of scheduled backups |
| cluster | object | `{"additionalLabels":{},"affinity":{"enablePodAntiAffinity":true,"topologyKey":"kubernetes.io/hostname"},"annotations":{},"certificates":{},"enablePDB":true,"enableSuperuserAccess":false,"image":{"repository":"ghcr.io/cloudnative-pg/postgresql","tag":"17.5-1-bullseye"},"imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"initdb":{},"instances":3,"logLevel":"info","monitoring":{"customQueries":[],"customQueriesSecret":[],"disableDefaultQueries":false,"enabled":false,"podMonitor":{"enabled":true,"metricRelabelings":[],"relabelings":[]},"prometheusRule":{"enabled":false,"excludeRules":[]}},"postgresGID":-1,"postgresUID":-1,"postgresql":{"ldap":{},"parameters":{"hot_standby_feedback":"on","max_slot_wal_keep_size":"2000MB","shared_buffers":"128MB"},"pg_hba":[],"pg_ident":[],"shared_preload_libraries":[],"synchronous":{}},"primaryUpdateMethod":"switchover","primaryUpdateStrategy":"unsupervised","priorityClassName":"","resources":{"limits":{"hugepages-2Mi":"256Mi"},"requests":{"cpu":"100m","memory":"256Mi"}},"roles":[],"serviceAccountTemplate":{},"services":{},"storage":{"size":"10Gi","storageClass":""},"superuserSecret":"","walStorage":{"enabled":true,"size":"2Gi","storageClass":""}}` | Cluster settings |
| cluster.affinity | object | `{"enablePodAntiAffinity":true,"topologyKey":"kubernetes.io/hostname"}` | Affinity/Anti-affinity rules for Pods. See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration |
| cluster.certificates | object | `{}` | The configuration for the CA and related certificates. See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-CertificatesConfiguration |
| cluster.enablePDB | bool | `true` | Allow to disable PDB, mainly useful for upgrade of single-instance clusters or development purposes See: https://cloudnative-pg.io/documentation/current/kubernetes_upgrade/#pod-disruption-budgets |
| cluster.enableSuperuserAccess | bool | `false` | When this option is enabled, the operator will use the SuperuserSecret to update the postgres user password. If the secret is not present, the operator will automatically create one. When this option is disabled, the operator will ignore the SuperuserSecret content, delete it when automatically created, and then blank the password of the postgres user by setting it to NULL. |
| cluster.image | object | `{"repository":"ghcr.io/cloudnative-pg/postgresql","tag":"17.5-1-bullseye"}` | Default image |
| cluster.imagePullPolicy | string | `"IfNotPresent"` | Image pull policy. One of Always, Never or IfNotPresent. If not defined, it defaults to IfNotPresent. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images |
| cluster.imagePullSecrets | list | `[]` | The list of pull secrets to be used to pull the images. See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-LocalObjectReference |
| cluster.initdb | object | `{}` | Bootstrap is the configuration of the bootstrap process when initdb is used. See: https://cloudnative-pg.io/documentation/current/bootstrap/ See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-bootstrapinitdb |
| cluster.logLevel | string | `"info"` | The instances' log level, one of the following values: error, warning, info (default), debug, trace |
| cluster.monitoring | object | `{"customQueries":[],"customQueriesSecret":[],"disableDefaultQueries":false,"enabled":false,"podMonitor":{"enabled":true,"metricRelabelings":[],"relabelings":[]},"prometheusRule":{"enabled":false,"excludeRules":[]}}` | Enable default monitoring and alert rules |
| cluster.monitoring.customQueries | list | `[]` | Custom Prometheus metrics Will be stored in the ConfigMap |
| cluster.monitoring.customQueriesSecret | list | `[]` | The list of secrets containing the custom queries |
| cluster.monitoring.disableDefaultQueries | bool | `false` | Whether the default queries should be injected. Set it to true if you don't want to inject default queries into the cluster. |
| cluster.monitoring.enabled | bool | `false` | Whether to enable monitoring |
| cluster.monitoring.podMonitor.enabled | bool | `true` | Whether to enable the PodMonitor |
| cluster.monitoring.podMonitor.metricRelabelings | list | `[]` | The list of metric relabelings for the PodMonitor. Applied to samples before ingestion. |
| cluster.monitoring.podMonitor.relabelings | list | `[]` | The list of relabelings for the PodMonitor. Applied to samples before scraping. |
| cluster.monitoring.prometheusRule.enabled | bool | `false` | Whether to enable the PrometheusRule automated alerts |
| cluster.monitoring.prometheusRule.excludeRules | list | `[]` | Exclude specified rules |
| cluster.postgresUID | int | `-1` | The UID and GID of the postgres user inside the image, defaults to 26 |
| cluster.postgresql | object | `{"ldap":{},"parameters":{"hot_standby_feedback":"on","max_slot_wal_keep_size":"2000MB","shared_buffers":"128MB"},"pg_hba":[],"pg_ident":[],"shared_preload_libraries":[],"synchronous":{}}` | Parameters to be set for the database itself See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-PostgresConfiguration |
| cluster.postgresql.ldap | object | `{}` | PostgreSQL LDAP configuration (see https://cloudnative-pg.io/documentation/current/postgresql_conf/#ldap-configuration) |
| cluster.postgresql.parameters | object | `{"hot_standby_feedback":"on","max_slot_wal_keep_size":"2000MB","shared_buffers":"128MB"}` | PostgreSQL configuration options (postgresql.conf) |
| cluster.postgresql.pg_hba | list | `[]` | PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file) |
| cluster.postgresql.pg_ident | list | `[]` | PostgreSQL User Name Maps rules (lines to be appended to the pg_ident.conf file) |
| cluster.postgresql.shared_preload_libraries | list | `[]` | Lists of shared preload libraries to add to the default ones |
| cluster.postgresql.synchronous | object | `{}` | Quorum-based Synchronous Replication |
| cluster.primaryUpdateMethod | string | `"switchover"` | Method to follow to upgrade the primary server during a rolling update procedure, after all replicas have been successfully updated. It can be switchover (default) or restart. |
| cluster.primaryUpdateStrategy | string | `"unsupervised"` | Strategy to follow to upgrade the primary server during a rolling update procedure, after all replicas have been successfully updated: it can be automated (unsupervised - default) or manual (supervised) |
| cluster.resources | object | `{"limits":{"hugepages-2Mi":"256Mi"},"requests":{"cpu":"100m","memory":"256Mi"}}` | Resources requirements of every generated Pod. Please refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for more information. We strongly advise you use the same setting for limits and requests so that your cluster pods are given a Guaranteed QoS. See: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/ |
| cluster.roles | list | `[]` | This feature enables declarative management of existing roles, as well as the creation of new roles if they are not already present in the database. See: https://cloudnative-pg.io/documentation/current/declarative_role_management/ |
| cluster.serviceAccountTemplate | object | `{}` | Configure the metadata of the generated service account |
| cluster.services | object | `{}` | Customization of service definitions. Please refer to https://cloudnative-pg.io/documentation/current/service_management/ |
| cluster.storage | object | `{"size":"10Gi","storageClass":""}` | Default storage size |
| mode | string | `"standalone"` | Cluster mode of operation. Available modes: * `standalone` - Default mode. Creates new or updates an existing CNPG cluster. * `recovery` - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup |
| nameOverride | string | `""` | Override the name of the cluster |
| namespaceOverride | string | `""` | Override the namespace of the chart |
| poolers | list | `[]` | List of PgBouncer poolers |
| recovery | object | `{"backup":{"backupName":"","database":"app","owner":"","pitrTarget":{"time":""}},"import":{"databases":[],"pgDumpExtraOptions":[],"pgRestoreExtraOptions":[],"postImportApplicationSQL":[],"roles":[],"schemaOnly":false,"source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":"app"},"type":"microservice"},"method":"backup","objectStore":{"clusterName":"","data":{"compression":"snappy","encryption":"","jobs":1},"database":"app","destinationPath":"","endpointCA":{"create":false,"key":"","name":""},"endpointCredentials":"","endpointURL":"https://nyc3.digitaloceanspaces.com","index":1,"name":"recovery","owner":"","pitrTarget":{"time":""},"wal":{"compression":"snappy","encryption":"","maxParallel":1}},"pgBaseBackup":{"database":"app","owner":"","secret":"","source":{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":""}}}` | Recovery settings when booting cluster from external cluster |
| recovery.backup.backupName | string | `""` | Name of the backup to recover from. |
| recovery.backup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
| recovery.backup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
| recovery.backup.pitrTarget | object | `{"time":""}` | Point in time recovery target. Specify one of the following: |
| recovery.backup.pitrTarget.time | string | `""` | Time in RFC3339 format |
| recovery.import.databases | list | `[]` | Databases to import |
| recovery.import.pgDumpExtraOptions | list | `[]` | List of custom options to pass to the `pg_dump` command. IMPORTANT: Use these options with caution and at your own risk, as the operator does not validate their content. Be aware that certain options may conflict with the operator's intended functionality or design. |
| recovery.import.pgRestoreExtraOptions | list | `[]` | List of custom options to pass to the `pg_restore` command. IMPORTANT: Use these options with caution and at your own risk, as the operator does not validate their content. Be aware that certain options may conflict with the operator's intended functionality or design. |
| recovery.import.postImportApplicationSQL | list | `[]` | List of SQL queries to be executed as a superuser in the application database right after is imported. To be used with extreme care. Only available in microservice type. |
| recovery.import.roles | list | `[]` | Roles to import |
| recovery.import.schemaOnly | bool | `false` | When set to true, only the pre-data and post-data sections of pg_restore are invoked, avoiding data import. |
| recovery.import.source | object | `{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":"app"}` | Configuration for the source database |
| recovery.import.source.passwordSecret.create | bool | `false` | Whether to create a secret for the password |
| recovery.import.source.passwordSecret.key | string | `"password"` | The key in the secret containing the password |
| recovery.import.source.passwordSecret.name | string | `""` | Name of the secret containing the password |
| recovery.import.source.passwordSecret.value | string | `""` | The password value to use when creating the secret |
| recovery.import.type | string | `"microservice"` | One of `microservice` or `monolith.` See: https://cloudnative-pg.io/documentation/current/database_import/#how-it-works |
| recovery.method | string | `"backup"` | Available recovery methods: * `backup` - Recovers a CNPG cluster from a CNPG backup (PITR supported) Needs to be on the same cluster in the same namespace. * `objectStore` - Recovers a CNPG cluster from a barman object store (PITR supported). * `pgBaseBackup` - Recovers a CNPG cluster viaa streaming replication protocol. Useful if you want to migrate databases to CloudNativePG, even from outside Kubernetes. * `import` - Import one or more databases from an existing Postgres cluster. |
| recovery.objectStore.clusterName | string | `""` | Override the name of the backup cluster, defaults to "cluster.name" |
| recovery.objectStore.data.compression | string | `"snappy"` | Data compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`. |
| recovery.objectStore.data.encryption | string | `""` | Whether to instruct the storage provider to encrypt data files. One of `` (use the storage container default), `AES256` or `aws:kms`. |
| recovery.objectStore.data.jobs | int | `1` | Number of data files to be archived or restored in parallel. |
| recovery.objectStore.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
| recovery.objectStore.destinationPath | string | `""` | Overrides the provider specific default path. Defaults to: S3: s3://<bucket><path> Azure: https://<storageAccount>.<serviceName>.core.windows.net/<containerName><path> Google: gs://<bucket><path> |
| recovery.objectStore.endpointCA | object | `{"create":false,"key":"","name":""}` | Specifies a CA bundle to validate a privately signed certificate. |
| recovery.objectStore.endpointCA.create | bool | `false` | Creates a secret with the given value if true, otherwise uses an existing secret. |
| recovery.objectStore.endpointCredentials | string | `""` | Specifies secret that contains S3 credentials, should contain the keys ACCESS_KEY_ID and ACCESS_SECRET_KEY |
| recovery.objectStore.endpointURL | string | `"https://nyc3.digitaloceanspaces.com"` | Overrides the provider specific default endpoint. Defaults to: S3: https://s3.<region>.amazonaws.com" Leave empty if using the default S3 endpoint |
| recovery.objectStore.index | int | `1` | Generate external cluster name, uses: {{ .Release.Name }}-postgresql-<major version>-backup-index-{{ index }} |
| recovery.objectStore.name | string | `"recovery"` | Object store backup name |
| recovery.objectStore.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
| recovery.objectStore.pitrTarget | object | `{"time":""}` | Point in time recovery target. Specify one of the following: |
| recovery.objectStore.pitrTarget.time | string | `""` | Time in RFC3339 format |
| recovery.objectStore.wal | object | `{"compression":"snappy","encryption":"","maxParallel":1}` | Storage |
| recovery.objectStore.wal.compression | string | `"snappy"` | WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`. |
| recovery.objectStore.wal.encryption | string | `""` | Whether to instruct the storage provider to encrypt WAL files. One of `` (use the storage container default), `AES256` or `aws:kms`. |
| recovery.objectStore.wal.maxParallel | int | `1` | Number of WAL files to be archived or restored in parallel. |
| recovery.pgBaseBackup.database | string | `"app"` | Name of the database used by the application. Default: `app`. |
| recovery.pgBaseBackup.owner | string | `""` | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. |
| recovery.pgBaseBackup.secret | string | `""` | Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch |
| recovery.pgBaseBackup.source | object | `{"database":"app","host":"","passwordSecret":{"create":false,"key":"password","name":"","value":""},"port":5432,"sslCertSecret":{"key":"","name":""},"sslKeySecret":{"key":"","name":""},"sslMode":"verify-full","sslRootCertSecret":{"key":"","name":""},"username":""}` | Configuration for the source database |
| recovery.pgBaseBackup.source.passwordSecret.create | bool | `false` | Whether to create a secret for the password |
| recovery.pgBaseBackup.source.passwordSecret.key | string | `"password"` | The key in the secret containing the password |
| recovery.pgBaseBackup.source.passwordSecret.name | string | `""` | Name of the secret containing the password |
| recovery.pgBaseBackup.source.passwordSecret.value | string | `""` | The password value to use when creating the secret |
| type | string | `"postgresql"` | Type of the CNPG database. Available types: * `postgresql` * `tensorchord` |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -1,16 +0,0 @@
{{- $alert := "CNPGClusterBackendsWaitingWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster a backend is waiting for longer than 5 minutes.
description: |-
Pod {{`{{`}} $labels.pod {{`}}`}}
has been waiting for longer than 5 minutes
expr: |
cnpg_backends_waiting_total > 300
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,16 +0,0 @@
{{- $alert := "CNPGClusterDatabaseDeadlockConflictsWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster has over 10 deadlock conflicts.
description: |-
There are over 10 deadlock conflicts in
{{`{{`}} $labels.pod {{`}}`}}
expr: |
cnpg_pg_stat_database_deadlocks > 10
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,26 +0,0 @@
{{- $alert := "CNPGClusterHACritical" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster has no standby replicas!
description: |-
CloudNativePG Cluster "{{ .labels.job }}" has no ready standby replicas. Your cluster at a severe
risk of data loss and downtime if the primary instance fails.
The primary instance is still online and able to serve queries, although connections to the `-ro` endpoint
will fail. The `-r` endpoint os operating at reduced capacity and all traffic is being served by the main.
This can happen during a normal fail-over or automated minor version upgrades in a cluster with 2 or less
instances. The replaced instance may need some time to catch-up with the cluster primary instance.
This alarm will be always trigger if your cluster is configured to run with only 1 instance. In this
case you may want to silence it.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterHACritical.md
expr: |
max by (job) (cnpg_pg_replication_streaming_replicas{namespace="{{ .namespace }}"} - cnpg_pg_replication_is_wal_receiver_up{namespace="{{ .namespace }}"}) < 1
for: 5m
labels:
severity: critical
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,24 +0,0 @@
{{- $alert := "CNPGClusterHAWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster less than 2 standby replicas.
description: |-
CloudNativePG Cluster "{{ .labels.job }}" has only {{ .value }} standby replicas, putting
your cluster at risk if another instance fails. The cluster is still able to operate normally, although
the `-ro` and `-r` endpoints operate at reduced capacity.
This can happen during a normal fail-over or automated minor version upgrades. The replaced instance may
need some time to catch-up with the cluster primary instance.
This alarm will be constantly triggered if your cluster is configured to run with less than 3 instances.
In this case you may want to silence it.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterHAWarning.md
expr: |
max by (job) (cnpg_pg_replication_streaming_replicas{namespace="{{ .namespace }}"} - cnpg_pg_replication_is_wal_receiver_up{namespace="{{ .namespace }}"}) < 2
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,17 +0,0 @@
{{- $alert := "CNPGClusterHighConnectionsCritical" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Instance maximum number of connections critical!
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" instance {{ .labels.pod }} is using {{ .value }}% of
the maximum number of connections.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterHighConnectionsCritical.md
expr: |
sum by (pod) (cnpg_backends_total{namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"}) / max by (pod) (cnpg_pg_settings_setting{name="max_connections", namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"}) * 100 > 95
for: 5m
labels:
severity: critical
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,17 +0,0 @@
{{- $alert := "CNPGClusterHighConnectionsWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Instance is approaching the maximum number of connections.
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" instance {{ .labels.pod }} is using {{ .value }}% of
the maximum number of connections.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterHighConnectionsWarning.md
expr: |
sum by (pod) (cnpg_backends_total{namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"}) / max by (pod) (cnpg_pg_settings_setting{name="max_connections", namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"}) * 100 > 80
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,19 +0,0 @@
{{- $alert := "CNPGClusterHighReplicationLag" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster high replication lag
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" is experiencing a high replication lag of
{{ .value }}ms.
High replication lag indicates network issues, busy instances, slow queries or suboptimal configuration.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterHighReplicationLag.md
expr: |
max(cnpg_pg_replication_lag{namespace="{{ .namespace }}",pod=~"{{ .podSelector }}"}) * 1000 > 1000
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,19 +0,0 @@
{{- $alert := "CNPGClusterInstancesOnSameNode" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster instances are located on the same node.
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" has {{ .value }}
instances on the same node {{ .labels.node }}.
A failure or scheduled downtime of a single node will lead to a potential service disruption and/or data loss.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterInstancesOnSameNode.md
expr: |
count by (node) (kube_pod_info{namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"}) > 1
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,15 +0,0 @@
{{- $alert := "CNPGClusterLastFailedArchiveTimeWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster last time archiving failed.
description: |-
Archiving failed for {{`{{`}} $labels.pod {{`}}`}}
expr: |
(cnpg_pg_stat_archiver_last_failed_time - cnpg_pg_stat_archiver_last_archived_time) > 1
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,16 +0,0 @@
{{- $alert := "CNPGClusterLongRunningTransactionWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster query is taking longer than 5 minutes.
description: |-
CloudNativePG Cluster Pod {{`{{`}} $labels.pod {{`}}`}}
is taking more than 5 minutes (300 seconds) for a query.
expr: |-
cnpg_backends_max_tx_duration_seconds > 300
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,24 +0,0 @@
{{- $alert := "CNPGClusterLowDiskSpaceCritical" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Instance is running out of disk space!
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" is running extremely low on disk space. Check attached PVCs!
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterLowDiskSpaceCritical.md
expr: |
max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}"} / kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}"})) > 0.9 OR
max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-wal"} / kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-wal"})) > 0.9 OR
max(sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_used_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-tbs.*"})
/
sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-tbs.*"})
*
on(namespace, persistentvolumeclaim) group_left(volume)
kube_pod_spec_volumes_persistentvolumeclaims_info{pod=~"{{ .podSelector }}"}
) > 0.9
for: 5m
labels:
severity: critical
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,24 +0,0 @@
{{- $alert := "CNPGClusterLowDiskSpaceWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Instance is running out of disk space.
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" is running low on disk space. Check attached PVCs.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterLowDiskSpaceWarning.md
expr: |
max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}"} / kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}"})) > 0.7 OR
max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-wal"} / kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-wal"})) > 0.7 OR
max(sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_used_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-tbs.*"})
/
sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_capacity_bytes{namespace="{{ .namespace }}", persistentvolumeclaim=~"{{ .podSelector }}-tbs.*"})
*
on(namespace, persistentvolumeclaim) group_left(volume)
kube_pod_spec_volumes_persistentvolumeclaims_info{pod=~"{{ .podSelector }}"}
) > 0.7
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,19 +0,0 @@
{{- $alert := "CNPGClusterOffline" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster has no running instances!
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" has no ready instances.
Having an offline cluster means your applications will not be able to access the database, leading to
potential service disruption and/or data loss.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterOffline.md
expr: |
(count(cnpg_collector_up{namespace="{{ .namespace }}",pod=~"{{ .podSelector }}"}) OR on() vector(0)) == 0
for: 5m
labels:
severity: critical
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,16 +0,0 @@
{{- $alert := "CNPGClusterPGDatabaseXidAgeWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster has a number of transactions from the frozen XID to the current one.
description: |-
Over 300,000,000 transactions from frozen xid
on pod {{`{{`}} $labels.pod {{`}}`}}
expr: |
cnpg_pg_database_xid_age > 300000000
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,15 +0,0 @@
{{- $alert := "CNPGClusterPGReplicationWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster standby is lagging behind the primary.
description: |-
Standby is lagging behind by over 300 seconds (5 minutes)
expr: |
cnpg_pg_replication_lag > 300
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,16 +0,0 @@
{{- $alert := "CNPGClusterReplicaFailingReplicationWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster has a replica is failing to replicate.
description: |-
Replica {{`{{`}} $labels.pod {{`}}`}}
is failing to replicate
expr: |
cnpg_pg_replication_in_recovery > cnpg_pg_replication_is_wal_receiver_up
for: 1m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,18 +0,0 @@
{{- $alert := "CNPGClusterZoneSpreadWarning" -}}
{{- if not (has $alert .excludeRules) -}}
alert: {{ $alert }}
annotations:
summary: CNPG Cluster instances in the same zone.
description: |-
CloudNativePG Cluster "{{ .namespace }}/{{ .cluster }}" has instances in the same availability zone.
A disaster in one availability zone will lead to a potential service disruption and/or data loss.
runbook_url: https://github.com/cloudnative-pg/charts/blob/main/charts/cluster/docs/runbooks/CNPGClusterZoneSpreadWarning.md
expr: |
{{ .Values.cluster.instances }} > count(count by (label_topology_kubernetes_io_zone) (kube_pod_info{namespace="{{ .namespace }}", pod=~"{{ .podSelector }}"} * on(node,instance) group_left(label_topology_kubernetes_io_zone) kube_node_labels)) < 3
for: 5m
labels:
severity: warning
namespace: {{ .namespace }}
cnpg_cluster: {{ .cluster }}
{{- end -}}

View File

@@ -1,146 +0,0 @@
{{- define "cluster.bootstrap" -}}
{{- if eq .Values.mode "standalone" }}
bootstrap:
initdb:
{{- with .Values.cluster.initdb }}
{{- with (omit . "postInitApplicationSQL" "owner" "import") }}
{{- . | toYaml | nindent 4 }}
{{- end }}
{{- end }}
{{- if .Values.cluster.initdb.owner }}
owner: {{ tpl .Values.cluster.initdb.owner . }}
{{- end }}
{{- if eq .Values.type "tensorchord" }}
dataChecksums: true
{{- end }}
{{- if or (eq .Values.type "tensorchord") (.Values.cluster.initdb.postInitApplicationSQL) }}
postInitApplicationSQL:
{{- if eq .Values.type "tensorchord" }}
- ALTER SYSTEM SET search_path TO "$user", public, vectors;
- SET search_path TO "$user", public, vectors;
- CREATE EXTENSION IF NOT EXISTS "vectors";
- CREATE EXTENSION IF NOT EXISTS "cube";
- CREATE EXTENSION IF NOT EXISTS "earthdistance";
- ALTER SCHEMA vectors OWNER TO "app";
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA vectors TO "app";
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "app";
{{- end }}
{{- with .Values.cluster.initdb }}
{{- range .postInitApplicationSQL }}
{{- printf "- %s" . | nindent 6 }}
{{- end -}}
{{- end }}
{{- end }}
{{- else if eq .Values.mode "recovery" -}}
bootstrap:
{{- if eq .Values.recovery.method "pgBaseBackup" }}
pg_basebackup:
source: pgBaseBackupSource
{{ with .Values.recovery.pgBaseBackup.database }}
database: {{ . }}
{{- end }}
{{ with .Values.recovery.pgBaseBackup.owner }}
owner: {{ . }}
{{- end }}
{{ with .Values.recovery.pgBaseBackup.secret }}
secret:
{{- toYaml . | nindent 6 }}
{{- end }}
externalClusters:
{{- include "cluster.externalSourceCluster" (list "pgBaseBackupSource" .Values.recovery.pgBaseBackup.source) | nindent 2 }}
{{- else if eq .Values.recovery.method "import" }}
initdb:
{{- with .Values.cluster.initdb }}
{{- with (omit . "owner" "import" "postInitApplicationSQL") }}
{{- . | toYaml | nindent 4 }}
{{- end }}
{{- end }}
{{- if .Values.cluster.initdb.owner }}
owner: {{ tpl .Values.cluster.initdb.owner . }}
{{- end }}
import:
source:
externalCluster: importSource
type: {{ .Values.recovery.import.type }}
databases:
{{- if and (gt (len .Values.recovery.import.databases) 1) (eq .Values.recovery.import.type "microservice") }}
{{ fail "Too many databases in import type of microservice!" }}
{{- else}}
{{- with .Values.recovery.import.databases }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
{{- if eq .Values.recovery.import.type "monolith" }}
roles:
{{- with .Values.replica.importRoles }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
{{- if and (.Values.recovery.import.postImportApplicationSQL) (eq .Values.recovery.import.type "microservice") }}
postImportApplicationSQL:
{{- with .Values.recovery.import.postImportApplicationSQL }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
schemaOnly: {{ .Values.recovery.import.schemaOnly }}
{{ with .Values.recovery.import.pgDumpExtraOptions }}
pgDumpExtraOptions:
{{- . | toYaml | nindent 8 }}
{{- end }}
{{ with .Values.recovery.import.pgRestoreExtraOptions }}
pgRestoreExtraOptions:
{{- . | toYaml | nindent 8 }}
{{- end }}
externalClusters:
{{- include "cluster.externalSourceCluster" (list "importSource" .Values.recovery.import.source) | nindent 2 }}
{{- else if eq .Values.recovery.method "backup" }}
recovery:
{{- with .Values.recovery.backup.pitrTarget.time }}
recoveryTarget:
targetTime: {{ . }}
{{- end }}
{{ with .Values.recovery.backup.database }}
database: {{ . }}
{{- end }}
{{ with .Values.recovery.backup.owner }}
owner: {{ . }}
{{- end }}
backup:
name: {{ .Values.recovery.backup.backupName }}
{{- else if eq .Values.recovery.method "objectStore" }}
recovery:
{{- with .Values.recovery.objectStore.pitrTarget.time }}
recoveryTarget:
targetTime: {{ . }}
{{- end }}
{{ with .Values.recovery.objectStore.database }}
database: {{ . }}
{{- end }}
{{ with .Values.recovery.objectStore.owner }}
owner: {{ . }}
{{- end }}
source: {{ include "cluster.recoveryServerName" . }}
externalClusters:
- name: {{ include "cluster.recoveryServerName" . }}
plugin:
name: barman-cloud.cloudnative-pg.io
parameters:
barmanObjectName: "{{ include "cluster.name" . }}-{{ .Values.recovery.objectStore.name }}"
serverName: {{ include "cluster.recoveryServerName" . }}
{{- else }}
{{ fail "Invalid recovery mode!" }}
{{- end }}
{{- else }}
{{ fail "Invalid cluster mode!" }}
{{- end }}
{{- end }}

View File

@@ -1,12 +0,0 @@
{{- define "cluster.color-error" }}
{{- printf "\033[0;31m%s\033[0m" . -}}
{{- end }}
{{- define "cluster.color-ok" }}
{{- printf "\033[0;32m%s\033[0m" . -}}
{{- end }}
{{- define "cluster.color-warning" }}
{{- printf "\033[0;33m%s\033[0m" . -}}
{{- end }}
{{- define "cluster.color-info" }}
{{- printf "\033[0;34m%s\033[0m" . -}}
{{- end }}

View File

@@ -1,33 +0,0 @@
{{- define "cluster.externalSourceCluster" -}}
{{- $name := first . -}}
{{- $config := last . -}}
- name: {{ first . }}
connectionParameters:
host: {{ $config.host | quote }}
port: {{ $config.port | quote }}
user: {{ $config.username | quote }}
{{- with $config.database }}
dbname: {{ . | quote }}
{{- end }}
sslmode: {{ $config.sslMode | quote }}
{{- if $config.passwordSecret.name }}
password:
name: {{ $config.passwordSecret.name }}
key: {{ $config.passwordSecret.key }}
{{- end }}
{{- if $config.sslKeySecret.name }}
sslKey:
name: {{ $config.sslKeySecret.name }}
key: {{ $config.sslKeySecret.key }}
{{- end }}
{{- if $config.sslCertSecret.name }}
sslCert:
name: {{ $config.sslCertSecret.name }}
key: {{ $config.sslCertSecret.key }}
{{- end }}
{{- if $config.sslRootCertSecret.name }}
sslRootCert:
name: {{ $config.sslRootCertSecret.name }}
key: {{ $config.sslRootCertSecret.key }}
{{- end }}
{{- end }}

View File

@@ -1,103 +0,0 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "cluster.name" -}}
{{- if .Values.nameOverride }}
{{- .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-postgresql-%s" .Release.Name ((semver .Values.cluster.image.tag).Major | toString) | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "cluster.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "cluster.labels" -}}
helm.sh/chart: {{ include "cluster.chart" $ }}
{{ include "cluster.selectorLabels" $ }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.Version | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- with .Values.cluster.additionalLabels }}
{{ toYaml . }}
{{- end }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "cluster.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cluster.name" $ }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }}
{{/*
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
*/}}
{{- define "cluster.namespace" -}}
{{- if .Values.namespaceOverride -}}
{{- .Values.namespaceOverride -}}
{{- else -}}
{{- .Release.Namespace -}}
{{- end -}}
{{- end -}}
{{/*
Postgres UID
*/}}
{{- define "cluster.postgresUID" -}}
{{- if ge (int .Values.cluster.postgresUID) 0 -}}
{{- .Values.cluster.postgresUID }}
{{- else -}}
{{- 26 -}}
{{- end -}}
{{- end -}}
{{/*
Postgres GID
*/}}
{{- define "cluster.postgresGID" -}}
{{- if ge (int .Values.cluster.postgresGID) 0 -}}
{{- .Values.cluster.postgresGID }}
{{- else -}}
{{- 26 -}}
{{- end -}}
{{- end -}}
{{/*
Generate recovery server name
*/}}
{{- define "cluster.recoveryServerName" -}}
{{- if .Values.recovery.recoveryServerName -}}
{{- .Values.recovery.recoveryServerName -}}
{{- else -}}
{{- printf "%s-backup-%s" (include "cluster.name" .) (toString .Values.recovery.recoveryIndex) | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Generate name for recovery object store credentials
*/}}
{{- define "cluster.recoveryCredentials" -}}
{{- if .Values.recovery.endpointCredentials -}}
{{- .Values.recovery.endpointCredentials -}}
{{- else -}}
{{- printf "%s-backup-secret" (include "cluster.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Generate name for backup object store credentials
*/}}
{{- define "cluster.backupCredentials" -}}
{{- printf "%s-backup-secret" (include "cluster.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end }}

View File

@@ -1,155 +0,0 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}-cluster
namespace: {{ include "cluster.namespace" . }}
{{- with .Values.cluster.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "cluster.labels" . | nindent 4 }}
spec:
instances: {{ .Values.cluster.instances }}
imageName: "{{ .Values.cluster.image.repository }}:{{ .Values.cluster.image.tag }}"
imagePullPolicy: {{ .Values.cluster.imagePullPolicy }}
{{- with .Values.cluster.imagePullSecrets }}
imagePullSecrets:
{{- . | toYaml | nindent 4 }}
{{- end }}
postgresUID: {{ include "cluster.postgresUID" . }}
postgresGID: {{ include "cluster.postgresGID" . }}
{{ if or (eq .Values.backup.method "objectStore") (eq .Values.recovery.method "objectStore") }}
plugins:
{{ end }}
{{- range $objectStore := .Values.backup.objectStore }}
- name: barman-cloud.cloudnative-pg.io
isWALArchiver: {{ $objectStore.isWALArchiver | default true }}
parameters:
barmanObjectName: "{{ include "cluster.name" $ }}-{{ $objectStore.name }}-backup"
{{- if $objectStore.clusterName }}
serverName: "{{ $objectStore.clusterName }}-backup-{{ $objectStore.index }}"
{{- else }}
serverName: "{{ include "cluster.name" $ }}-backup-{{ $objectStore.index }}"
{{- end }}
{{- end }}
{{ if eq .Values.recovery.method "objectStore" }}
- name: barman-cloud.cloudnative-pg.io
parameters:
barmanObjectName: "{{ include "cluster.name" . }}-{{ .Values.recovery.objectStore.name }}"
serverName: {{ include "cluster.recoveryServerName" . }}
{{ end }}
storage:
size: {{ .Values.cluster.storage.size }}
{{- if not (empty .Values.cluster.storage.storageClass) }}
storageClass: {{ .Values.cluster.storage.storageClass }}
{{- end }}
{{- if .Values.cluster.walStorage.enabled }}
walStorage:
size: {{ .Values.cluster.walStorage.size }}
{{- if not (empty .Values.cluster.walStorage.storageClass) }}
storageClass: {{ .Values.cluster.walStorage.storageClass }}
{{- end }}
{{- end }}
{{- with .Values.cluster.resources }}
resources:
{{- toYaml . | nindent 4 }}
{{ end }}
{{- with .Values.cluster.affinity }}
affinity:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- if .Values.cluster.priorityClassName }}
priorityClassName: {{ .Values.cluster.priorityClassName }}
{{- end }}
primaryUpdateMethod: {{ .Values.cluster.primaryUpdateMethod }}
primaryUpdateStrategy: {{ .Values.cluster.primaryUpdateStrategy }}
logLevel: {{ .Values.cluster.logLevel }}
{{- with .Values.cluster.certificates }}
certificates:
{{- toYaml . | nindent 4 }}
{{ end }}
enableSuperuserAccess: {{ .Values.cluster.enableSuperuserAccess }}
{{- with .Values.cluster.superuserSecret }}
superuserSecret:
name: {{ . }}
{{ end }}
enablePDB: {{ .Values.cluster.enablePDB }}
postgresql:
{{- if or (eq .Values.type "tensorchord") (not (empty .Values.cluster.postgresql.shared_preload_libraries)) }}
shared_preload_libraries:
{{- if eq .Values.type "tensorchord" }}
- vectors.so
{{- end }}
{{- with .Values.cluster.postgresql.shared_preload_libraries }}
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
{{- with .Values.cluster.postgresql.pg_hba }}
pg_hba:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- with .Values.cluster.postgresql.pg_ident }}
pg_ident:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- with .Values.cluster.postgresql.ldap }}
ldap:
{{- toYaml . | nindent 6 }}
{{- end}}
{{- with .Values.cluster.postgresql.synchronous }}
synchronous:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- with .Values.cluster.postgresql.parameters }}
parameters:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- if not (and (empty .Values.cluster.roles) (empty .Values.cluster.services)) }}
managed:
{{- with .Values.cluster.services }}
services:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- with .Values.cluster.roles }}
roles:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- end }}
{{- with .Values.cluster.serviceAccountTemplate }}
serviceAccountTemplate:
{{- toYaml . | nindent 4 }}
{{- end }}
monitoring:
enablePodMonitor: {{ and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.podMonitor.enabled }}
disableDefaultQueries: {{ .Values.cluster.monitoring.disableDefaultQueries }}
{{- if not (empty .Values.cluster.monitoring.customQueries) }}
customQueriesConfigMap:
- name: {{ include "cluster.name" . }}-monitoring
key: custom-queries
{{- end }}
{{- if not (empty .Values.cluster.monitoring.customQueriesSecret) }}
{{- with .Values.cluster.monitoring.customQueriesSecret }}
customQueriesSecret:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- end }}
{{- if not (empty .Values.cluster.monitoring.podMonitor.relabelings) }}
{{- with .Values.cluster.monitoring.podMonitor.relabelings }}
podMonitorRelabelings:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- end }}
{{- if not (empty .Values.cluster.monitoring.podMonitor.metricRelabelings) }}
{{- with .Values.cluster.monitoring.podMonitor.metricRelabelings }}
podMonitorMetricRelabelings:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- end }}
{{ include "cluster.bootstrap" . | nindent 2 }}

View File

@@ -1,18 +0,0 @@
{{- if not (empty .Values.cluster.monitoring.customQueries) }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "cluster.name" $ }}-monitoring
namespace: {{ include "cluster.namespace" $ }}
labels:
cnpg.io/reload: ""
{{- include "cluster.labels" $ | nindent 4 }}
data:
custom-queries: |
{{- range .Values.cluster.monitoring.customQueries }}
{{ .name }}:
query: {{ .query | quote }}
metrics:
{{- .metrics | toYaml | nindent 8 }}
{{- end }}
{{- end }}

View File

@@ -1,93 +0,0 @@
{{ if and (.Values.backup.enabled) (eq .Values.backup.method "objectStore") }}
{{ $context := . -}}
{{ range .Values.backup.objectStore -}}
---
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: "{{ include "cluster.name" $context }}-{{ .name }}-backup"
namespace: {{ include "cluster.namespace" $context }}
labels:
{{- include "cluster.labels" $context | nindent 4 }}
spec:
retentionPolicy: {{ .retentionPolicy | default "30d" }}
configuration:
destinationPath: {{ .destinationPath | required "Destination path is required" }}
endpointURL: {{ .endpointURL | default "https://nyc3.digitaloceanspaces.com" }}
{{- if .endpointCA }}
endpointCA:
name: {{ .endpointCA.name }}
key: {{ .endpointCA.key }}
{{- end }}
{{- if .wal }}
wal:
compression: {{ .wal.compression | default "snappy" }}
{{ with .wal.encryption }}
encryption: {{ . }}
{{ end }}
maxParallel: {{ .wal.maxParallel | default "1" }}
{{- end }}
{{- if .wal }}
data:
compression: {{ .data.compression | default "snappy" }}
{{- with .data.encryption }}
encryption: {{ . }}
{{- end }}
jobs: {{ .data.jobs | default 1 }}
{{- end }}
s3Credentials:
accessKeyId:
{{- if .endpointCredentials }}
name: {{ .endpointCredentials }}
{{- else }}
name: {{ include "cluster.backupCredentials" $context }}
{{- end }}
key: ACCESS_KEY_ID
secretAccessKey:
{{- if .endpointCredentials }}
name: {{ .endpointCredentials }}
{{- else }}
name: {{ include "cluster.backupCredentials" $context }}
{{- end }}
key: ACCESS_SECRET_KEY
{{ end -}}
{{ end }}
{{ if eq .Values.recovery.method "objectStore" }}
---
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: "{{ include "cluster.name" . }}-{{ .Values.recovery.objectStore.name }}"
namespace: {{ include "cluster.namespace" . }}
labels:
{{- include "cluster.labels" . | nindent 4 }}
spec:
configuration:
destinationPath: {{ .Values.recovery.objectStore.destinationPath }}
endpointURL: {{ .Values.recovery.objectStore.endpointURL }}
{{- if .Values.recovery.objectStore.endpointCA.name }}
endpointCA:
name: {{ .Values.recovery.objectStore.endpointCA.name }}
key: {{ .Values.recovery.objectStore.endpointCA.key }}
{{- end }}
wal:
compression: {{ .Values.recovery.objectStore.wal.compression }}
{{- with .Values.recovery.objectStore.wal.encryption}}
encryption: {{ . }}
{{- end }}
maxParallel: {{ .Values.recovery.objectStore.wal.maxParallel }}
data:
compression: {{ .Values.recovery.objectStore.data.compression }}
{{- with .Values.recovery.objectStore.data.encryption }}
encryption: {{ . }}
{{- end }}
jobs: {{ .Values.recovery.objectStore.data.jobs }}
s3Credentials:
accessKeyId:
name: {{ include "cluster.recoveryCredentials" . }}
key: ACCESS_KEY_ID
secretAccessKey:
name: {{ include "cluster.recoveryCredentials" . }}
key: ACCESS_SECRET_KEY
{{ end }}

View File

@@ -1,51 +0,0 @@
{{- range .Values.poolers }}
---
apiVersion: postgresql.cnpg.io/v1
kind: Pooler
metadata:
name: {{ include "cluster.name" $ }}-pooler-{{ .name }}
namespace: {{ include "cluster.namespace" $ }}
labels:
{{- include "cluster.labels" $ | nindent 4 }}
spec:
cluster:
name: {{ include "cluster.name" $ }}
instances: {{ .instances }}
type: {{ default "rw" .type }}
pgbouncer:
poolMode: {{ default "session" .poolMode }}
{{- with .authQuerySecret }}
authQuerySecret:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- with .authQuery }}
authQuery:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- with .parameters }}
parameters:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- with .pg_hba }}
pg_hba:
{{- toYaml . | nindent 6 }}
{{- end }}
{{ with .monitoring }}
monitoring:
{{- if not (empty .podMonitor) }}
enablePodMonitor: {{ and .enabled .podMonitor.enabled }}
{{- with .podMonitor.relabelings }}
podMonitorRelabelings:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- with .podMonitor.metricRelabelings }}
podMonitorMetricRelabelings:
{{- toYaml . | nindent 6 }}
{{ end }}
{{- end }}
{{- end }}
{{- with .template }}
template:
{{- . | toYaml | nindent 4 }}
{{- end }}
{{- end }}

View File

@@ -1,27 +0,0 @@
{{- if and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.prometheusRule.enabled -}}
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: {{ include "cluster.name" $ }}-alert-rules
namespace: {{ include "cluster.namespace" $ }}
labels:
{{- include "cluster.labels" $ | nindent 4 }}
spec:
groups:
- name: cloudnative-pg/{{ include "cluster.name" . }}
rules:
{{- $dict := dict "excludeRules" .Values.cluster.monitoring.prometheusRule.excludeRules -}}
{{- $_ := set $dict "value" "{{`{{`}} $value {{`}}`}}" -}}
{{- $_ := set $dict "namespace" .Release.Namespace -}}
{{- $_ := set $dict "cluster" (printf "%s-cluster" (include "cluster.name" .) ) -}}
{{- $_ := set $dict "labels" (dict "job" "{{`{{`}} $labels.job {{`}}`}}" "node" "{{`{{`}} $labels.node {{`}}`}}" "pod" "{{`{{`}} $labels.pod {{`}}`}}") -}}
{{- $_ := set $dict "podSelector" (printf "%s-cluster-([1-9][0-9]*)$" (include "cluster.name" .) ) -}}
{{- $_ := set $dict "Values" .Values -}}
{{- $_ := set $dict "Template" .Template -}}
{{- range $path, $_ := .Files.Glob "prometheus_rules/**.yaml" }}
{{- $tpl := tpl ($.Files.Get $path) $dict | nindent 10 | trim -}}
{{- with $tpl }}
- {{ $tpl }}
{{- end -}}
{{- end }}
{{ end }}

View File

@@ -1,25 +0,0 @@
{{ if .Values.backup.enabled }}
{{ $context := . -}}
{{ range .Values.backup.scheduledBackups -}}
---
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: "{{ include "cluster.name" $context }}-{{ .name }}-scheduled-backup"
namespace: {{ include "cluster.namespace" $context }}
labels:
{{- include "cluster.labels" $context | nindent 4 }}
spec:
immediate: {{ .immediate | default true }}
suspend: {{ .suspend | default false }}
schedule: {{ .schedule | quote | required "Schedule is required" }}
backupOwnerReference: {{ .backupOwnerReference | default "self" }}
cluster:
name: {{ include "cluster.name" $context }}-cluster
method: plugin
pluginConfiguration:
name: {{ .plugin | default "barman-cloud.cloudnative-pg.io" }}
parameters:
barmanObjectName: "{{ include "cluster.name" $context }}-{{ .backupName }}-backup"
{{ end -}}
{{ end }}

View File

@@ -1,558 +0,0 @@
# -- Override the name of the cluster
nameOverride: ""
# -- Override the namespace of the chart
namespaceOverride: ""
# -- Type of the CNPG database. Available types:
# * `postgresql`
# * `tensorchord`
type: postgresql
# -- Cluster mode of operation. Available modes:
# * `standalone` - Default mode. Creates new or updates an existing CNPG cluster.
# * `recovery` - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup
mode: standalone
# -- Cluster settings
cluster:
instances: 3
# -- Default image
image:
repository: ghcr.io/cloudnative-pg/postgresql
tag: "17.5-1-bullseye"
# -- Image pull policy. One of Always, Never or IfNotPresent. If not defined, it defaults to IfNotPresent. Cannot be updated.
# More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
imagePullPolicy: IfNotPresent
# -- The list of pull secrets to be used to pull the images.
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-LocalObjectReference
imagePullSecrets: []
# -- Default storage size
storage:
size: 10Gi
storageClass: ""
walStorage:
enabled: true
size: 2Gi
storageClass: ""
# -- The UID and GID of the postgres user inside the image, defaults to 26
postgresUID: -1
postgresGID: -1
# -- Customization of service definitions. Please refer to https://cloudnative-pg.io/documentation/current/service_management/
services: {}
# -- Resources requirements of every generated Pod.
# Please refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for more information.
# We strongly advise you use the same setting for limits and requests so that your cluster pods are given a Guaranteed QoS.
# See: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/
resources:
requests:
memory: 256Mi
cpu: 100m
limits:
hugepages-2Mi: 256Mi
priorityClassName: ""
# -- Method to follow to upgrade the primary server during a rolling update procedure, after all replicas have been
# successfully updated. It can be switchover (default) or restart.
primaryUpdateMethod: switchover
# -- Strategy to follow to upgrade the primary server during a rolling update procedure, after all replicas have been
# successfully updated: it can be automated (unsupervised - default) or manual (supervised)
primaryUpdateStrategy: unsupervised
# -- The instances' log level, one of the following values: error, warning, info (default), debug, trace
logLevel: "info"
# -- Affinity/Anti-affinity rules for Pods.
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration
affinity:
enablePodAntiAffinity: true
topologyKey: kubernetes.io/hostname
# -- The configuration for the CA and related certificates.
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-CertificatesConfiguration
certificates: {}
# -- When this option is enabled, the operator will use the SuperuserSecret to update the postgres user password.
# If the secret is not present, the operator will automatically create one.
# When this option is disabled, the operator will ignore the SuperuserSecret content, delete it when automatically created,
# and then blank the password of the postgres user by setting it to NULL.
enableSuperuserAccess: false
superuserSecret: ""
# -- Allow to disable PDB, mainly useful for upgrade of single-instance clusters or development purposes
# See: https://cloudnative-pg.io/documentation/current/kubernetes_upgrade/#pod-disruption-budgets
enablePDB: true
# -- This feature enables declarative management of existing roles, as well as the creation of new roles if they are not
# already present in the database.
# See: https://cloudnative-pg.io/documentation/current/declarative_role_management/
roles: []
# - name: dante
# ensure: present
# comment: Dante Alighieri
# login: true
# superuser: false
# inRoles:
# - pg_monitor
# - pg_signal_backend
# -- Enable default monitoring and alert rules
monitoring:
# -- Whether to enable monitoring
enabled: false
podMonitor:
# -- Whether to enable the PodMonitor
enabled: true
# --The list of relabelings for the PodMonitor.
# Applied to samples before scraping.
relabelings: []
# -- The list of metric relabelings for the PodMonitor.
# Applied to samples before ingestion.
metricRelabelings: []
prometheusRule:
# -- Whether to enable the PrometheusRule automated alerts
enabled: false
# -- Exclude specified rules
excludeRules: []
# -- Whether the default queries should be injected.
# Set it to true if you don't want to inject default queries into the cluster.
disableDefaultQueries: false
# -- Custom Prometheus metrics
# Will be stored in the ConfigMap
customQueries: []
# - name: "pg_cache_hit_ratio"
# query: "SELECT current_database() as datname, sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as ratio FROM pg_statio_user_tables;"
# metrics:
# - datname:
# usage: "LABEL"
# description: "Name of the database"
# - ratio:
# usage: GAUGE
# description: "Cache hit ratio"
# -- The list of secrets containing the custom queries
customQueriesSecret: []
# - name: custom-queries-secret
# key: custom-queries
# -- Parameters to be set for the database itself
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-PostgresConfiguration
postgresql:
# -- PostgreSQL configuration options (postgresql.conf)
parameters:
shared_buffers: 128MB
max_slot_wal_keep_size: 2000MB
hot_standby_feedback: "on"
# -- Quorum-based Synchronous Replication
synchronous: {}
# method: any
# number: 1
# -- PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file)
pg_hba: []
# - host all all 10.244.0.0/16 md5
# -- PostgreSQL User Name Maps rules (lines to be appended to the pg_ident.conf file)
pg_ident: []
# - mymap /^(.*)@mydomain\.com$ \1
# -- Lists of shared preload libraries to add to the default ones
shared_preload_libraries: []
# - pgaudit
# -- PostgreSQL LDAP configuration (see https://cloudnative-pg.io/documentation/current/postgresql_conf/#ldap-configuration)
ldap: {}
# https://cloudnative-pg.io/documentation/current/postgresql_conf/#ldap-configuration
# server: 'openldap.default.svc.cluster.local'
# bindSearchAuth:
# baseDN: 'ou=org,dc=example,dc=com'
# bindDN: 'cn=admin,dc=example,dc=com'
# bindPassword:
# name: 'ldapBindPassword'
# key: 'data'
# searchAttribute: 'uid'
# -- Bootstrap is the configuration of the bootstrap process when initdb is used.
# See: https://cloudnative-pg.io/documentation/current/bootstrap/
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-bootstrapinitdb
initdb: {}
# database: app
# owner: "" # Defaults to the database name
# secret:
# name: "" # Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch
# options: []
# encoding: UTF8
# postInitSQL:
# - CREATE EXTENSION IF NOT EXISTS vector;
# postInitApplicationSQL: []
# postInitTemplateSQL: []
# -- Configure the metadata of the generated service account
serviceAccountTemplate: {}
additionalLabels: {}
annotations: {}
# -- Recovery settings when booting cluster from external cluster
recovery:
# -- Available recovery methods:
# * `backup` - Recovers a CNPG cluster from a CNPG backup (PITR supported) Needs to be on the same cluster in the same namespace.
# * `objectStore` - Recovers a CNPG cluster from a barman object store (PITR supported).
# * `pgBaseBackup` - Recovers a CNPG cluster viaa streaming replication protocol. Useful if you want to
# migrate databases to CloudNativePG, even from outside Kubernetes.
# * `import` - Import one or more databases from an existing Postgres cluster.
method: backup
# See https://cloudnative-pg.io/documentation/current/recovery/#recovery-from-a-backup-object
backup:
# -- Point in time recovery target. Specify one of the following:
pitrTarget:
# -- Time in RFC3339 format
time: ""
# -- Name of the database used by the application. Default: `app`.
database: app
# -- Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key.
owner: ""
# -- Name of the backup to recover from.
backupName: ""
# See https://cloudnative-pg.io/documentation/current/recovery/#recovery-from-an-object-store
objectStore:
# -- Point in time recovery target. Specify one of the following:
pitrTarget:
# -- Time in RFC3339 format
time: ""
# -- Name of the database used by the application. Default: `app`.
database: app
# -- Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key.
owner: ""
# -- Object store backup name
name: recovery
# -- Overrides the provider specific default path. Defaults to:
# S3: s3://<bucket><path>
# Azure: https://<storageAccount>.<serviceName>.core.windows.net/<containerName><path>
# Google: gs://<bucket><path>
destinationPath: ""
# -- Overrides the provider specific default endpoint. Defaults to:
# S3: https://s3.<region>.amazonaws.com"
# Leave empty if using the default S3 endpoint
endpointURL: "https://nyc3.digitaloceanspaces.com"
# -- Specifies a CA bundle to validate a privately signed certificate.
endpointCA:
# -- Creates a secret with the given value if true, otherwise uses an existing secret.
create: false
name: ""
key: ""
# -- Generate external cluster name, uses: {{ .Release.Name }}-postgresql-<major version>-backup-index-{{ index }}
index: 1
# -- Override the name of the backup cluster, defaults to "cluster.name"
clusterName: ""
# -- Specifies secret that contains S3 credentials, should contain the keys ACCESS_KEY_ID and ACCESS_SECRET_KEY
endpointCredentials: ""
# -- Storage
wal:
# -- WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# -- Whether to instruct the storage provider to encrypt WAL files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# -- Number of WAL files to be archived or restored in parallel.
maxParallel: 1
data:
# -- Data compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# -- Whether to instruct the storage provider to encrypt data files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# -- Number of data files to be archived or restored in parallel.
jobs: 1
# See https://cloudnative-pg.io/documentation/current/bootstrap/#bootstrap-from-a-live-cluster-pg_basebackup
pgBaseBackup:
# -- Name of the database used by the application. Default: `app`.
database: app
# -- Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch
secret: ""
# -- Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key.
owner: ""
# -- Configuration for the source database
source:
host: ""
port: 5432
username: ""
database: "app"
sslMode: "verify-full"
passwordSecret:
# -- Whether to create a secret for the password
create: false
# -- Name of the secret containing the password
name: ""
# -- The key in the secret containing the password
key: "password"
# -- The password value to use when creating the secret
value: ""
sslKeySecret:
name: ""
key: ""
sslCertSecret:
name: ""
key: ""
sslRootCertSecret:
name: ""
key: ""
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-Import
import:
# -- One of `microservice` or `monolith.`
# See: https://cloudnative-pg.io/documentation/current/database_import/#how-it-works
type: "microservice"
# -- Databases to import
databases: []
# -- Roles to import
roles: []
# -- List of SQL queries to be executed as a superuser in the application database right after is imported.
# To be used with extreme care. Only available in microservice type.
postImportApplicationSQL: []
# -- When set to true, only the pre-data and post-data sections of pg_restore are invoked, avoiding data import.
schemaOnly: false
# -- List of custom options to pass to the `pg_dump` command. IMPORTANT: Use these options with caution and at your
# own risk, as the operator does not validate their content. Be aware that certain options may conflict with the
# operator's intended functionality or design.
pgDumpExtraOptions: []
# -- List of custom options to pass to the `pg_restore` command. IMPORTANT: Use these options with caution and at
# your own risk, as the operator does not validate their content. Be aware that certain options may conflict with the
# operator's intended functionality or design.
pgRestoreExtraOptions: []
# -- Configuration for the source database
source:
host: ""
port: 5432
username: app
database: app
sslMode: "verify-full"
passwordSecret:
# -- Whether to create a secret for the password
create: false
# -- Name of the secret containing the password
name: ""
# -- The key in the secret containing the password
key: "password"
# -- The password value to use when creating the secret
value: ""
sslKeySecret:
name: ""
key: ""
sslCertSecret:
name: ""
key: ""
sslRootCertSecret:
name: ""
key: ""
# -- Backup settings
backup:
# -- You need to configure backups manually, so backups are disabled by default.
enabled: false
# -- Method to create backups, options currently are only objectStore
method: objectStore
# -- Options for object store backups
objectStore: []
# -
# # -- Object store backup name
# name: external
# # -- Overrides the provider specific default path. Defaults to:
# # S3: s3://<bucket><path>
# # Azure: https://<storageAccount>.<serviceName>.core.windows.net/<containerName><path>
# # Google: gs://<bucket><path>
# destinationPath: ""
# # -- Overrides the provider specific default endpoint. Defaults to:
# # https://nyc3.digitaloceanspaces.com
# endpointURL: ""
# # -- Specifies a CA bundle to validate a privately signed certificate.
# endpointCA:
# # -- Creates a secret with the given value if true, otherwise uses an existing secret.
# create: false
# name: ""
# key: ""
# # -- Generate external cluster name, uses: {{ .Release.Name }}-postgresql-<major version>-backup-index-{{ index }}
# index: 1
# # -- Override the name of the backup cluster, defaults to "cluster.name"
# clusterName: ""
# # -- Specifies secret that contains S3 credentials, should contain the keys ACCESS_KEY_ID and ACCESS_SECRET_KEY
# endpointCredentials: ""
# # -- Retention policy for backups
# retentionPolicy: "30d"
# # -- Specificies if this backup will do WALs
# isWALArchiver: true
# # -- Storage
# wal:
# # -- WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
# compression: snappy
# # -- Whether to instruct the storage provider to encrypt WAL files. One of `` (use the storage container default), `AES256` or `aws:kms`.
# encryption: ""
# # -- Number of WAL files to be archived or restored in parallel.
# maxParallel: 1
# data:
# # -- Data compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
# compression: snappy
# # -- Whether to instruct the storage provider to encrypt data files. One of `` (use the storage container default), `AES256` or `aws:kms`.
# encryption: ""
# # -- Number of data files to be archived or restored in parallel.
# jobs: 1
# -- List of scheduled backups
scheduledBackups: []
# -
# # -- Scheduled backup name
# name: daily-backup
# # -- Schedule in cron format
# schedule: "0 0 */3 * *"
# # -- Start backup on deployment
# immediate: false
# # -- Temporarily stop scheduled backups from running
# suspend: false
# # -- Backup owner reference
# backupOwnerReference: self
# # -- Backup method, can be `barman-cloud.cloudnative-pg.io` (default)
# plugin: barman-cloud.cloudnative-pg.io
# # -- Name of backup target
# backupName: external
# -- List of PgBouncer poolers
poolers: []
# -
# # -- Pooler name
# name: rw
# # -- PgBouncer type of service to forward traffic to.
# type: rw
# # -- PgBouncer pooling mode
# poolMode: transaction
# # -- Number of PgBouncer instances
# instances: 3
# # -- PgBouncer configuration parameters
# parameters:
# max_client_conn: "1000"
# default_pool_size: "25"
# monitoring:
# # -- Whether to enable monitoring
# enabled: false
# podMonitor:
# # -- Whether to enable the PodMonitor
# enabled: true
# # -- Custom PgBouncer deployment template.
# # Use to override image, specify resources, etc.
# template: {}
# -
# # -- Pooler name
# name: ro
# # -- PgBouncer type of service to forward traffic to.
# type: ro
# # -- PgBouncer pooling mode
# poolMode: transaction
# # -- Number of PgBouncer instances
# instances: 3
# # -- PgBouncer configuration parameters
# parameters:
# max_client_conn: "1000"
# default_pool_size: "25"
# monitoring:
# # -- Whether to enable monitoring
# enabled: false
# podMonitor:
# # -- Whether to enable the PodMonitor
# enabled: true
# # -- Custom PgBouncer deployment template.
# # Use to override image, specify resources, etc.
# template: {}

6017
index.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,49 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
"mergeConfidence:all-badges",
":rebaseStalePrs"
],
"timezone": "US/Central",
"schedule": [ "* */1 * * *" ],
"labels": [],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"packageRules": [
{
"description": "Label charts",
"matchDatasources": [
"helm"
],
"addLabels": [
"chart"
],
"automerge": false
},
{
"description": "Label images",
"matchDatasources": [
"docker"
],
"addLabels": [
"image"
],
"automerge": false
},
{
"description": "CNPG image",
"matchDepNames": [
"ghcr.io/cloudnative-pg/postgresql"
],
"matchDatasources": [
"docker"
],
"addLabels": [
"image"
],
"automerge": false,
"versioning": "deb"
}
]
}