Compare commits
1191 Commits
733b65eed8
...
renovate/p
Author | SHA1 | Date | |
---|---|---|---|
bd4c4293a6 | |||
9229e02482 | |||
1c3fdde1dd | |||
4582b19aaf | |||
fe46e81fd9 | |||
3064d4ec7a | |||
3aa05f3e30 | |||
a2cff0bf55 | |||
b54b6b0f60 | |||
e98d7330f1 | |||
08ed1eafa6 | |||
71d881830f | |||
18790396bd | |||
82fbc99fd0 | |||
2e88ded94d | |||
6251c63353 | |||
a62f8b93ea | |||
86d192d66e | |||
2dc36ce24e | |||
522922ff94 | |||
3d06570212 | |||
9c212b9dae | |||
819a21021c | |||
7f41a6590a | |||
1bf165bb4a | |||
a2228fce9a | |||
a26d8d5ef9 | |||
095f3f3f33 | |||
7110deb289 | |||
e6ec48aefa | |||
6eb16c0d2c | |||
4866c23d6b | |||
3ac6cd55c4 | |||
ea7fc46f58 | |||
e41c4058d7 | |||
2acd118941 | |||
7f1d5a4ebe | |||
a524413fc3 | |||
d83d33a86b | |||
bca08e7096 | |||
f7f7e6a471 | |||
9dea79910b | |||
c9cbd574d2 | |||
9450bad3ff | |||
a63c953cba | |||
707f87295c | |||
d02eb7428f | |||
48840f2c9e | |||
3acacd98aa | |||
9da246c877 | |||
4f201c1c90 | |||
ea4f02fbab | |||
057a489a5f | |||
553ce3e9f9 | |||
dcb4d9fcae | |||
d5cfa96d11 | |||
a643e5623b | |||
88d48b8b5f | |||
0e126a7719 | |||
17b5bd46d9 | |||
521dfd6e26 | |||
1a0e49a1ab | |||
09642d3b08 | |||
802b137754 | |||
74c64e60db | |||
9e264420a8 | |||
de65c2f47b | |||
4679c8e5ea | |||
5a1e762486 | |||
24a4677ab8 | |||
46f2376f2e | |||
e3c6d26ad2 | |||
a6c7018823 | |||
b60413822a | |||
5972a2afcc | |||
48e534e82a | |||
b2513cae00 | |||
24931bbdbd | |||
49ab601586 | |||
3c2e4c6a11 | |||
fb50fdcf20 | |||
1633d2249f | |||
4350091691 | |||
05f4e11c4e | |||
f7316a0cbe | |||
a872be09e2 | |||
c13c451e8f | |||
bd4841efdd | |||
65caa1ea1a | |||
b7905cfbf1 | |||
b6984ab3d8 | |||
824bb0873d | |||
0e11bcc0da | |||
5d071d0aae | |||
a0b37bcbd0 | |||
3a940a51de | |||
93cf6ff69f | |||
1c31c73cd5 | |||
e156d6fd27 | |||
a7aabb4ec1 | |||
b867c3fa73 | |||
2d2b045e48 | |||
c5c921daf0 | |||
e4614e4c50 | |||
ef9ce96a09 | |||
56be19df38 | |||
caeee8d5a2 | |||
4128d3338f | |||
b9684a804a | |||
6769da48da | |||
1a1d00c870 | |||
7edc59e8d6 | |||
b1e1c4c89b | |||
24c3a7a41a | |||
d5776f16d1 | |||
14ec4ba26c | |||
e3ae47f54e | |||
cebb6b798d | |||
4bc6722439 | |||
ce9ea0d9ea | |||
8b41421818 | |||
2bdc9d4560 | |||
94aef91433 | |||
e104fadefc | |||
af8adfbff3 | |||
a82e1023c4 | |||
4466c1d5e0 | |||
a1389ac3fc | |||
24b2a2c762 | |||
6a1b012e48 | |||
43b0e4d3e6 | |||
288530aa4d | |||
6c8c0c9827 | |||
c71c966c57 | |||
7c1ac15d5c | |||
96e05255f5 | |||
02f6c3dda7 | |||
0fab1812f6 | |||
fb95bf481c | |||
b97cbeaac2 | |||
eafd8cdc54 | |||
8b4cbbf4f5 | |||
27a83f5ca5 | |||
0e29198d50 | |||
d5850ae24c | |||
41015a1c43 | |||
1936bb74bb | |||
904bade396 | |||
f92da0f33c | |||
9d7af20bac | |||
1bb00fe20d | |||
859bb219ff | |||
354dd43725 | |||
3b4cac980b | |||
7eb33ad706 | |||
45b96e71f4 | |||
5a8d748d6c | |||
03f43b6020 | |||
3477257d1e | |||
6bea714e28 | |||
71141ff966 | |||
93e0879bc9 | |||
16afeded5d | |||
017d3e8ac2 | |||
f48d9a57cb | |||
4929b1542b | |||
5c5efe0b73 | |||
48bd840f39 | |||
28d719790c | |||
1522e18210 | |||
4aa453d7a6 | |||
6dc14ccd7d | |||
2bd4b554d6 | |||
8e92382784 | |||
0c38b4219a | |||
dde9fe86c3 | |||
1fc7e6a511 | |||
b30a4d51d9 | |||
606745fd3e | |||
48ef98aaea | |||
3daf14f528 | |||
54f58a8db5 | |||
1d20b9b633 | |||
244aa9ecb2 | |||
8cb00c4c5b | |||
90fc3e74e6 | |||
ac96a454c5 | |||
8d4334f893 | |||
8409e5852a | |||
0ef2778115 | |||
1fd16b09fd | |||
c96bd4fca4 | |||
6999dcbf83 | |||
e1a838933a | |||
4ca077240d | |||
0b375b4092 | |||
a999b38733 | |||
403d4be680 | |||
5b028638af | |||
d88fd862e0 | |||
7bc03b9660 | |||
32d22ae7e5 | |||
e58ca6e323 | |||
5bc0939f63 | |||
b880cbbfed | |||
a261e063f4 | |||
6c3d4e522f | |||
f5ec343738 | |||
df58f85de3 | |||
a464fa6f7b | |||
71d1f4d111 | |||
f1d3c8df11 | |||
8059d30b45 | |||
70d07e2e18 | |||
59aad770da | |||
bb70970e38 | |||
48bbfd28de | |||
b61171c21c | |||
ad310ae8d3 | |||
01f6d3a5d2 | |||
0c87d7c7ab | |||
52772ce8d1 | |||
e2765325fc | |||
9074dab74e | |||
4cc23e7acb | |||
e39863275f | |||
4ebc0b1069 | |||
0688846033 | |||
75a7f6b9b7 | |||
1ead67d10b | |||
451a992d8d | |||
7049403d60 | |||
380e74a82a | |||
1a89391702 | |||
1ba5687c4b | |||
37f3da0f9d | |||
9cba318022 | |||
3f8b6bd228 | |||
a6b1f52580 | |||
d3bf3f1680 | |||
4de54f76b2 | |||
5b0ae4971c | |||
341bacbb56 | |||
fcb03b1120 | |||
f22ca6fc14 | |||
ebbad2b4a9 | |||
e257f9e063 | |||
c6095888a7 | |||
bac8c5d40e | |||
047810e60c | |||
6027c40630 | |||
5541be46fd | |||
efbdb5a9ce | |||
0749490292 | |||
092010dd75 | |||
42d67db99d | |||
c51b6965e8 | |||
ecac04b548 | |||
e63bc3e177 | |||
44cccf7767 | |||
3e64cfe53c | |||
ebb78d138d | |||
648ba08399 | |||
c575b3cae3 | |||
b791b04b7e | |||
b8800ecc95 | |||
63a82943dd | |||
376c1cf38f | |||
159f2fa696 | |||
24d0e59f4a | |||
2b72217fbe | |||
d0d045b348 | |||
45bac8fec1 | |||
df1ecbe645 | |||
6ed0327812 | |||
f232efb2fa | |||
e62382159c | |||
bec5124d8d | |||
5445621fc7 | |||
1ae91430e2 | |||
b9223ecd89 | |||
af20f12608 | |||
119a520dcd | |||
86ffbccafd | |||
8b2892220d | |||
0212f19650 | |||
f4e8318396 | |||
e586285ed8 | |||
1710a336a7 | |||
c4db09d00e | |||
4a06fcda92 | |||
4790b8e57a | |||
309fadded7 | |||
7dbca93691 | |||
d0409edeb6 | |||
043e5cfb65 | |||
d80062b388 | |||
b8f564342f | |||
60b5078f9d | |||
3c9697ba42 | |||
e5cf88f11d | |||
448b2b3c34 | |||
5471ac7343 | |||
51f4f503eb | |||
fe8cda32a8 | |||
fe08375b4b | |||
219802bdc2 | |||
a229a89098 | |||
69004e76c6 | |||
37e823c9ea | |||
434f5a9b57 | |||
4e650d0dba | |||
edf076169d | |||
276c725e3c | |||
35f0273b2b | |||
1ec7c7b3ec | |||
4bb263d901 | |||
8d876debf4 | |||
0737cf3a77 | |||
1a9044943c | |||
08bececb27 | |||
d58278e110 | |||
21b4856678 | |||
76bee2e51f | |||
bac5295984 | |||
a0bf8f6347 | |||
573bd29bdc | |||
b5ea282038 | |||
d602914a68 | |||
6cd75a84b7 | |||
a915b0541c | |||
d57f44cf9e | |||
087da0db97 | |||
74c31bd668 | |||
e5f5f59785 | |||
7051b2168a | |||
87fcd525db | |||
904ff6ad95 | |||
6863806a32 | |||
f10af61bb6 | |||
437bd6e2ba | |||
6aad946ed5 | |||
b98d8d7e18 | |||
a7e3af06a6 | |||
0ae7c18783 | |||
9a376cea5c | |||
3f949e5b01 | |||
287b7aa291 | |||
36b2227544 | |||
129c0ef41b | |||
5006bfcae7 | |||
0df361f907 | |||
d49abeb36d | |||
061ac2e79d | |||
fefe5e61bd | |||
5a473621b1 | |||
c966a2233e | |||
1b7b1587f8 | |||
8d3157ce83 | |||
ed312fc25f | |||
d3307e6449 | |||
70cf3a5c94 | |||
6f5020d1d2 | |||
3f9e333d7f | |||
2b417486cb | |||
06814fb033 | |||
0103d138dd | |||
ab71beaa4f | |||
df2b12eedc | |||
be28ebb784 | |||
ae3e36b6b1 | |||
30dae69a02 | |||
5cb6ceb2fa | |||
979f44640d | |||
f43ececde3 | |||
512419f1ef | |||
fd1658e686 | |||
9e87f36ce2 | |||
b700d057ae | |||
2c489fde01 | |||
08329cf510 | |||
6c1277b593 | |||
0124725b19 | |||
3ba4d6ee50 | |||
d57a8dae3d | |||
e5731d76de | |||
24bcadc8dd | |||
ebeaf5b400 | |||
a41ecaebe5 | |||
ccd142129e | |||
54579e6f91 | |||
21cdeb6893 | |||
d616c0fcc6 | |||
469091ec3e | |||
e9372cb2cc | |||
419654757a | |||
632e333602 | |||
3a5d7068ad | |||
f994c69ecc | |||
9fb2631e87 | |||
8ddf4f2ffb | |||
eb6e9dbb76 | |||
e5ac9e9a14 | |||
c3889442a1 | |||
eaebe66de1 | |||
a543d784f4 | |||
52686d5315 | |||
b86047145b | |||
f2d4bc629c | |||
f68669c4d6 | |||
cc49ce8d11 | |||
60984488b2 | |||
45bdcfc191 | |||
6ed6762b8e | |||
1584b5d709 | |||
cc70e6f7c6 | |||
49781eb932 | |||
ecf1e6e468 | |||
c3b530dee7 | |||
a8622d2f60 | |||
b95a2ad6b1 | |||
1bb4b643c0 | |||
3b5ed5ef26 | |||
1f6f065172 | |||
7534b11b9b | |||
a4c94f0c29 | |||
f8a58abb98 | |||
2a1925982d | |||
d7e9e8eda1 | |||
a5a2db29a7 | |||
4ab06c344c | |||
62e757a098 | |||
950706b5d8 | |||
0dc32f0bef | |||
d3d68331b4 | |||
73439a376f | |||
30906411e6 | |||
877356e696 | |||
0f4dcd7d99 | |||
a8fa42e46f | |||
3ac1fe7729 | |||
79293f14e8 | |||
2aa7f0509b | |||
2600ece2dd | |||
92033aafe4 | |||
72434b5fef | |||
d8006e1a42 | |||
de3d513395 | |||
adf061fcd7 | |||
2333465b59 | |||
a8e14e0f1d | |||
3c0a403352 | |||
07ea858c72 | |||
916497be69 | |||
3a2575d7bf | |||
8ac84f79dd | |||
657f836664 | |||
108abba08c | |||
c303e1b4a7 | |||
4502a129bf | |||
5ebc123788 | |||
94fac8c1af | |||
694cecdb1c | |||
eb23d752bf | |||
599e51e7af | |||
16161bafb7 | |||
c371ff885f | |||
2a56392af0 | |||
0a15330379 | |||
57f7a93acf | |||
f603de439c | |||
f8e9028810 | |||
ee20223507 | |||
d6faeb3e4c | |||
c248c10fb9 | |||
fd2fd109e4 | |||
1e6db5d1fa | |||
2436bc6ea4 | |||
ac6ede67d9 | |||
19296874a7 | |||
122c9012df | |||
7d8a5d9ab3 | |||
e5465adc39 | |||
9d304e56e1 | |||
bcfb37b686 | |||
dcce4fb564 | |||
9103aa77ed | |||
cf07408d66 | |||
e423174254 | |||
78b9c67172 | |||
8acebd5c5d | |||
31ea08c652 | |||
cd3c500054 | |||
4f700d290c | |||
c91d649b0b | |||
bdc5843107 | |||
2364bd89cf | |||
511d3b7573 | |||
c911335fea | |||
da5619ef41 | |||
19ab40a15d | |||
6a8267a5ed | |||
c8d9bfdbeb | |||
f51ed7565a | |||
c744741cfe | |||
d783b8b791 | |||
05fd1c622e | |||
8f2037d359 | |||
85d3b901ed | |||
4aaf5ed01c | |||
1c0f751cba | |||
8bd18ed532 | |||
f6cbbfb750 | |||
38581bc262 | |||
27436dc902 | |||
11ad39805d | |||
3814359266 | |||
67536dbcd4 | |||
812e956e6b | |||
78fce20fe5 | |||
d097dddf7a | |||
d45dfe8898 | |||
73ffe2bac9 | |||
a87a966d60 | |||
a332e92890 | |||
7e67927b6c | |||
5f0fd69272 | |||
aeeb5f5548 | |||
3bce044221 | |||
5907a3524e | |||
a2f7ef237e | |||
94910663f6 | |||
a07cfd7c56 | |||
26ff001a20 | |||
e222a3c431 | |||
8c3d4c379b | |||
d30585435c | |||
ea0b9dfba2 | |||
b6fe511b4a | |||
a47fee1d82 | |||
c679e322de | |||
efbe042953 | |||
db232355d3 | |||
b080140fd8 | |||
c4bf247638 | |||
7247a6dd22 | |||
5244c813d4 | |||
0490680092 | |||
334a660478 | |||
d8285eee31 | |||
5411ed4689 | |||
8b4fd03d3c | |||
0f4214bb33 | |||
8014076013 | |||
d7d1f8750e | |||
1008b11c7c | |||
f120d8d81f | |||
0e0b941764 | |||
b703843e1c | |||
a2d6417156 | |||
ffaf26ccea | |||
4dcdb39e67 | |||
f825c54a3b | |||
265aa16b3d | |||
74f54c50a6 | |||
305d7f372e | |||
669388b9c8 | |||
95b673cd02 | |||
dc28d64da3 | |||
1b5ab7e4ff | |||
9f17f9555f | |||
d01373319d | |||
c05d3b0627 | |||
6fc8f5378b | |||
e375069fb8 | |||
d24a130fb8 | |||
264e017a6e | |||
03f15899a6 | |||
7416019040 | |||
5d11ea12e8 | |||
9d716aa0a0 | |||
d78253b1a9 | |||
cb9625de56 | |||
a38812bced | |||
f95b7a4129 | |||
fb12bb6e5b | |||
83659c5c4b | |||
c780899feb | |||
df27fb1a03 | |||
af102859c6 | |||
fa00ff136b | |||
8805fb0b78 | |||
804adb989e | |||
721e3e2c72 | |||
aeb54dd2c5 | |||
36aa358613 | |||
62d03494e6 | |||
645c347667 | |||
0287c5eb0e | |||
eace4c4f28 | |||
c81bbac2c5 | |||
88e9ebc916 | |||
06b7b25ef7 | |||
ee9334e753 | |||
dc30937c5e | |||
4a6d126f8e | |||
968303ea38 | |||
5148aca7ef | |||
3b4b9ae7c5 | |||
dc59884e66 | |||
bb133d1061 | |||
ad9dedb009 | |||
a44e84b8cb | |||
37532f10ce | |||
888bd97c97 | |||
73feabe55c | |||
8fc72e3164 | |||
7b392ac739 | |||
a94389bdcc | |||
3fa6e211fd | |||
acd8c0e26a | |||
7e989229ce | |||
3d4319377e | |||
e1024cadba | |||
140aca08da | |||
39de895f4c | |||
0011cdb33a | |||
a85bbd0400 | |||
0be3ea17ca | |||
21cef5b45a | |||
07c3a0f086 | |||
4f3e35acf8 | |||
b81eee425e | |||
1a8f52cc58 | |||
4fb7234df8 | |||
ba4900c257 | |||
9f939b16bc | |||
173f7a319c | |||
284dff3040 | |||
b4529f52fe | |||
6eac191db3 | |||
ed53eeef71 | |||
b10aced1e1 | |||
6fcd66ff71 | |||
60077df128 | |||
dacb84ee59 | |||
40146b69d8 | |||
1a3cd7febd | |||
fad28554bb | |||
d921738728 | |||
f012b6979c | |||
3bb863dd07 | |||
11ab97db50 | |||
59bc6540c6 | |||
fd6e5f50de | |||
bc0a4186b3 | |||
730f8b5121 | |||
86911f133f | |||
de9ac31dbe | |||
73b9e609dd | |||
ae94d3a9a7 | |||
d077b8fdd8 | |||
122e219397 | |||
49073861bc | |||
7ba629e826 | |||
7a872b76f8 | |||
e5fa3f2072 | |||
9d1160208f | |||
232952b63e | |||
79aee6b145 | |||
a88968f192 | |||
8316e39ff7 | |||
61802b7ec0 | |||
87ea82b16d | |||
2596d698d4 | |||
f7b046844e | |||
b0a802bffc | |||
b1e3288b94 | |||
02bb4d9f76 | |||
86ac349c5d | |||
686525eeff | |||
39d351e8a1 | |||
c152fd117d | |||
6958253c96 | |||
16074c2026 | |||
fd00dbf893 | |||
513b845de1 | |||
a96472553b | |||
55ef4aa6df | |||
b0a6e5fa08 | |||
ab63d1b819 | |||
f3a1e927ff | |||
6f29475d25 | |||
e988f55ba8 | |||
bb259be422 | |||
ac45bb0958 | |||
e3580c6170 | |||
a801d8ffa8 | |||
53d6029e84 | |||
239e2fdf49 | |||
ae45a87b8a | |||
9cabd42c53 | |||
d45374fe4a | |||
e350de1a3e | |||
8eb64ff444 | |||
e8b786e210 | |||
37dfd07ea9 | |||
0f872ec949 | |||
3b1ab8e595 | |||
e35da6fc63 | |||
da4363262c | |||
ebc787030f | |||
5b2cc939a5 | |||
f45faf4509 | |||
7433dd17f4 | |||
055d091447 | |||
1aa86ef16c | |||
dd5e738cab | |||
7e5a1afb90 | |||
175817190c | |||
31141c6ef1 | |||
e581c3a488 | |||
4ce4e816c1 | |||
f50a2a61fc | |||
ee6e4f1e32 | |||
40454d871f | |||
e503ae6d30 | |||
5233956a09 | |||
e7118e9182 | |||
e79da15d16 | |||
1bcaafd14e | |||
6a10c8a908 | |||
7f61158564 | |||
2f17e6d47a | |||
466d58b26b | |||
03f873ecf4 | |||
56cca145b4 | |||
3ecd55787a | |||
45e46cf6e9 | |||
c19d6d8244 | |||
c5250c5a45 | |||
e70c1c9685 | |||
b5d6f28178 | |||
14a54e691d | |||
d6eb7b8f84 | |||
025e0c4ff1 | |||
d76455787a | |||
252b732bd8 | |||
93ca89060c | |||
8e043fdd58 | |||
d87b8bcff2 | |||
4be1c00592 | |||
9b1303d10e | |||
36f2596dfb | |||
abf59c480f | |||
c521a23a16 | |||
b646968c16 | |||
a1afc7d736 | |||
799d084471 | |||
511ed7e78d | |||
0d1d10a103 | |||
de667a31ad | |||
ef2b1d393d | |||
0402d54fda | |||
d80dfc35fd | |||
9d47443573 | |||
806b42874c | |||
3c71ac8411 | |||
c2db5eb712 | |||
040771494a | |||
57c57b7620 | |||
a41ec520a2 | |||
9057768561 | |||
db3dc9a8af | |||
31a968ef87 | |||
9778d796a9 | |||
7a44938d6d | |||
689038a808 | |||
88ca15d995 | |||
249b335ccb | |||
8c33c50457 | |||
4f1cbbabe6 | |||
4f4e6bdf13 | |||
ebbece048e | |||
9987aa9d0b | |||
14cc093e51 | |||
18576ff7f2 | |||
bee9243407 | |||
8223b336ed | |||
1fd0da6778 | |||
6be344fc8d | |||
d46ee3894e | |||
b282f363ce | |||
4b494642f5 | |||
08c508862f | |||
3d63498b25 | |||
4ef6b01a92 | |||
7cf2c9c479 | |||
a11f3e24f8 | |||
adff6180ea | |||
99dd81531e | |||
4f18adf1da | |||
7e3f8a2764 | |||
3a94d7a7b7 | |||
9f8ae4b0fa | |||
d53ee0079e | |||
f844eb8caa | |||
fb645058ac | |||
261790e329 | |||
645c8edde7 | |||
c7b52155ac | |||
46a2c8998e | |||
fbba22cb07 | |||
f03c76c53b | |||
c7f5cb8773 | |||
206f8e4c50 | |||
03df5e4663 | |||
72906d205b | |||
c6f7471ebb | |||
a3550d10cb | |||
f22d25b101 | |||
b7b9afa1a5 | |||
835f05866c | |||
1aa2e55f22 | |||
3c777a92c0 | |||
7d893d27ec | |||
d0fcf951cc | |||
1e9959e3d1 | |||
ce821b6abe | |||
1de224ea77 | |||
103f4c8a9f | |||
124881d3a8 | |||
0b5d2a5fe6 | |||
332082c9fc | |||
0eaa9fe774 | |||
192e2e869f | |||
0fd9936db5 | |||
1a9d0fc00c | |||
a8dfca3c43 | |||
42e2bc35a5 | |||
7e2e5a56db | |||
01279dd023 | |||
d6ce07a8a0 | |||
6eb617086a | |||
8137bf8f1b | |||
5f1dcaabba | |||
37bdb32f43 | |||
ca15a6497c | |||
095d2d6392 | |||
b2993c9395 | |||
d7b0f658de | |||
391c71729b | |||
bee5dd0c0b | |||
25ab46e69a | |||
123412e073 | |||
39818887fa | |||
0700609568 | |||
198b24132e | |||
f6e45d089b | |||
23eab57208 | |||
a94521f197 | |||
38f58d86c9 | |||
76d1c51157 | |||
7aaeeded89 | |||
9b93016f93 | |||
aaf624bb42 | |||
8536d91288 | |||
3f62bee199 | |||
f9f39818a1 | |||
a73e6dc4db | |||
1df7abf987 | |||
0e1bb58c24 | |||
fcd2d2eaa2 | |||
455790d3c6 | |||
cdbcdba25d | |||
9dcb06678b | |||
a4fe0a7fe4 | |||
ece9faa60c | |||
d4bea2994c | |||
0ec3bf9ea8 | |||
0c5760b22b | |||
e144722d59 | |||
bf6e7aa10c | |||
ae53c44428 | |||
05d5b02347 | |||
337237a0f8 | |||
ccc4b13c35 | |||
a6a9c7c217 | |||
bc0f29f028 | |||
e2c9d73728 | |||
442c07f031 | |||
8fd9fa6f11 | |||
516d7e8e09 | |||
acf9d34b10 | |||
3ffead0a14 | |||
b6bdc09efc | |||
49b21cde52 | |||
deed24aa01 | |||
9cfb98248d | |||
7bc4beefce | |||
ce9ff68c26 | |||
8249e7ef01 | |||
14e65df483 | |||
f6fef4278b | |||
ef50df8386 | |||
b6df7604ed | |||
a03d869d0c | |||
1063349fbe | |||
b88c212b57 | |||
38a522a8d6 | |||
046936f8f6 | |||
309cbc08f5 | |||
08b4c7eb5e | |||
58e632e0b8 | |||
30d02edebc | |||
e30bfe64ae | |||
764a3eafb7 | |||
eff07665de | |||
571aebe78d | |||
91a2ae5fe8 | |||
f12c21ef18 | |||
2a96b288bf | |||
6f3a5aeab2 | |||
b001bd3efc | |||
b54794df35 | |||
51c8f7c092 | |||
cfb1a87a5b | |||
10483431c6 | |||
3a9450da9d | |||
374e23ba1e | |||
66f703f5e1 | |||
4b05b53d72 | |||
cfbc7fcd0d | |||
ffed2aea50 | |||
e674bf5b94 | |||
133af74ae0 | |||
f648064304 | |||
c7180f793a | |||
4fcdaad297 | |||
f4b99ca037 | |||
588bf774f9 | |||
e18c661dbd | |||
7d65ffea6a | |||
e460b5324a | |||
6fe166e60c | |||
6ceb3816fb | |||
19b63263e6 | |||
20d46d89d2 | |||
7aee6c7cf0 | |||
443da20ff9 | |||
84a47b15b6 | |||
40259ee57e | |||
619368a2fd | |||
3288966b95 | |||
d12d50b906 | |||
c7f0221062 | |||
7819867091 | |||
dd4c3d7a36 | |||
e66905402e | |||
1bdb4522c3 | |||
b5845479c2 | |||
f2f31c4f4e | |||
ded829500c | |||
f762f5451b | |||
709f21998e | |||
47f091be83 | |||
da8be916bf | |||
ad67acb9e7 | |||
5a7b5a82d7 | |||
2c32db61ec | |||
141b80d15c | |||
bf1d4badbe | |||
be48049e22 | |||
3a629284f3 | |||
28c92e727f | |||
9a65c531f1 | |||
52a086df73 | |||
b728e21a15 | |||
da32c9c2ce | |||
846390600e | |||
18d7a6b4cb | |||
31c8e91502 | |||
f0adf6b5db | |||
b24ae9c698 | |||
f3c108e362 | |||
d2a8d92864 | |||
10816c4bd9 | |||
aca0d4ba21 | |||
1ad56fd27e | |||
773a155627 | |||
61945b3507 | |||
4aa21cb0cd | |||
d233ab96eb | |||
df581e0110 | |||
8a114b9384 | |||
ab6506f4f2 | |||
87242d293a | |||
11d46ec295 | |||
1b3702c4c8 | |||
9b68b4a915 | |||
18889d7391 | |||
a38ad1d7e6 | |||
edcb9158f5 | |||
71b1c252f3 | |||
b30f44d2c6 | |||
85abf0fda6 | |||
5e21ceaad3 | |||
3f5c1a5a5c | |||
0195833fc3 | |||
64835e16de | |||
4e11a33855 | |||
bad024861a | |||
fe5d6a9014 | |||
f2898d7e0b | |||
f67f0c8889 | |||
0ccb17d8e1 | |||
bb6d417937 | |||
4e2ebe2540 | |||
c5310b0f00 | |||
46ef973f70 | |||
c12d2dc7a6 | |||
e28c6ffd52 | |||
7ba6860ea0 | |||
33c23ee42b | |||
b2f8c8bced | |||
d5277d3d6a | |||
e3c90f5ede | |||
eb5bda63db | |||
a10a216f0e | |||
3cf9fd0b87 | |||
ea1fa1637f | |||
96abe2a0f5 | |||
9623f33b59 | |||
b065fc7e59 | |||
617ed5601c | |||
7e21ce4181 | |||
eeaed091ab | |||
ee52d2b777 | |||
384e9fbaec | |||
606aded35f | |||
a3aa8888e9 | |||
aaeb43e9c3 | |||
a9b1d02a7e | |||
76b49270eb | |||
9b57715f92 | |||
85a96cf87b | |||
78b4be8fbd | |||
7bc10b57ce | |||
de26a052e8 | |||
28ff769757 | |||
6a58ea337e | |||
2af279c161 | |||
c26997ff83 | |||
a354464f6e | |||
268a9f3a7a | |||
4ddeaf6c99 | |||
b6f9a818af | |||
f4670aa471 | |||
72a2914c24 | |||
1d5bc8a9c1 | |||
892c412fd9 | |||
b6f7ead955 | |||
f033ba16eb | |||
f3ae2c424b | |||
36035ee84d | |||
50679b400a | |||
a68fb5f0a7 | |||
5792367b8b | |||
3699b79f1a | |||
e473abda12 | |||
f67f586006 | |||
61e1276f02 | |||
111fd35fc3 | |||
cc4148fb8a | |||
f1e624985f | |||
c8d7d3c854 | |||
4880503609 | |||
f905ce1611 | |||
ecfc65ecdd | |||
7da1d705a4 | |||
299cbea97e | |||
b633d61920 | |||
bfb8244e59 | |||
33c2df9fa3 | |||
3d84d6bed1 | |||
cf6a931097 | |||
53c3865072 | |||
d09a3509af | |||
8c0abc16c4 | |||
399969677f | |||
762756310a | |||
ec964be7c3 | |||
0603da76b2 | |||
a437c4228e | |||
d5aab95186 | |||
3acb329730 | |||
73ce4e340f | |||
0d4b6f4605 | |||
deeb35bbb6 | |||
d4c658a28c | |||
1fcebe033b | |||
8fe51863f4 | |||
c4eda4e75d | |||
9490015728 | |||
a641df167f | |||
21d100fb62 | |||
26b06c553a | |||
d51bfcf7db | |||
788c2436fc | |||
c9e6d08dcd | |||
6b2e9f7165 | |||
8618468534 | |||
94d6c0f523 | |||
9aca8e9e0b | |||
72b7734535 | |||
28f33f8ff7 | |||
4cf26679c6 | |||
1cd4df8b8f | |||
adeb333954 | |||
e6bd080c6e | |||
c9f883eaa6 | |||
014309bad6 | |||
c61698fad9 | |||
8c21d58529 | |||
722b7c3fb6 | |||
b852da0321 | |||
9c5affeff6 | |||
b6c2f57acf | |||
2e4e033c36 | |||
285a7541ca | |||
dbf58027d8 | |||
2f9019b6ba | |||
1743ffca74 | |||
ea7527c143 | |||
c27b289866 | |||
4cbd95fd78 | |||
5cfb2a02e3 | |||
82559e848a | |||
4600c79ed4 | |||
e733e614d2 | |||
d4e28c96d3 | |||
2f31cd6934 | |||
4fdd4a39f5 | |||
23f2e98194 | |||
8de0427f61 | |||
62abc6637f | |||
2949e894d6 | |||
40407ce7fb | |||
388518ddf3 | |||
731598465e | |||
3027df2fdd | |||
12ece4852d | |||
a5f1a13b22 | |||
1686178650 | |||
e317c77ed9 | |||
7b2302c8fd | |||
123d582327 | |||
86d32efc64 | |||
d4bdf8b205 | |||
708e7a33e3 | |||
7f3e5deb27 | |||
077f404452 | |||
3a17bcad60 | |||
83ee3e1949 | |||
24eb032862 | |||
48f821297d | |||
57acf3b6a4 | |||
a04a41b4b2 | |||
014eb37bac | |||
63d1a80db8 | |||
4dbbaecc6b | |||
214f565109 | |||
cd3d8bebbc | |||
1da78e6c0b | |||
e2233ed1cd | |||
ead6dc022c | |||
7c4b8d02f2 | |||
21fe50e3b5 | |||
2843dd7b6a | |||
0bcbce0ad1 | |||
cc22e974fa | |||
47a4cf823d | |||
9012ec927c | |||
45aa9c96dc | |||
7fc04f8d43 | |||
4b766d5a2b | |||
4bb362760d | |||
600e7ee276 | |||
fe60755d53 | |||
504535c907 | |||
2fdd734458 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,2 +1,6 @@
|
|||||||
|
# Kubernetes secrets
|
||||||
*.secret.yaml
|
*.secret.yaml
|
||||||
charts/
|
main.key
|
||||||
|
|
||||||
|
# Helm Chart files
|
||||||
|
charts/
|
82
README.md
82
README.md
@@ -1,22 +1,86 @@
|
|||||||
# Kluster setup and IaaC using argoCD
|
# Kluster setup and IaaC using argoCD
|
||||||
|
|
||||||
|
|
||||||
|
### Description
|
||||||
|
#### Requirements:
|
||||||
|
- A running k3s instance
|
||||||
|
- `sealedsecrets` deployed
|
||||||
|
|
||||||
### Key to authorize against `git.kluster.moll.re` (ssh)
|
#### Installing argo and the app-of-apps
|
||||||
```
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE+4SlRIV9wOKYZbBrPuW18K6GGjnDEviCYQvGQuKOm0 remy@ArchSpectre
|
|
||||||
```
|
|
||||||
|
|
||||||
### Initial setup
|
|
||||||
On a running (and sealed-secrets installed) k3s instance run:
|
|
||||||
```
|
```
|
||||||
kubectl apply -k infrastructure/argocd
|
kubectl apply -k infrastructure/argocd
|
||||||
```
|
```
|
||||||
This will install argocd and CRDs in a dedicated namespace along with the app-of-apps configured under `kluster-deployments/`.
|
This will install argocd and its CRDs in a dedicated namespace. The app-of-apps is configured under `kluster-deployments/` and deployed as well. This will bootstrap all other apps, as described in `./kluster-deployments`.
|
||||||
|
|
||||||
The app-of-apps will bootstrap a fully featured cluster with the following components
|
The app-of-apps will bootstrap a fully featured cluster with the following components
|
||||||
- postgres instance with backups
|
- postgres instance with backups
|
||||||
- backup of all nfs PVCs using restic
|
- backup of all nfs PVCs using restic
|
||||||
- traefik (along with metallb as a publicly accessible reverse proxy)
|
- traefik (along with metallb as a publicly accessible reverse proxy)
|
||||||
- an nfs-provisioner creating PVCs on-demand
|
- an nfs-provisioner creating PVCs on-demand
|
||||||
- a range of selfhosted apps
|
- gitea
|
||||||
|
- a range of selfhosted apps:
|
||||||
|
- nextcloud
|
||||||
|
- jellyfin
|
||||||
|
- adguard-home
|
||||||
|
- homarr
|
||||||
|
- homeassistant
|
||||||
|
- immich
|
||||||
|
- ...
|
||||||
|
|
||||||
|
## Setup instructions
|
||||||
|
1. install sealedsecrets see [README](./infrastructure/sealedsecrets/README.md)
|
||||||
|
```bash
|
||||||
|
kubectl apply -k infrastructure/sealedsecrets
|
||||||
|
kubectl apply -f infrastructure/sealedsecrets/main.key
|
||||||
|
kubectl delete pod -n kube-system -l name=sealed-secrets-controller
|
||||||
|
```
|
||||||
|
1. install argocd and the app-of-apps bundled with it
|
||||||
|
```bash
|
||||||
|
kubectl apply -k infrastructure/argocd
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
> NOTE: The argocd kustomization already mentions some CRDs available only after the full bootstrapping (traefik). You might have to apply the last step twice
|
||||||
|
|
||||||
|
### Adding an application
|
||||||
|
todo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Status
|
||||||
|
[](https://argocd.kluster.moll.re/applications/authelia-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/backup-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/external-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/external-dns-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/gitea-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/metallb-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/monitoring-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/nfs-provisioner-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/pg-ha-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/renovate-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/sealedsecrets-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/traefik-application)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
[](https://argocd.kluster.moll.re/applications/adguard-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/audiobookshelf-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/code-server-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/files-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/finance-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/grafana-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/homeassistant-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/immich-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/kitchenowl-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/linkding-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/media-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/minecraft-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/ntfy-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/paperless-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/recipes-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/rss-application)
|
||||||
|
---
|
||||||
|
[](https://argocd.kluster.moll.re/applications/journal-application)
|
||||||
|
[](https://argocd.kluster.moll.re/applications/physics-application)
|
||||||
|
|
||||||
|
@@ -2,59 +2,53 @@ apiVersion: v1
|
|||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: adguard-home-config
|
name: adguard-home-config
|
||||||
namespace: adguard
|
|
||||||
data:
|
data:
|
||||||
AdGuardHome.yaml: |-
|
AdGuardHome.yaml: |-
|
||||||
bind_host: 0.0.0.0
|
http:
|
||||||
bind_port: 3000
|
pprof:
|
||||||
beta_bind_port: 0
|
port: 6060
|
||||||
|
enabled: false
|
||||||
|
address: 0.0.0.0:3000
|
||||||
|
session_ttl: 720h
|
||||||
users: []
|
users: []
|
||||||
auth_attempts: 5
|
auth_attempts: 5
|
||||||
block_auth_min: 15
|
block_auth_min: 15
|
||||||
http_proxy: ""
|
http_proxy: ""
|
||||||
language: ""
|
language: ""
|
||||||
debug_pprof: false
|
theme: auto
|
||||||
web_session_ttl: 720
|
|
||||||
dns:
|
dns:
|
||||||
bind_hosts:
|
bind_hosts:
|
||||||
- 0.0.0.0
|
- 0.0.0.0
|
||||||
port: 53
|
port: 53
|
||||||
statistics_interval: 1
|
|
||||||
querylog_enabled: true
|
|
||||||
querylog_file_enabled: true
|
|
||||||
querylog_interval: 2160h
|
|
||||||
querylog_size_memory: 1000
|
|
||||||
anonymize_client_ip: false
|
anonymize_client_ip: false
|
||||||
protection_enabled: true
|
|
||||||
blocking_mode: default
|
|
||||||
blocking_ipv4: ""
|
|
||||||
blocking_ipv6: ""
|
|
||||||
blocked_response_ttl: 10
|
|
||||||
parental_block_host: family-block.dns.adguard.com
|
|
||||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
|
||||||
ratelimit: 20
|
ratelimit: 20
|
||||||
|
ratelimit_subnet_len_ipv4: 24
|
||||||
|
ratelimit_subnet_len_ipv6: 56
|
||||||
ratelimit_whitelist: []
|
ratelimit_whitelist: []
|
||||||
refuse_any: true
|
refuse_any: true
|
||||||
upstream_dns:
|
upstream_dns:
|
||||||
- https://dns10.quad9.net/dns-query
|
- tls://1.1.1.1
|
||||||
|
- tls://dns.google
|
||||||
|
- tls://p0.freedns.controld.com
|
||||||
|
- tls://dns.quad9.net
|
||||||
upstream_dns_file: ""
|
upstream_dns_file: ""
|
||||||
bootstrap_dns:
|
bootstrap_dns:
|
||||||
- 9.9.9.10
|
- 9.9.9.10
|
||||||
- 149.112.112.10
|
- 149.112.112.10
|
||||||
- 2620:fe::10
|
- 2620:fe::10
|
||||||
- 2620:fe::fe:10
|
- 2620:fe::fe:10
|
||||||
all_servers: false
|
fallback_dns: []
|
||||||
fastest_addr: false
|
upstream_mode: load_balance
|
||||||
fastest_timeout: 1s
|
fastest_timeout: 1s
|
||||||
allowed_clients: []
|
allowed_clients: []
|
||||||
disallowed_clients: []
|
disallowed_clients: []
|
||||||
blocked_hosts:
|
blocked_hosts:
|
||||||
- version.bind
|
- version.bind
|
||||||
- id.server
|
- id.server
|
||||||
- hostname.bind
|
- hostname.bind
|
||||||
trusted_proxies:
|
trusted_proxies:
|
||||||
- 127.0.0.0/8
|
- 127.0.0.0/8
|
||||||
- ::1/128
|
- ::1/128
|
||||||
cache_size: 4194304
|
cache_size: 4194304
|
||||||
cache_ttl_min: 0
|
cache_ttl_min: 0
|
||||||
cache_ttl_max: 0
|
cache_ttl_max: 0
|
||||||
@@ -62,25 +56,26 @@ data:
|
|||||||
bogus_nxdomain: []
|
bogus_nxdomain: []
|
||||||
aaaa_disabled: false
|
aaaa_disabled: false
|
||||||
enable_dnssec: false
|
enable_dnssec: false
|
||||||
edns_client_subnet: false
|
edns_client_subnet:
|
||||||
|
custom_ip: ""
|
||||||
|
enabled: false
|
||||||
|
use_custom: false
|
||||||
max_goroutines: 300
|
max_goroutines: 300
|
||||||
|
handle_ddr: true
|
||||||
ipset: []
|
ipset: []
|
||||||
filtering_enabled: true
|
ipset_file: ""
|
||||||
filters_update_interval: 24
|
bootstrap_prefer_ipv6: false
|
||||||
parental_enabled: false
|
|
||||||
safesearch_enabled: false
|
|
||||||
safebrowsing_enabled: false
|
|
||||||
safebrowsing_cache_size: 1048576
|
|
||||||
safesearch_cache_size: 1048576
|
|
||||||
parental_cache_size: 1048576
|
|
||||||
cache_time: 30
|
|
||||||
rewrites: []
|
|
||||||
blocked_services: []
|
|
||||||
upstream_timeout: 10s
|
upstream_timeout: 10s
|
||||||
private_networks: []
|
private_networks: []
|
||||||
use_private_ptr_resolvers: true
|
use_private_ptr_resolvers: true
|
||||||
local_ptr_upstreams:
|
local_ptr_upstreams:
|
||||||
- 192.168.1.1
|
- 192.168.1.1
|
||||||
|
use_dns64: false
|
||||||
|
dns64_prefixes: []
|
||||||
|
serve_http3: false
|
||||||
|
use_http3_upstreams: false
|
||||||
|
serve_plain_dns: true
|
||||||
|
hostsfile_enabled: true
|
||||||
tls:
|
tls:
|
||||||
enabled: false
|
enabled: false
|
||||||
server_name: ""
|
server_name: ""
|
||||||
@@ -91,24 +86,40 @@ data:
|
|||||||
port_dnscrypt: 0
|
port_dnscrypt: 0
|
||||||
dnscrypt_config_file: ""
|
dnscrypt_config_file: ""
|
||||||
allow_unencrypted_doh: false
|
allow_unencrypted_doh: false
|
||||||
strict_sni_check: false
|
|
||||||
certificate_chain: ""
|
certificate_chain: ""
|
||||||
private_key: ""
|
private_key: ""
|
||||||
certificate_path: ""
|
certificate_path: ""
|
||||||
private_key_path: ""
|
private_key_path: ""
|
||||||
|
strict_sni_check: false
|
||||||
|
querylog:
|
||||||
|
dir_path: ""
|
||||||
|
ignored: []
|
||||||
|
interval: 2160h
|
||||||
|
size_memory: 1000
|
||||||
|
enabled: true
|
||||||
|
file_enabled: true
|
||||||
|
statistics:
|
||||||
|
dir_path: ""
|
||||||
|
ignored: []
|
||||||
|
interval: 24h
|
||||||
|
enabled: true
|
||||||
filters:
|
filters:
|
||||||
- enabled: true
|
- enabled: true
|
||||||
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
||||||
name: AdGuard DNS filter
|
name: AdGuard DNS filter
|
||||||
id: 1
|
id: 1
|
||||||
- enabled: true
|
- enabled: true
|
||||||
url: https://adaway.org/hosts.txt
|
url: https://adaway.org/hosts.txt
|
||||||
name: AdAway Default Blocklist
|
name: AdAway Default Blocklist
|
||||||
id: 2
|
id: 2
|
||||||
- enabled: true
|
- enabled: true
|
||||||
url: https://someonewhocares.org/hosts/zero/hosts
|
url: https://someonewhocares.org/hosts/zero/hosts
|
||||||
name: Dan Pollock's List
|
name: Dan Pollock's List
|
||||||
id: 1684963532
|
id: 1684963532
|
||||||
|
- enabled: true
|
||||||
|
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_3.txt
|
||||||
|
name: Peter Lowe's Blocklist
|
||||||
|
id: 1735824753
|
||||||
whitelist_filters: []
|
whitelist_filters: []
|
||||||
user_rules: []
|
user_rules: []
|
||||||
dhcp:
|
dhcp:
|
||||||
@@ -128,6 +139,61 @@ data:
|
|||||||
lease_duration: 86400
|
lease_duration: 86400
|
||||||
ra_slaac_only: false
|
ra_slaac_only: false
|
||||||
ra_allow_slaac: false
|
ra_allow_slaac: false
|
||||||
|
filtering:
|
||||||
|
blocking_ipv4: ""
|
||||||
|
blocking_ipv6: ""
|
||||||
|
blocked_services:
|
||||||
|
schedule:
|
||||||
|
time_zone: Europe/Berlin
|
||||||
|
sun:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
mon:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
tue:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
wed:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
thu:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
fri:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
sat:
|
||||||
|
start: 18h
|
||||||
|
end: 23h59m
|
||||||
|
ids:
|
||||||
|
- reddit
|
||||||
|
protection_disabled_until: null
|
||||||
|
safe_search:
|
||||||
|
enabled: false
|
||||||
|
bing: true
|
||||||
|
duckduckgo: true
|
||||||
|
ecosia: true
|
||||||
|
google: true
|
||||||
|
pixabay: true
|
||||||
|
yandex: true
|
||||||
|
youtube: true
|
||||||
|
blocking_mode: default
|
||||||
|
parental_block_host: family-block.dns.adguard.com
|
||||||
|
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||||
|
rewrites: []
|
||||||
|
safe_fs_patterns:
|
||||||
|
- /opt/adguardhome/data/userfilters/*
|
||||||
|
safebrowsing_cache_size: 1048576
|
||||||
|
safesearch_cache_size: 1048576
|
||||||
|
parental_cache_size: 1048576
|
||||||
|
cache_time: 30
|
||||||
|
filters_update_interval: 168
|
||||||
|
blocked_response_ttl: 10
|
||||||
|
filtering_enabled: true
|
||||||
|
parental_enabled: true
|
||||||
|
safebrowsing_enabled: false
|
||||||
|
protection_enabled: true
|
||||||
clients:
|
clients:
|
||||||
runtime_sources:
|
runtime_sources:
|
||||||
whois: true
|
whois: true
|
||||||
@@ -136,15 +202,17 @@ data:
|
|||||||
dhcp: true
|
dhcp: true
|
||||||
hosts: true
|
hosts: true
|
||||||
persistent: []
|
persistent: []
|
||||||
log_compress: false
|
log:
|
||||||
log_localtime: false
|
enabled: true
|
||||||
log_max_backups: 0
|
file: ""
|
||||||
log_max_size: 100
|
max_backups: 0
|
||||||
log_max_age: 3
|
max_size: 100
|
||||||
log_file: ""
|
max_age: 3
|
||||||
verbose: false
|
compress: false
|
||||||
|
local_time: false
|
||||||
|
verbose: false
|
||||||
os:
|
os:
|
||||||
group: ""
|
group: ""
|
||||||
user: ""
|
user: ""
|
||||||
rlimit_nofile: 0
|
rlimit_nofile: 0
|
||||||
schema_version: 14
|
schema_version: 29
|
@@ -2,7 +2,6 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: adguard-home
|
name: adguard-home
|
||||||
namespace: adguard
|
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
revisionHistoryLimit: 3
|
revisionHistoryLimit: 3
|
||||||
@@ -19,16 +18,23 @@ spec:
|
|||||||
app.kubernetes.io/name: adguard-home
|
app.kubernetes.io/name: adguard-home
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- command:
|
||||||
- --config
|
- "sh"
|
||||||
- /opt/adguardhome/conf/AdGuardHome.yaml
|
- "-c"
|
||||||
- --work-dir
|
- >
|
||||||
- /opt/adguardhome/work
|
cp /config/AdGuardHome.yaml /opt/adguardhome/conf/AdGuardHome.yaml &&
|
||||||
- --no-check-update
|
sleep 5 &&
|
||||||
|
/opt/adguardhome/AdGuardHome --no-check-update --config /opt/adguardhome/conf/AdGuardHome.yaml
|
||||||
|
# - args:
|
||||||
|
# - --config
|
||||||
|
# - /opt/adguardhome/conf/AdGuardHome.yaml
|
||||||
|
# - --work-dir
|
||||||
|
# - /opt/adguardhome/work
|
||||||
|
# - --no-check-update
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: Europe/Berlin
|
value: Europe/Berlin
|
||||||
image: adguard/adguardhome:v0.107.41
|
image: adguard/adguardhome
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
failureThreshold: 3
|
failureThreshold: 3
|
||||||
@@ -66,8 +72,9 @@ spec:
|
|||||||
terminationMessagePath: /dev/termination-log
|
terminationMessagePath: /dev/termination-log
|
||||||
terminationMessagePolicy: File
|
terminationMessagePolicy: File
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /opt/adguardhome/conf/
|
- mountPath: /config/AdGuardHome.yaml
|
||||||
name: adguard-home-config
|
name: adguard-home-config
|
||||||
|
subPath: AdGuardHome.yaml
|
||||||
dnsPolicy: ClusterFirst
|
dnsPolicy: ClusterFirst
|
||||||
|
|
||||||
restartPolicy: Always
|
restartPolicy: Always
|
||||||
|
@@ -1,15 +1,14 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRouteTCP
|
kind: IngressRouteTCP
|
||||||
metadata:
|
metadata:
|
||||||
name: adguard-tls-ingress
|
name: adguard-tls-ingress
|
||||||
namespace: adguard
|
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- dnsovertls
|
- dnsovertls
|
||||||
routes:
|
routes:
|
||||||
- match: HostSNI(`adguard.kluster.moll.re`)
|
- match: HostSNI(`adguard.kluster.moll.re`)
|
||||||
services:
|
services:
|
||||||
- name: adguard-adguard-home-dns-tcp
|
- name: adguard-home-dns-tcp
|
||||||
port: 53
|
port: 53
|
||||||
tls:
|
tls:
|
||||||
certResolver: default-tls
|
certResolver: default-tls
|
||||||
|
16
apps/adguard/kustomization.yaml
Normal file
16
apps/adguard/kustomization.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- configmap.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- service.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: adguard/adguardhome
|
||||||
|
newName: adguard/adguardhome
|
||||||
|
newTag: v0.107.65
|
||||||
|
|
||||||
|
namespace: adguard
|
||||||
|
|
@@ -1,5 +1,4 @@
|
|||||||
# namespace.yaml
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Namespace
|
kind: Namespace
|
||||||
metadata:
|
metadata:
|
||||||
name: nfs-provisioner
|
name: placeholder
|
@@ -1,8 +1,7 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: adguard-home
|
name: adguard-home-web
|
||||||
namespace: adguard
|
|
||||||
spec:
|
spec:
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
@@ -22,10 +21,11 @@ metadata:
|
|||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
metallb.universe.tf/allow-shared-ip: adguard-svc
|
||||||
|
|
||||||
name: adguard-home-dns-tcp
|
name: adguard-home-dns-tcp
|
||||||
namespace: adguard
|
|
||||||
spec:
|
spec:
|
||||||
allocateLoadBalancerNodePorts: true
|
allocateLoadBalancerNodePorts: true
|
||||||
loadBalancerIP: 192.168.3.2
|
loadBalancerIP: 192.168.3.2
|
||||||
|
externalTrafficPolicy: Local
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
- name: dns-tcp
|
- name: dns-tcp
|
||||||
nodePort: 31306
|
nodePort: 31306
|
||||||
@@ -45,10 +45,10 @@ metadata:
|
|||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
metallb.universe.tf/allow-shared-ip: adguard-svc
|
||||||
|
|
||||||
name: adguard-home-dns-udp
|
name: adguard-home-dns-udp
|
||||||
namespace: adguard
|
|
||||||
spec:
|
spec:
|
||||||
allocateLoadBalancerNodePorts: true
|
allocateLoadBalancerNodePorts: true
|
||||||
loadBalancerIP: 192.168.3.2
|
loadBalancerIP: 192.168.3.2
|
||||||
|
externalTrafficPolicy: Local
|
||||||
ports:
|
ports:
|
||||||
- name: dns-udp
|
- name: dns-udp
|
||||||
nodePort: 30547
|
nodePort: 30547
|
||||||
@@ -58,4 +58,4 @@ spec:
|
|||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/instance: adguard
|
app.kubernetes.io/instance: adguard
|
||||||
app.kubernetes.io/name: adguard-home
|
app.kubernetes.io/name: adguard-home
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
|
@@ -1,365 +0,0 @@
|
|||||||
#
|
|
||||||
# IMPORTANT NOTE
|
|
||||||
#
|
|
||||||
# This chart inherits from our common library chart. You can check the default values/options here:
|
|
||||||
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
|
|
||||||
#
|
|
||||||
|
|
||||||
controller:
|
|
||||||
# -- Number of pods to load balance between
|
|
||||||
replicas: 1
|
|
||||||
|
|
||||||
initContainers:
|
|
||||||
# -- Configures an initContainer that copies the configmap to the AdGuardHome conf directory
|
|
||||||
# It does NOT overwrite when the file already exists.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
copy-configmap:
|
|
||||||
image: busybox
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
command:
|
|
||||||
- "sh"
|
|
||||||
- "-c"
|
|
||||||
- |
|
|
||||||
if [ ! -f /opt/adguardhome/conf/AdGuardHome.yaml ]; then
|
|
||||||
mkdir -p /opt/adguardhome/conf
|
|
||||||
cp /tmp/AdGuardHome.yaml /opt/adguardhome/conf/AdGuardHome.yaml
|
|
||||||
fi
|
|
||||||
volumeMounts:
|
|
||||||
- name: adguard-home-config
|
|
||||||
mountPath: /tmp/AdGuardHome.yaml
|
|
||||||
subPath: AdGuardHome.yaml
|
|
||||||
- name: config
|
|
||||||
mountPath: /opt/adguardhome/conf
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 0
|
|
||||||
|
|
||||||
image:
|
|
||||||
# -- image repository
|
|
||||||
repository: adguard/adguardhome
|
|
||||||
# @default -- chart.appVersion
|
|
||||||
tag:
|
|
||||||
# -- image pull policy
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
# -- environment variables.
|
|
||||||
# @default -- See below
|
|
||||||
env:
|
|
||||||
# -- Set the container timezone
|
|
||||||
TZ: Europe/Berlin
|
|
||||||
|
|
||||||
# -- arguments passed to the adguard-home command line.
|
|
||||||
args:
|
|
||||||
- "--config"
|
|
||||||
- "/opt/adguardhome/conf/AdGuardHome.yaml"
|
|
||||||
- "--work-dir"
|
|
||||||
- "/opt/adguardhome/work"
|
|
||||||
- "--no-check-update"
|
|
||||||
|
|
||||||
# -- Configures service settings for the chart.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
service:
|
|
||||||
main:
|
|
||||||
primary: true
|
|
||||||
ports:
|
|
||||||
http:
|
|
||||||
port: 3000
|
|
||||||
dns-tcp:
|
|
||||||
enabled: true
|
|
||||||
type: LoadBalancer
|
|
||||||
loadBalancerIP: 192.168.3.2
|
|
||||||
annotations:
|
|
||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
|
||||||
|
|
||||||
ports:
|
|
||||||
dns-tcp:
|
|
||||||
enabled: true
|
|
||||||
port: 53
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 53
|
|
||||||
|
|
||||||
dns-udp:
|
|
||||||
enabled: true
|
|
||||||
type: LoadBalancer
|
|
||||||
loadBalancerIP: 192.168.3.2
|
|
||||||
annotations:
|
|
||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
|
||||||
|
|
||||||
ports:
|
|
||||||
dns-udp:
|
|
||||||
enabled: true
|
|
||||||
port: 53
|
|
||||||
protocol: UDP
|
|
||||||
targetPort: 53
|
|
||||||
|
|
||||||
dns-tls-udp:
|
|
||||||
enabled: true
|
|
||||||
type: LoadBalancer
|
|
||||||
loadBalancerIP: 192.168.3.5
|
|
||||||
annotations:
|
|
||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
|
||||||
|
|
||||||
ports:
|
|
||||||
dns-tls-udp:
|
|
||||||
enabled: true
|
|
||||||
port: 853
|
|
||||||
protocol: UDP
|
|
||||||
targetPort: 853
|
|
||||||
|
|
||||||
dns-tls-tcp:
|
|
||||||
enabled: true
|
|
||||||
type: LoadBalancer
|
|
||||||
loadBalancerIP: 192.168.3.5
|
|
||||||
annotations:
|
|
||||||
metallb.universe.tf/allow-shared-ip: adguard-svc
|
|
||||||
|
|
||||||
ports:
|
|
||||||
dns-tls-tcp:
|
|
||||||
enabled: true
|
|
||||||
port: 853
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 853
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# -- Configure persistence settings for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
mountPath: /opt/adguardhome/conf
|
|
||||||
data:
|
|
||||||
enabled: false
|
|
||||||
mountPath: /opt/adguardhome/work
|
|
||||||
|
|
||||||
# config -- AdGuard Home cojnfiguration. For a full list of options see https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
config: |
|
|
||||||
bind_host: 0.0.0.0
|
|
||||||
bind_port: 3000
|
|
||||||
beta_bind_port: 0
|
|
||||||
users: []
|
|
||||||
auth_attempts: 5
|
|
||||||
block_auth_min: 15
|
|
||||||
http_proxy: ""
|
|
||||||
language: ""
|
|
||||||
debug_pprof: false
|
|
||||||
web_session_ttl: 720
|
|
||||||
dns:
|
|
||||||
bind_hosts:
|
|
||||||
- 0.0.0.0
|
|
||||||
port: 53
|
|
||||||
statistics_interval: 1
|
|
||||||
querylog_enabled: true
|
|
||||||
querylog_file_enabled: true
|
|
||||||
querylog_interval: 2160h
|
|
||||||
querylog_size_memory: 1000
|
|
||||||
anonymize_client_ip: false
|
|
||||||
protection_enabled: true
|
|
||||||
blocking_mode: default
|
|
||||||
blocking_ipv4: ""
|
|
||||||
blocking_ipv6: ""
|
|
||||||
blocked_response_ttl: 10
|
|
||||||
parental_block_host: family-block.dns.adguard.com
|
|
||||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
|
||||||
ratelimit: 20
|
|
||||||
ratelimit_whitelist: []
|
|
||||||
refuse_any: true
|
|
||||||
upstream_dns:
|
|
||||||
- https://dns10.quad9.net/dns-query
|
|
||||||
upstream_dns_file: ""
|
|
||||||
bootstrap_dns:
|
|
||||||
- 9.9.9.10
|
|
||||||
- 149.112.112.10
|
|
||||||
- 2620:fe::10
|
|
||||||
- 2620:fe::fe:10
|
|
||||||
all_servers: false
|
|
||||||
fastest_addr: false
|
|
||||||
fastest_timeout: 1s
|
|
||||||
allowed_clients: []
|
|
||||||
disallowed_clients: []
|
|
||||||
blocked_hosts:
|
|
||||||
- version.bind
|
|
||||||
- id.server
|
|
||||||
- hostname.bind
|
|
||||||
trusted_proxies:
|
|
||||||
- 127.0.0.0/8
|
|
||||||
- ::1/128
|
|
||||||
cache_size: 4194304
|
|
||||||
cache_ttl_min: 0
|
|
||||||
cache_ttl_max: 0
|
|
||||||
cache_optimistic: false
|
|
||||||
bogus_nxdomain: []
|
|
||||||
aaaa_disabled: false
|
|
||||||
enable_dnssec: false
|
|
||||||
edns_client_subnet: false
|
|
||||||
max_goroutines: 300
|
|
||||||
ipset: []
|
|
||||||
filtering_enabled: true
|
|
||||||
filters_update_interval: 24
|
|
||||||
parental_enabled: false
|
|
||||||
safesearch_enabled: false
|
|
||||||
safebrowsing_enabled: false
|
|
||||||
safebrowsing_cache_size: 1048576
|
|
||||||
safesearch_cache_size: 1048576
|
|
||||||
parental_cache_size: 1048576
|
|
||||||
cache_time: 30
|
|
||||||
rewrites: []
|
|
||||||
blocked_services: []
|
|
||||||
upstream_timeout: 10s
|
|
||||||
private_networks: []
|
|
||||||
use_private_ptr_resolvers: true
|
|
||||||
local_ptr_upstreams:
|
|
||||||
- 192.168.1.1
|
|
||||||
tls:
|
|
||||||
enabled: true
|
|
||||||
server_name: "dns.moll.re"
|
|
||||||
force_https: false
|
|
||||||
port_https: 443
|
|
||||||
port_dns_over_tls: 853
|
|
||||||
port_dns_over_quic: 853
|
|
||||||
port_dnscrypt: 0
|
|
||||||
dnscrypt_config_file: ""
|
|
||||||
allow_unencrypted_doh: false
|
|
||||||
strict_sni_check: false
|
|
||||||
certificate_chain: |-
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFyzCCA7OgAwIBAgIUEvyI5bCa56vvyQgTbLyR7+c7vQMwDQYJKoZIhvcNAQEL
|
|
||||||
BQAwdTELMAkGA1UEBhMCREUxCzAJBgNVBAgMAkJXMREwDwYDVQQHDAhGcmVpYnVy
|
|
||||||
ZzENMAsGA1UECgwEUmVteTEKMAgGA1UECwwBTTEQMA4GA1UEAwwHbW9sbC5yZTEZ
|
|
||||||
MBcGCSqGSIb3DQEJARYKbWVAbW9sbC5yZTAeFw0yMzA3MTUxNzQ0MTVaFw0yNDA3
|
|
||||||
MTQxNzQ0MTVaMHUxCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzERMA8GA1UEBwwI
|
|
||||||
RnJlaWJ1cmcxDTALBgNVBAoMBFJlbXkxCjAIBgNVBAsMAU0xEDAOBgNVBAMMB21v
|
|
||||||
bGwucmUxGTAXBgkqhkiG9w0BCQEWCm1lQG1vbGwucmUwggIiMA0GCSqGSIb3DQEB
|
|
||||||
AQUAA4ICDwAwggIKAoICAQDpS0Xtii0VITKFr9XFLcWchI6//I7iMeKkYi7uEq60
|
|
||||||
1YZQ8/Zppg1M15BhD8ZEQ0JZ42ufi0p4B0LYMGHYF+2kKsbFxcEPQTUeXCLcjYVA
|
|
||||||
ueZ+GTh+FrUrSQvHSevUbVXytAwiqAN/eAvXBMdOKisPUM9Cmk/KHA+W+anw4Uxq
|
|
||||||
ZvHq5GG9Z0IksTHI2oEMp/8cZ8lRXzHmOUYQGveBX6PBPvcttP8GwCU6vsPVSphZ
|
|
||||||
7XF2LPqeMnBGgmOz51QTRpS7NBHMsSDR20VgSTjI+F8nJnQsGO5Iq9IpQzlDlAsL
|
|
||||||
jgPOT3W/pdeZD1mX/c9EpYEKf/0ubEBiWc+kJqkrdmsUX6cZ06qEUa08yCMSzkao
|
|
||||||
mHrMzw22kjICG9h+0sZvTetPvpYZsBqQRejDS/cu+buAaDNchGNhl1YPp8iAlKUT
|
|
||||||
YB4gbcNqceCGUmbQX06B/OwJiYIoN5ghh2wmqNrFXYltfALBVhWFtU2DTAS9k399
|
|
||||||
W2hd4u77uJngK0WLoKQuV/wi81dbk0kAI7eRUI1H/Y4hC1MCI5M6zewrJ7QgOYBi
|
|
||||||
qkYydYQGFu1ToDt6maDVBX05PcoBPwbUfrmZBjR5kzBawvH6reDuANkEXfJ0+2hA
|
|
||||||
JBAxXPKyQVc9Y87nDATvkl7qWOKjfJairKAd03lvJlesr6+7GwMMnE/6h91QF4Vq
|
|
||||||
OQIDAQABo1MwUTAdBgNVHQ4EFgQUunr29QozKy+AlTrq+PAoSjPFOQIwHwYDVR0j
|
|
||||||
BBgwFoAUunr29QozKy+AlTrq+PAoSjPFOQIwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
|
||||||
hkiG9w0BAQsFAAOCAgEAPeczDC1OScGZ6UVjFUF+BqI1Am9TwUNVD2cRnbXvQ2g7
|
|
||||||
nU8vYSfWx00bhRTpuDEG997HkCCvaUYIArbGtgplB+bCk6GMnQQfnRWIyFz/cy+Y
|
|
||||||
yuftUY0PufXzCe33J2Q0SQCNKdEvOsfiPCkyrgMSlomoIDPhs4wQ8SOE0Lnl4fNw
|
|
||||||
i1uVDd6pTxwwfpfsvN5lBwXN+RDr1Awe07f9SJmYklqQAIP5Kthq7QJsN1QHvmtW
|
|
||||||
JL7AYlltDTUYvE2kBnQKjkNYv9Qj4PGUvipVlCKA4cEVAZXHam01RqPXEFj5I9B4
|
|
||||||
Q9S+oT7htoXWuz9kAwsSCZVEW1QBzRL7UNIckMWsc1jRSiCT5Nc/sOtPyIc9in+i
|
|
||||||
J/XGPjSBvQZrnitLhR4qByG/dY+istQkcEERjElwhzucEyNkgtENJfJEevdJsrBf
|
|
||||||
oGaaK5ljemYsk1e+QHB3FWmNbIysKBMn44bHgu7DeQediLCjvwdasjVorDW1mv5Z
|
|
||||||
8Aoe075vxTmHGSjfMPiAzJnYMy0zCT1VcR+AtPKUtr11z2xgOrAqZqlTaR/ud6ce
|
|
||||||
B11n3oIs5Kwarvhwx2Qw7XvcGOa2PBGZW4kcoDRn9GNFcP5K2AAuRJD9FLTbr8ZO
|
|
||||||
6a0bv0KUksQYX+U/r3+qSn87TXyIJ1IbKY2jQYu/+KEpeyFnviXw+IoM/YHDqdw=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
private_key: |-
|
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDpS0Xtii0VITKF
|
|
||||||
r9XFLcWchI6//I7iMeKkYi7uEq601YZQ8/Zppg1M15BhD8ZEQ0JZ42ufi0p4B0LY
|
|
||||||
MGHYF+2kKsbFxcEPQTUeXCLcjYVAueZ+GTh+FrUrSQvHSevUbVXytAwiqAN/eAvX
|
|
||||||
BMdOKisPUM9Cmk/KHA+W+anw4UxqZvHq5GG9Z0IksTHI2oEMp/8cZ8lRXzHmOUYQ
|
|
||||||
GveBX6PBPvcttP8GwCU6vsPVSphZ7XF2LPqeMnBGgmOz51QTRpS7NBHMsSDR20Vg
|
|
||||||
STjI+F8nJnQsGO5Iq9IpQzlDlAsLjgPOT3W/pdeZD1mX/c9EpYEKf/0ubEBiWc+k
|
|
||||||
JqkrdmsUX6cZ06qEUa08yCMSzkaomHrMzw22kjICG9h+0sZvTetPvpYZsBqQRejD
|
|
||||||
S/cu+buAaDNchGNhl1YPp8iAlKUTYB4gbcNqceCGUmbQX06B/OwJiYIoN5ghh2wm
|
|
||||||
qNrFXYltfALBVhWFtU2DTAS9k399W2hd4u77uJngK0WLoKQuV/wi81dbk0kAI7eR
|
|
||||||
UI1H/Y4hC1MCI5M6zewrJ7QgOYBiqkYydYQGFu1ToDt6maDVBX05PcoBPwbUfrmZ
|
|
||||||
BjR5kzBawvH6reDuANkEXfJ0+2hAJBAxXPKyQVc9Y87nDATvkl7qWOKjfJairKAd
|
|
||||||
03lvJlesr6+7GwMMnE/6h91QF4VqOQIDAQABAoICAFXdtDe5X12DEf7dmJ9R+QVi
|
|
||||||
Ts5ADXEYrlQVpTNQIgiB/MVn/d6l1Qhe4Q+wiCeQ3+eIypB26qph9crvh9vK9tcx
|
|
||||||
PWcGocfVFtF9VQF7fzuzELCB5OaXwgfUA2dPAGN3+KXzefH5iAwPKcByzE6rO50P
|
|
||||||
/7ECbfK0QFKvwspbik4xZMIxW/4j9tbddzb3oX8AiGeylYkDMjEMDIsZ+dYe1v1m
|
|
||||||
CQFEOIeKCknkc9zZ71hOCjBWXsoCQ4vYKw1IzAuqM0zx3clKuoszGwZU/PcPX6pf
|
|
||||||
v2uJo46Q2zH/waBraWNP2nvBiFPJHSEDYtUMAJFCH0w3jn7bLhlk+AVxi1tpYwBx
|
|
||||||
SOFQKmKbJgTWpmX7o8bhyNmSg6gLTquKKYuOeUsJTe4SERnhKNVen/mf1BdV5S1A
|
|
||||||
iLj9mg5tFL1O+f8wl8q0QA5aM3o1G/YMlG28Na6X8l89BiDvfdG4YALzeJs5k1yn
|
|
||||||
VnpZElikhx63HQjaLE+u4nSBwr0s79Hnq4Xge+rEPCRVpHhfZ1T/Ka3NwqcflcM7
|
|
||||||
GvvRnXfLLyfS3DOQg9BCwE94hzJgh7V4BqEQInzkAR3/wF83xTT0LaWLBsJXTsWr
|
|
||||||
rHcdPxpMVXNUfelBmA3Blu1d07lDw8kMzYXzCJ4AE9gjdgN9ltwjg7ZDQ3w6Tnc1
|
|
||||||
09aLmIUeRx6r7vs8pBMPAoIBAQD3epVeC4Urpmop21Jzop7nqvQqmHwDvUPIHKWZ
|
|
||||||
a1e9YmHfNR6Vibzw8jqjd7IJMd5mzlcot+bTjfFGxfZ/KidE5MB8rvwS0MVQnamZ
|
|
||||||
dnl1OX9c/+G4jW8xCzNQlkAXT2xcaMPO/ged6smdtZkvvnjfyX0L78fbKG+4fsc8
|
|
||||||
PoIB5gXjApVVN4ujeaKUud2jr2uHueQqI8taZlhlIojxc1w/a9r0iiLK+sY/HvWH
|
|
||||||
gERxDFWQjg8kkFGXC3KFOz0UJiolDus9sK9cLcDI4IavOotVaxEoz778u9644+GM
|
|
||||||
wfRJCN8OBT3RQjPy77L1VOCjrbd1TtknDDG+kAN4ZLLEPCO/AoIBAQDxU6gqjGDy
|
|
||||||
SC1mSgl8x6ODkmCs2a9UvZeg9/KA/UzTGCLeSgftPwgCeGV6d6dpqFxsvqhVDVtp
|
|
||||||
pkqFa2+X0rsIG4JFl6qZTbXpJIqbdkTeWjjimg809fTqZnSJSchUiuIWzqvGlOSL
|
|
||||||
cM5c7+WNteLVHjldiNT0+jReXPtxAJD9jIV3LubmWZ5qs3tYXKGgQvCItLo6REYE
|
|
||||||
SKUZAsX/T6O6HAypv89AcS+UZxc2pq4htFRJY5XarLbs8BuDJAYWm3chMwwGIDEx
|
|
||||||
J7cCXWWWQkU7W1GOckU4oo6FPGzjREPwyeiYcvias2/nm4tOc5t0gRJHIR8W6tQF
|
|
||||||
5An7lLSHe5AHAoIBAADiNSpSzDTtsS9ZEyBKklqtZ5XHWZoB0P4j7AtyMKwCb+sG
|
|
||||||
G4fZKA2ML91pjf8uaGbhkboZff9/YD8qccjec6lxT6aiUVAX4rx486QSojhi7it8
|
|
||||||
1md8SctZCOPexXfP1sk1ro1MpuZPckzX2yYqfe/+ni2uu33y1QNJoJh8eKZdFeRL
|
|
||||||
nBDj0+HPi18QktQEylN/vGrSGeXGu8YQq4CBMvEfB3ccDye+YXrUN3g2YwgsTRnp
|
|
||||||
B/DPexsY9V24am1p/XiIZxqfSOEBYNDWzGRPxzOU4EjPBRWN7ium1KVWA/NGztUT
|
|
||||||
+7aFj/3sES2DEhJDioYms+vJxVuy0/BYG7NLq60CggEAZCxZre+/flK/paot7gHg
|
|
||||||
ugjU4GssAH0Cp+rEWw7KCQYH00XfrHdxl7TqSr/IWm9sjidGMKfuvhgs7tz94YOz
|
|
||||||
51Wj6cdfJWvAixqD/qxFQhcpbcaNcWp3U6Vb0nEyGwXbe6QmYbQEem1E/AcIvp41
|
|
||||||
nkmBfnYCD/6cJl9qcCnQBa+C50osxomE3L3MAY3R+XhP6C887lrQxY5yGcOw9J3W
|
|
||||||
VLa3+u6H1TQmj++LD0B5H7x/EEeqOK9g71Fr2i/l5xR5iuppn1FVmhXmPbEPLiQs
|
|
||||||
IMtzOzHr0eqIRn4ipOP9X8IwLrfqwiyh0v4aAWKzsNSzBZuWEClCAX/7NNcxaNu9
|
|
||||||
mQKCAQEA3dk8ScY8bVPgFg2x7oqujVZbrNizhw2+BXYuH6HRVINPDYzIapur9uiw
|
|
||||||
I+STHoUod8aRNvwDLfhkI+MabmEbt/eDsBpRrJYYLi2uTed5gIiLqPS8MPuKr++7
|
|
||||||
UwJz4OPZu1xOjbFapvKvPSbPhS254tozQyi5Xbl8W268SCQhF+hEb+AT5JTcoPlI
|
|
||||||
ZNN5hp0Ooq6EouX8heyeG7le9V2G+HFHR9aWniD9kRRirO+oqWTXcG+9zHRhkdbF
|
|
||||||
4vRGwZ8+mj/0fKAHlFpeDRiKNbma7rTNDyEDR9jQ+GOC1QmOYeiei6FDKYEPcHxh
|
|
||||||
UBWqdlD+gUjtzQvD3yMo7JN9DIO5Eg==
|
|
||||||
-----END PRIVATE KEY-----
|
|
||||||
certificate_path: ""
|
|
||||||
private_key_path: ""
|
|
||||||
filters:
|
|
||||||
- enabled: true
|
|
||||||
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
|
||||||
name: AdGuard DNS filter
|
|
||||||
id: 1
|
|
||||||
- enabled: true
|
|
||||||
url: https://adaway.org/hosts.txt
|
|
||||||
name: AdAway Default Blocklist
|
|
||||||
id: 2
|
|
||||||
- enabled: true
|
|
||||||
url: https://someonewhocares.org/hosts/zero/hosts
|
|
||||||
name: Dan Pollock's List
|
|
||||||
id: 1684963532
|
|
||||||
whitelist_filters: []
|
|
||||||
user_rules: []
|
|
||||||
dhcp:
|
|
||||||
enabled: false
|
|
||||||
interface_name: ""
|
|
||||||
local_domain_name: lan
|
|
||||||
dhcpv4:
|
|
||||||
gateway_ip: ""
|
|
||||||
subnet_mask: ""
|
|
||||||
range_start: ""
|
|
||||||
range_end: ""
|
|
||||||
lease_duration: 86400
|
|
||||||
icmp_timeout_msec: 1000
|
|
||||||
options: []
|
|
||||||
dhcpv6:
|
|
||||||
range_start: ""
|
|
||||||
lease_duration: 86400
|
|
||||||
ra_slaac_only: false
|
|
||||||
ra_allow_slaac: false
|
|
||||||
clients:
|
|
||||||
runtime_sources:
|
|
||||||
whois: true
|
|
||||||
arp: true
|
|
||||||
rdns: true
|
|
||||||
dhcp: true
|
|
||||||
hosts: true
|
|
||||||
persistent: []
|
|
||||||
log_compress: false
|
|
||||||
log_localtime: false
|
|
||||||
log_max_backups: 0
|
|
||||||
log_max_size: 100
|
|
||||||
log_max_age: 3
|
|
||||||
log_file: ""
|
|
||||||
verbose: false
|
|
||||||
os:
|
|
||||||
group: ""
|
|
||||||
user: ""
|
|
||||||
rlimit_nofile: 0
|
|
||||||
schema_version: 14
|
|
42
apps/audiobookshelf/deployment.yaml
Normal file
42
apps/audiobookshelf/deployment.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: audiobookshelf
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: audiobookshelf
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: audiobookshelf
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: audiobookshelf
|
||||||
|
image: audiobookshelf
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Berlin
|
||||||
|
- name: CONFIG_PATH
|
||||||
|
value: /data/config
|
||||||
|
- name: METADATA_PATH
|
||||||
|
value: /data/metadata
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /data
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m"
|
||||||
|
memory: "200Mi"
|
||||||
|
limits:
|
||||||
|
cpu: "2"
|
||||||
|
memory: "1Gi"
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: audiobookshelf-data
|
||||||
|
|
17
apps/audiobookshelf/ingress.yaml
Normal file
17
apps/audiobookshelf/ingress.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: audiobookshelf-ingressroute
|
||||||
|
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`audiobookshelf.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: audiobookshelf-web
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
15
apps/audiobookshelf/kustomization.yaml
Normal file
15
apps/audiobookshelf/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
|
||||||
|
namespace: audiobookshelf
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: audiobookshelf
|
||||||
|
newName: ghcr.io/advplyr/audiobookshelf
|
||||||
|
newTag: "2.26.3"
|
4
apps/audiobookshelf/namespace.yaml
Normal file
4
apps/audiobookshelf/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
@@ -1,11 +1,9 @@
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres-backup-claim
|
name: audiobookshelf-data
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
storageClassName: nfs-client
|
storageClassName: "nfs-client"
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
resources:
|
resources:
|
10
apps/audiobookshelf/service.yaml
Normal file
10
apps/audiobookshelf/service.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: audiobookshelf-web
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: audiobookshelf
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
41
apps/code-server/deployment.yaml
Normal file
41
apps/code-server/deployment.yaml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: code-server
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: code-server
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: code-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: code-server
|
||||||
|
image: code-server
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Berlin
|
||||||
|
- name: CONFIG_PATH
|
||||||
|
value: /data/config
|
||||||
|
- name: METADATA_PATH
|
||||||
|
value: /data/metadata
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /home/coder
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "50m"
|
||||||
|
memory: "100Mi"
|
||||||
|
limits:
|
||||||
|
cpu: "6"
|
||||||
|
memory: "16Gi"
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: code-server-data
|
||||||
|
|
17
apps/code-server/ingress.yaml
Normal file
17
apps/code-server/ingress.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: audiobookshelf-ingressroute
|
||||||
|
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`code.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: code-server-web
|
||||||
|
port: 8080
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
15
apps/code-server/kustomization.yaml
Normal file
15
apps/code-server/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
|
||||||
|
namespace: code-server
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: code-server
|
||||||
|
newName: ghcr.io/coder/code-server
|
||||||
|
newTag: 4.101.2-fedora
|
4
apps/code-server/namespace.yaml
Normal file
4
apps/code-server/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
11
apps/code-server/pvc.yaml
Normal file
11
apps/code-server/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: code-server-data
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
11
apps/code-server/service.yaml
Normal file
11
apps/code-server/service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: code-server-web
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: code-server
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
type: LoadBalancer
|
48
apps/files/deployment.yaml
Normal file
48
apps/files/deployment.yaml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: ocis-statefulset
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ocis
|
||||||
|
serviceName: ocis-web
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ocis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: ocis
|
||||||
|
image: ocis
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: "1Gi"
|
||||||
|
cpu: "1000m"
|
||||||
|
env:
|
||||||
|
- name: OCIS_INSECURE
|
||||||
|
value: "true"
|
||||||
|
- name: OCIS_URL
|
||||||
|
value: "https://ocis.kluster.moll.re"
|
||||||
|
- name: OCIS_LOG_LEVEL
|
||||||
|
value: "debug"
|
||||||
|
ports:
|
||||||
|
- containerPort: 9200
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/ocis
|
||||||
|
# - name: ocis-config-file
|
||||||
|
# mountPath: /etc/ocis/config.yaml
|
||||||
|
- name: data
|
||||||
|
mountPath: /var/lib/ocis
|
||||||
|
volumes:
|
||||||
|
# - name: ocis-config
|
||||||
|
# persistentVolumeClaim:
|
||||||
|
# claimName: ocis-config
|
||||||
|
- name: config
|
||||||
|
secret:
|
||||||
|
secretName: ocis-config
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: ocis
|
18
apps/files/ingress.yaml
Normal file
18
apps/files/ingress.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: ocis-ingressroute
|
||||||
|
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`ocis.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: ocis-web
|
||||||
|
port: 9200
|
||||||
|
scheme: https
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
16
apps/files/kustomization.yaml
Normal file
16
apps/files/kustomization.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- service.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- ocis-config.sealedsecret.yaml
|
||||||
|
|
||||||
|
namespace: files
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: ocis
|
||||||
|
newName: owncloud/ocis
|
||||||
|
newTag: "7.2.0"
|
4
apps/files/namespace.yaml
Normal file
4
apps/files/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
17
apps/files/ocis-config.sealedsecret.yaml
Normal file
17
apps/files/ocis-config.sealedsecret.yaml
Normal file
File diff suppressed because one or more lines are too long
@@ -1,13 +1,11 @@
|
|||||||
```
|
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
name: test-claim
|
name: ocis
|
||||||
spec:
|
spec:
|
||||||
storageClassName: nfs-client
|
storageClassName: "nfs-client"
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteOnce
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 1Mi
|
storage: 150Gi
|
||||||
```
|
|
10
apps/files/service.yaml
Normal file
10
apps/files/service.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: ocis-web
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: ocis
|
||||||
|
ports:
|
||||||
|
- port: 9200
|
||||||
|
targetPort: 9200
|
@@ -1,12 +1,10 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
namespace: finance
|
|
||||||
name: actualbudget
|
name: actualbudget
|
||||||
labels:
|
labels:
|
||||||
app: actualbudget
|
app: actualbudget
|
||||||
spec:
|
spec:
|
||||||
# deployment running a single container
|
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: actualbudget
|
app: actualbudget
|
||||||
@@ -18,83 +16,22 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: actualbudget
|
- name: actualbudget
|
||||||
image: actualbudget/actual-server:latest
|
image: actualbudget
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: Europe/Berlin
|
value: Europe/Berlin
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: actualbudget-oidc
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: actualbudget-data-nfs
|
- name: data
|
||||||
mountPath: /data
|
mountPath: /data
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 5006
|
- containerPort: 5006
|
||||||
name: http
|
name: http
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
volumes:
|
volumes:
|
||||||
- name: actualbudget-data-nfs
|
- name: data
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: actualbudget-data-nfs
|
claimName: data
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: "actualbudget-data-nfs"
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
capacity:
|
|
||||||
storage: "5Gi"
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/actualbudget
|
|
||||||
server: 192.168.1.157
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: "actualbudget-data-nfs"
|
|
||||||
spec:
|
|
||||||
storageClassName: "fast"
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "5Gi"
|
|
||||||
# selector:
|
|
||||||
# matchLabels:
|
|
||||||
# directory: "journal-data"
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: actualbudget
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: actualbudget
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 5006
|
|
||||||
targetPort: 5006
|
|
||||||
type: ClusterIP
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: actualbudget
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`actualbudget.kluster.moll.re`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: actualbudget
|
|
||||||
port: 5006
|
|
||||||
tls:
|
|
||||||
certResolver: default-tls
|
|
||||||
|
15
apps/finance/actualbudget.ingress.yaml
Normal file
15
apps/finance/actualbudget.ingress.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: actualbudget
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`actualbudget.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: actualbudget
|
||||||
|
port: 5006
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
11
apps/finance/actualbudget.pvc.yaml
Normal file
11
apps/finance/actualbudget.pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "data"
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "5Gi"
|
12
apps/finance/actualbudget.service.yaml
Normal file
12
apps/finance/actualbudget.service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: actualbudget
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: actualbudget
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 5006
|
||||||
|
targetPort: 5006
|
||||||
|
type: ClusterIP
|
@@ -1,66 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: firefly-importer
|
|
||||||
name: firefly-importer
|
|
||||||
namespace: finance
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: firefly-importer
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: firefly-importer
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: fireflyiii/data-importer:latest
|
|
||||||
imagePullPolicy: Always
|
|
||||||
name: firefly-importer
|
|
||||||
resources: {}
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
env:
|
|
||||||
- name: FIREFLY_III_ACCESS_TOKEN
|
|
||||||
value: redacted
|
|
||||||
- name: FIREFLY_III_URL
|
|
||||||
value: firefly-http:8080
|
|
||||||
# - name: APP_URL
|
|
||||||
# value: https://finance.kluster.moll.re
|
|
||||||
- name: TRUSTED_PROXIES
|
|
||||||
value: "**"
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: firefly-importer-http
|
|
||||||
namespace: finance
|
|
||||||
labels:
|
|
||||||
app: firefly-importer-http
|
|
||||||
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
# name: http
|
|
||||||
selector:
|
|
||||||
app: firefly-importer
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: firefly-importer-ingress
|
|
||||||
namespace: finance
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`importer.finance.kluster.moll.re`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: firefly-importer-http
|
|
||||||
port: 8080
|
|
||||||
tls:
|
|
||||||
certResolver: default-tls
|
|
@@ -1,79 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: firefly
|
|
||||||
name: firefly
|
|
||||||
namespace: finance
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: firefly
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: firefly
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: fireflyiii/core:latest
|
|
||||||
imagePullPolicy: Always
|
|
||||||
name: firefly
|
|
||||||
resources: {}
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
env:
|
|
||||||
- name: APP_ENV
|
|
||||||
value: "local"
|
|
||||||
- name: APP_KEY
|
|
||||||
value: iKejRAlgwx2Y/fxdosXjABbNxNzEuJdl
|
|
||||||
- name: DB_CONNECTION
|
|
||||||
value: sqlite
|
|
||||||
- name: APP_URL
|
|
||||||
value: https://finance.kluster.moll.re
|
|
||||||
- name: TRUSTED_PROXIES
|
|
||||||
value: "**"
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /var/www/html/storage/database
|
|
||||||
name: firefly-database
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: firefly-database
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: firefly-database-nfs
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: firefly-http
|
|
||||||
namespace: finance
|
|
||||||
labels:
|
|
||||||
app: firefly-http
|
|
||||||
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
# name: http
|
|
||||||
selector:
|
|
||||||
app: firefly
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: firefly-ingress
|
|
||||||
namespace: finance
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`finance.kluster.moll.re`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: firefly-http
|
|
||||||
port: 8080
|
|
||||||
tls:
|
|
||||||
certResolver: default-tls
|
|
||||||
|
|
||||||
|
|
@@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: firefly-database-nfs
|
|
||||||
labels:
|
|
||||||
directory: firefly
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadOnlyMany
|
|
||||||
capacity:
|
|
||||||
storage: "1G"
|
|
||||||
|
|
||||||
nfs:
|
|
||||||
path: /firefly # inside nfs part.
|
|
||||||
server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: finance
|
|
||||||
name: firefly-database-nfs
|
|
||||||
spec:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "1G"
|
|
||||||
# storageClassName: fast
|
|
||||||
accessModes:
|
|
||||||
- ReadOnlyMany
|
|
||||||
volumeName: firefly-database-nfs
|
|
||||||
|
|
17
apps/finance/kustomization.yaml
Normal file
17
apps/finance/kustomization.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
namespace: finance
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- actualbudget.pvc.yaml
|
||||||
|
- actualbudget.deployment.yaml
|
||||||
|
- actualbudget.service.yaml
|
||||||
|
- actualbudget.ingress.yaml
|
||||||
|
- oidc.sealedsecret.yaml
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: actualbudget
|
||||||
|
newName: actualbudget/actual-server
|
||||||
|
newTag: 25.7.1
|
4
apps/finance/namespace.yaml
Normal file
4
apps/finance/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
19
apps/finance/oidc.sealedsecret.yaml
Normal file
19
apps/finance/oidc.sealedsecret.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: actualbudget-oidc
|
||||||
|
namespace: finance
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
ACTUAL_OPENID_AUTH_METHOD: AgAhPqooAS/7R9S/X3KGfSfs3ClN38J9CEfkUTYAUvKGEehQ2Tz3thPNvhvnbz/gKRc7C172jgxoxaGMiVXi40Qa+I7Y8JVHefjoSd8NuubzQZU8ZK5KlYRgc5OnoPM3RLarHyZ2DFw5Q/ngv3sp1c5dSI4/604KSQPxVAFCnb/lnSkOsBggDRymWvYclx1NrLIClpLAFwHgCOm6g1kHCvtGIdBLxKOHsiRJm62+UyHt0GLkR0QFTDXBQxoBm9QR9kLjQqw/QqcOIVx1by0RHoHBI6HDEEIQVH3UgWqlMmIwm+a4KQeBEdEfWLn9YC8MGSdlQRlaZoi5ltFT2c/DWuMuRStnaOWbsMQVR+y6yJ2UNBe29uVQh6877iqfmAJvT6gXic73zI7Vkq6IFQ7veQPBaTi22HP/sxiElGI8rY0LtRHD4TctKSePaOPvsgrv8k8SpB5qYAft7UonbTPWzzRSSc4Y3Z4fQiD0x/uhtTqTTtukx39nzM2TjVGcJThWaxUGa07w1fjTafieFVwwreURBUpRK92X2NY3ovOdA9c1WrHfqIzVtpcnfQyCeA5D4XT2sBFk0+crwEm1GmtscjPkGnyctNMUSmkHd+QKw8EAmWxKge4+7rfOrZp5ZK7cBFJcB4gVQcxnm3bXr0qZyiA1udaxmSxVflQR2AjduvhKuE73AGPi0bJki5TvKJp6bavTotYfdMY=
|
||||||
|
ACTUAL_OPENID_CLIENT_ID: AgA6X0uYaU1n4XSXVntmT4+NgahYkkMVx61OZP8ExnSMkRPlwQfErhNHrwKsTsnD8OzP3svhxBe5bwaI8O1OKF0k5pQWG0DbRfmBrwiep9nBsKPt+fQm0AJUsZ2sQNShusmsSEumBKbMD0CMPklVMq18tLpOIh/YaXM34lsOutW0SIx7HWWQsyLmoolEoRVdkKvDhoh3FXjKqzGYlr1uKuqYG7pJPsxEpsTs2pZTUIlB2gVcEqb/ZXxgkj01GDYzB519swIOfYdISj7oCR8VG90M9iDrgmxsPkWozMDxFjNo5JR2dB9wvP7ptFex8JonbZZXYZD7tE+36U8iys6Cjh6JGwr9luN1AxYYSkRrNWJd2CuID+8ujWptoTvRSO0RwiVVp5LhXe1l2GxLsS2UVtO+nbWH6DGMJei4DQ+LAxDXFR8FAvi7615cneN0umQfF4ZMUJirvxHA3tFN42tbnRmSCbLAZLNLhQq8VbRmkYOAN6LCzSKYlyhSyA3NM2HjRTFkXGUhOPL+3tPZJB4v0QlEhlhy1Ffxh2mbUXgmQ+ZHGUsBXEHfc/Gba6gJhsj6S2DkiAeZUW6euY5/v4vpveWsS+YS+BxH441//8mOJnrpsWrcQbM5yCk4WMnmpETy/VFEkc3dqYfVWHDfvwAeqjVfXAovXBmwOoCASG6qDf0P7FdeLFTHUNuahyNhBzhBAQ/yNpOkbzKTJFBWwnM=
|
||||||
|
ACTUAL_OPENID_CLIENT_SECRET: AgAbJinP4E8rbGAw7BTfh/GB3XxQOfHiLFrgaikQbUIsmZu+Y6ktK7aJdcX2/g6yhHXX6z8p4xoYTaGgkpo8H0XWvUDT4ohqJVdJSWZgNx8MyzisVKi+51BEpslL4JvGo/ISjXT0hNeYGzFXlHnnr3LX+fuTVh3dKtk4t8nmR8SqaCCIyvKiBPmX/1QWo4Vrfw7OLpVlfGP0i3J7FrhjNgKMRWcQKQC4Ohk+NLHHghdtqzuFB8eKwcuBZmynKCVyblOhwZSL5WnyJPskWLMjNEizWuCubDdyHVY3ZqYLDe5dgoi7Gop5/xY7FEuEkmTL0g7LpKo4RkEKRLjsZwWtW+xN6HRRt7zGoUdIpo20ZnTtEH8C/qcxjHKUycFvzKLnk6ntq5rEdK2/MhBtMfd3a8pb4vpT9JNra1AWsB7zCUv4yc/FT0RpkL+1r1CVva4o+tzM8ojnm4o0ch6qsGb0IOYZvJx6sF7c6aj7c41YQK3ZrQF3bhhhEHYyWOBjy1V4T/GJPZ9CbhGG0PIsSvpW7d5pG5jNAwU/Xo6FL/vVUPwmSq/hCqYMSSSKNiMH/q/vzKyu5B5aQbNDAumzsLRqD/auJz8nAaUoLNBVHq+7zTs3wV7pEayY22teq/MN5PRtYOQLE5Ck60gv9Q70cfhgvTeK+eX4h9BbhfijCV/EiSYhLP7meeIpE80icdLUSkNROfW+0sf3RNbW5q3JX8PsW0h29VJgREJdlziLj2cCshe+ww==
|
||||||
|
ACTUAL_OPENID_DISCOVERY_URL: AgAQVZX6r8SPkwwBR1dmUF/ahuZKkGSsU/GULe5PF7Nm75UadtjPb5aHAZjWE59MdV61DQZDa4KJz1/fW4xDUrJBuUElIRQH4oyMTQG12MSMauQpLd25SVU8ex2NYyerbd85j521FSxujP0l3941KGsENLt5wCx/idXu47txhAHgS81mj3CLfWzT5yyG+V1i48a24xK905v+ft5ZKuNLOxvVb6yZSBt1j/3egx49eB49CRk/dxYQtPpSw8Zb6KgaN+skjq5HTH/Neb4J92nlJ1aFPVKbFLbtxyIHDSoO35U8ODHEJVGKBbZjjfrrjCpmQYnZPEWN9s+xj2NAXZ7qANcJfbFEF/3bOiKZhc0jLM5MyhiMZoytn4FvGM8zxINC3z8zqaWJm1wiMXEUH3/FLUa2UWeHKQB14h0f5XGwytb3s/nPCoBnHhtOK1y4utJ2APsQhRsxySZjgYNRaRCarp8PntY7yB7VHYlv5Mitx+qBWcAUmcKp1I4NTnm1LORRGzIFcrJJKtQfqcW7GNuZDA3AiLGyOMVigcA93GnPbppor5BItE9FK/BKqrR4Bz31jXSO8S7pjhi3JxBIKEMmMZRVbyelJ9o7gTpqrBvO7KZ5v/L+mlE0J8D2LZoEWPqxfa/BE+QZfwIS3wDWQl1GTruaAM4u0bp4i9GkyK3hPVXnml3dNMElSG3GvNqHhhy1Boo1cHXHbQ5YzbkGgzL9fLkigVQCi0FKItyBxdGsui9U0OU5LNi0EGKBibs22mdDkp6f051GWeMidtSwz9j5
|
||||||
|
ACTUAL_OPENID_SERVER_HOSTNAME: AgB+C31GqtPKbMifuTFYhwOgUwXph+RQYdnVQaVIaDiveE6Lydl/2HnTyFQIi2mhrbiCpDgegXuvGBoM7WHxlPepny5E66lY/cAdFaFDGMARqMXCRLVmvkt3U1IyNn9zPCPil0x+eAv2S/ETLm8Nj2OL9utxkdNBHub9xiGrE0d7qBeBfK1FNmainthYQUpnCsR7jowmmvYGuEyDwfG+suUooDdb5zaWmCJZRYk1jKD3zlu21N0sfciBJ/GpTdz/2V+NXqJJqs3r2zoB2GJPQ64pMuZHZ+yw8bYUkg7/QOHD2ofWmtzNOGGtiNRHAG8MtvF6ovc4Hgv5uu+4x413UP6pSIJsrHrXSHYP+mvu+ya3gNUn6YK2qymezrqbvUF/n7LoaDzTRqa0PmemtdskuABiwfqrdiOarxaWjomkXqnrBK6VkJ8PhOMDMv/j/c6zlXdhpnqlUyxMcjBjqicfNBWN8UByDIEw4D0rhibzOS4fIKjNHrmXHv39GNJsY90avhZqq42oTMJL0vcaj3v4pBZJdJ05TOvY7PQ/iUwnnczGqOtpAQtBKfCV2+PXp9o/64wOGc0Br322kSpzjIleWP9VWVgbqvwMjUGtlL+xTkCaOFpiYETxUim09c745WDc+YgU55rd5i/5t20wiKy7RSYnHvYOwvdjAlEgAnD0YZBXOQkL51nL9P+nOMAYBE0HiM1vYsd8R6h6Fk+G2gcs/2CLgwglqOtMwAm9A9+5qSqyMak6Z68=
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: actualbudget-oidc
|
||||||
|
namespace: finance
|
@@ -1,89 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: drone-runner
|
|
||||||
namespace: gitea
|
|
||||||
---
|
|
||||||
kind: Role
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: drone-runner
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- delete
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
- pods/log
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- create
|
|
||||||
- delete
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- update
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
kind: RoleBinding
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: drone-runner
|
|
||||||
namespace: gitea
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: drone-runner
|
|
||||||
namespace: gitea
|
|
||||||
roleRef:
|
|
||||||
kind: Role
|
|
||||||
name: drone-runner
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: drone-runner
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: drone-runner
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: drone-runner
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: drone-runner
|
|
||||||
spec:
|
|
||||||
serviceAccountName: drone-runner
|
|
||||||
containers:
|
|
||||||
- name: runner
|
|
||||||
image: drone/drone-runner-kube:latest
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
env:
|
|
||||||
- name: DRONE_RPC_HOST
|
|
||||||
value: drone-server:80
|
|
||||||
- name: DRONE_RPC_PROTO
|
|
||||||
value: http
|
|
||||||
- name: DRONE_RPC_SECRET
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: drone-server-secret
|
|
||||||
key: rpc_secret
|
|
||||||
- name: DRONE_NAMESPACE_DEFAULT
|
|
||||||
value: gitea
|
|
||||||
# - name: DRONE_NAMESPACE_RULES
|
|
||||||
# value: "drone-runner:*"
|
|
||||||
- name: DRONE_SERVICE_ACCOUNT_DEFAULT
|
|
||||||
value: drone-runner
|
|
@@ -1,129 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: drone-server
|
|
||||||
namespace: gitea
|
|
||||||
labels:
|
|
||||||
app: drone-server
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: drone-server
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: drone-server
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: drone
|
|
||||||
image: drone/drone:latest
|
|
||||||
env:
|
|
||||||
- name: DRONE_SERVER_PORT # because the deployment is called drone-server, override this var again!
|
|
||||||
value: ":80"
|
|
||||||
- name: DRONE_GITEA_SERVER
|
|
||||||
value: https://git.kluster.moll.re
|
|
||||||
- name: DRONE_GITEA_CLIENT_ID
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: drone-server-secret
|
|
||||||
key: client_id
|
|
||||||
- name: DRONE_GITEA_CLIENT_SECRET
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: drone-server-secret
|
|
||||||
key: client_secret
|
|
||||||
- name: DRONE_RPC_SECRET
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: drone-server-secret
|
|
||||||
key: rpc_secret
|
|
||||||
- name: DRONE_SERVER_HOST
|
|
||||||
value: drone.kluster.moll.re
|
|
||||||
- name: DRONE_SERVER_PROTO
|
|
||||||
value: https
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: 1.5
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: drone-data-nfs
|
|
||||||
volumes:
|
|
||||||
- name: drone-data-nfs
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: drone-data-nfs
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: drone-server
|
|
||||||
namespace: gitea
|
|
||||||
labels:
|
|
||||||
app: drone-server
|
|
||||||
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app: drone-server
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: drone-server-ingress
|
|
||||||
namespace: gitea
|
|
||||||
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`drone.kluster.moll.re`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: drone-server
|
|
||||||
port: 80
|
|
||||||
tls:
|
|
||||||
certResolver: default-tls
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: drone-data-nfs
|
|
||||||
labels:
|
|
||||||
directory: drone
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
capacity:
|
|
||||||
storage: "1Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/drone
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: drone-data-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "1Gi"
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
directory: drone
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"kind": "SealedSecret",
|
|
||||||
"apiVersion": "bitnami.com/v1alpha1",
|
|
||||||
"metadata": {
|
|
||||||
"name": "drone-server-secret",
|
|
||||||
"namespace": "gitea",
|
|
||||||
"creationTimestamp": null
|
|
||||||
},
|
|
||||||
"spec": {
|
|
||||||
"template": {
|
|
||||||
"metadata": {
|
|
||||||
"name": "drone-server-secret",
|
|
||||||
"namespace": "gitea",
|
|
||||||
"creationTimestamp": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"encryptedData": {
|
|
||||||
"client_id": "AgA53a7kGJ6zZcx2ooTvTNwxaW2FvfzHJnxg6co54+HXinTJKsc4+GJ1PtdIbsZ7Dgu/sLi/4X90fT+PT2sgEx9jIilmHPdJeRtwV1UID3Y46A7cJlfcAKwNOFzp2PWvBvizbNp7tbJwxeAYnVX8GfN6fi700QxBGqAI3u8qQvLpU6UGW2RM96gCXI7s1QhE1Le6TgoESy5HX95pB7csDRNSwVE02OWfDHKEjH8QD8UvBB9xct6uwDfu7KrsJiNJvWMP6arvpfhy/X+UtCTFmj5wmFYL7oc6vSiCkq+QyHgQTEHTmGpEjEGKcQxPQaus3KhbhcxQBYLMEMYRlLPH0AEAA4dzbSpoVXM3LuIe9FppgrTCknK1uRB8wyrHUeInWO8mG7UraV6m5PUS+UYODMvfjwY3PyiGhTSf6LgMlhMl8e+2rb+OsWphT8Pbeom33PucrYaRFr9RpQkJSwE6HU3JEh25YLfIJ7caqRND8C/p8kD679C8UMcNpBN8WS4Cswn5jzmwbeJNM5DGp9yQVZNx7Bv3dHzx9i3ShjJ6QQnR/zWJZ/dWLy6weGYmdZMMXRAO8CCdruvcX5YyeieXZfchSIlZ/GqqBHptdcLpwLiZsfmyTWeBvk5pMAsZaKJ1tfWpQ84s4epzMoieTfhTueGXmeRKX+DJBBcriU+5YoqNxpU1lPL+LoInorJSKN7c3ouFx78N3GDOCq7mlWI94lY0bIs5zhrfUN137ITCcED62AJ7vks=",
|
|
||||||
"client_secret": "AgDQXU7x6RLhE9Hc+goeR2+3rW316SLLLA8tfqx3tsykL+vxhRkY5UCEaak3Rgei0k14jB/Rmme+/O/D1/5tc/i885+sGn0yjU7Jo4L5nkIssUOHlmRSGkRJDb9ABPauFXAjap9KLix9bd8ewI7R0lS3tOK9ZhThYhcfDUqV9qkkbSHzwNptkH7gYWt9qzG/rqqqpFP+PCtjzKVve4LCBgaxetcnh1t+d5oh7VAFnSI9Bt1G/DRzi+K3YZ+YG5+XKevBp06GMiLUMiv/eUvmOfAB/KO79LnNVbOcRsAHfnqLbXgNjFzspr5xDiGMC/ma1245LavywqXDp0S9jjNEe48i51PPQMwHWV8XEovsM6LHcteluNogt+VkL4mOnmP+sba/V3NO51rt1WXl+ca+U4kBq4dLMsdpWUKemz9BlIRC4etEXjwKJ5DznT7u6GUTrXx2RCm1j0OYWM++P10SdyD6tGjKnZf88a33Wrwm8Y7c47JrPTlP4PqLq9gzvD310uVfs1vGYGULaToGy+D/th8qiWWlu7BIfwqlIj8lruVnOhQ4GeEZmUAsqYf8JfsBwuDc0Y+8qbwjFrr2z+5x+2XBL8KGZVopyme45SHijlBZs7YsJqTBsg5oW09grM8/oO731GtzSYmpat2VZlaILuTjALqo/cu//kxwmqh7UX+jnTJ/2N3bKKSAfHWbHDeHeS2XJ+eKaI4onNYW9J70EfAP3vOpU+zmQ8rOzJuJjRt0HarLwzc5CXb1Xhlgsaoj7zKXPQMnqIDngg==",
|
|
||||||
"rpc_secret": "AgAcJNCFtOhK28vnLredkTgsVpnMPwaXss5NT5ysc0IbVid2vWRk2CTjBZc5DzjxxLwI1Ok88MFXHP08ZGCYy4rIbwoi7Ei1OEevGWfaI4n5CvAxr4ZamQHSfIX9dVAm9BSSx2M/mDtCKqVEGJEzyHCedrxf6LXM/YTNgjD43BuCZZMu35mRsHItpYFZQSttlHiUvR8y2YKrhV2P7fiWRD3cCVao8ldzKfGuvRfal8ByGoxpsYLj2D9CdtPvRF/TQsWUJJWwzbI9DmbW1MMI4/b26Jfa5TBvHxS1MQxFJpSXuMIengO+b0bi7WaR36y/FrKSNxIrQDHI7XCb00yYaSfj3RkSBVoAD0a2p8vNupHCqsKBoaWd8tMv/wGP8wbBk4DgGeQiTIvfhbQZU/Q2/LVDDficjXVn3IuKP/cqgGVf6lUh5YsUSs8qwpMil7XySiHvaZn+iFAnsXoejd4S2e/pbRvyaxP1aa7TCxnINjpU7IrnUEUiI4glQmAte3MqZWLXcc0Uk3Qz9PP0cD+V8qCOryrPMP2kTAI8LT/K4DgcEMAEGes4Vx1l0oBMF0xJvhM2kZXcEcf0NzuQJvYTgZpQF5xp0TchezLshmEUSIkII9NvAvn+iEYJeHsJUDijjmBloSYe4+QTgdYh6FakVUwYI5U4ztDNrvgqhWjExfbn8HxaFzsNTsuzGoYs+jwXH8Wk2z1Q1oQjDdO5YTjmdqvkSTdin/5CiuCDHaQX6a4gNQ=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,62 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: gitea-data-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
capacity:
|
|
||||||
storage: "10Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/gitea/data
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: gitea-data-nfs
|
|
||||||
spec:
|
|
||||||
storageClassName: ""
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "10Gi"
|
|
||||||
volumeName: gitea-data-nfs
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: gitea-postgresql-data-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: fast
|
|
||||||
capacity:
|
|
||||||
storage: "5Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/gitea/postgres
|
|
||||||
server: 192.168.1.157
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: gitea
|
|
||||||
name: gitea-postgresql-data-nfs
|
|
||||||
spec:
|
|
||||||
storageClassName: nfs-client
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "5Gi"
|
|
||||||
volumeName: gitea-postgresql-data-nfs
|
|
@@ -1,497 +0,0 @@
|
|||||||
# Default values for gitea.
|
|
||||||
# This is a YAML-formatted file.
|
|
||||||
# Declare variables to be passed into your templates.
|
|
||||||
## @section Global
|
|
||||||
#
|
|
||||||
## @param global.imageRegistry global image registry override
|
|
||||||
## @param global.imagePullSecrets global image pull secrets override; can be extended by `imagePullSecrets`
|
|
||||||
## @param global.storageClass global storage class override
|
|
||||||
## @param global.hostAliases global hostAliases which will be added to the pod's hosts files
|
|
||||||
global:
|
|
||||||
imageRegistry: ""
|
|
||||||
## E.g.
|
|
||||||
## imagePullSecrets:
|
|
||||||
## - myRegistryKeySecretName
|
|
||||||
##
|
|
||||||
imagePullSecrets: []
|
|
||||||
storageClass: ""
|
|
||||||
hostAliases: []
|
|
||||||
# - ip: 192.168.137.2
|
|
||||||
# hostnames:
|
|
||||||
# - example.com
|
|
||||||
|
|
||||||
## @param replicaCount number of replicas for the statefulset
|
|
||||||
replicaCount: 1
|
|
||||||
|
|
||||||
## @param clusterDomain cluster domain
|
|
||||||
clusterDomain: cluster.local
|
|
||||||
|
|
||||||
## @section Image
|
|
||||||
## @param image.registry image registry, e.g. gcr.io,docker.io
|
|
||||||
## @param image.repository Image to start for this pod
|
|
||||||
## @param image.tag Visit: [Image tag](https://hub.docker.com/r/gitea/gitea/tags?page=1&ordering=last_updated). Defaults to `appVersion` within Chart.yaml.
|
|
||||||
## @param image.pullPolicy Image pull policy
|
|
||||||
## @param image.rootless Wether or not to pull the rootless version of Gitea, only works on Gitea 1.14.x or higher
|
|
||||||
image:
|
|
||||||
registry: ""
|
|
||||||
repository: gitea/gitea
|
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
|
||||||
tag: ""
|
|
||||||
pullPolicy: Always
|
|
||||||
rootless: false # only possible when running 1.14 or later
|
|
||||||
|
|
||||||
## @param imagePullSecrets Secret to use for pulling the image
|
|
||||||
imagePullSecrets: []
|
|
||||||
|
|
||||||
## @section Security
|
|
||||||
# Security context is only usable with rootless image due to image design
|
|
||||||
## @param podSecurityContext.fsGroup Set the shared file system group for all containers in the pod.
|
|
||||||
podSecurityContext:
|
|
||||||
fsGroup: 1000
|
|
||||||
|
|
||||||
## @param containerSecurityContext Security context
|
|
||||||
containerSecurityContext: {}
|
|
||||||
# allowPrivilegeEscalation: false
|
|
||||||
# capabilities:
|
|
||||||
# drop:
|
|
||||||
# - ALL
|
|
||||||
# # Add the SYS_CHROOT capability for root and rootless images if you intend to
|
|
||||||
# # run pods on nodes that use the container runtime cri-o. Otherwise, you will
|
|
||||||
# # get an error message from the SSH server that it is not possible to read from
|
|
||||||
# # the repository.
|
|
||||||
# # https://gitea.com/gitea/helm-chart/issues/161
|
|
||||||
# add:
|
|
||||||
# - SYS_CHROOT
|
|
||||||
# privileged: false
|
|
||||||
# readOnlyRootFilesystem: true
|
|
||||||
# runAsGroup: 1000
|
|
||||||
# runAsNonRoot: true
|
|
||||||
# runAsUser: 1000
|
|
||||||
|
|
||||||
## @deprecated The securityContext variable has been split two:
|
|
||||||
## - containerSecurityContext
|
|
||||||
## - podSecurityContext.
|
|
||||||
## @param securityContext Run init and Gitea containers as a specific securityContext
|
|
||||||
securityContext: {}
|
|
||||||
|
|
||||||
## @section Service
|
|
||||||
service:
|
|
||||||
## @param service.http.type Kubernetes service type for web traffic
|
|
||||||
## @param service.http.port Port number for web traffic
|
|
||||||
## @param service.http.clusterIP ClusterIP setting for http autosetup for statefulset is None
|
|
||||||
## @param service.http.loadBalancerIP LoadBalancer IP setting
|
|
||||||
## @param service.http.nodePort NodePort for http service
|
|
||||||
## @param service.http.externalTrafficPolicy If `service.http.type` is `NodePort` or `LoadBalancer`, set this to `Local` to enable source IP preservation
|
|
||||||
## @param service.http.externalIPs External IPs for service
|
|
||||||
## @param service.http.ipFamilyPolicy HTTP service dual-stack policy
|
|
||||||
## @param service.http.ipFamilies HTTP service dual-stack familiy selection,for dual-stack parameters see official kubernetes [dual-stack concept documentation](https://kubernetes.io/docs/concepts/services-networking/dual-stack/).
|
|
||||||
## @param service.http.loadBalancerSourceRanges Source range filter for http loadbalancer
|
|
||||||
## @param service.http.annotations HTTP service annotations
|
|
||||||
http:
|
|
||||||
type: ClusterIP
|
|
||||||
port: 3000
|
|
||||||
clusterIP: None
|
|
||||||
nodePort:
|
|
||||||
externalTrafficPolicy:
|
|
||||||
externalIPs:
|
|
||||||
ipFamilyPolicy:
|
|
||||||
ipFamilies:
|
|
||||||
loadBalancerSourceRanges: []
|
|
||||||
annotations: {}
|
|
||||||
## @param service.ssh.type Kubernetes service type for ssh traffic
|
|
||||||
## @param service.ssh.port Port number for ssh traffic
|
|
||||||
## @param service.ssh.clusterIP ClusterIP setting for ssh autosetup for statefulset is None
|
|
||||||
## @param service.ssh.loadBalancerIP LoadBalancer IP setting
|
|
||||||
## @param service.ssh.nodePort NodePort for ssh service
|
|
||||||
## @param service.ssh.externalTrafficPolicy If `service.ssh.type` is `NodePort` or `LoadBalancer`, set this to `Local` to enable source IP preservation
|
|
||||||
## @param service.ssh.externalIPs External IPs for service
|
|
||||||
## @param service.ssh.ipFamilyPolicy SSH service dual-stack policy
|
|
||||||
## @param service.ssh.ipFamilies SSH service dual-stack familiy selection,for dual-stack parameters see official kubernetes [dual-stack concept documentation](https://kubernetes.io/docs/concepts/services-networking/dual-stack/).
|
|
||||||
## @param service.ssh.hostPort HostPort for ssh service
|
|
||||||
## @param service.ssh.loadBalancerSourceRanges Source range filter for ssh loadbalancer
|
|
||||||
## @param service.ssh.annotations SSH service annotations
|
|
||||||
ssh:
|
|
||||||
type: LoadBalancer
|
|
||||||
port: 2222
|
|
||||||
loadBalancerIP: 192.168.3.3
|
|
||||||
nodePort:
|
|
||||||
externalTrafficPolicy:
|
|
||||||
externalIPs:
|
|
||||||
ipFamilyPolicy:
|
|
||||||
ipFamilies:
|
|
||||||
hostPort:
|
|
||||||
loadBalancerSourceRanges: []
|
|
||||||
annotations: {}
|
|
||||||
|
|
||||||
## @section Ingress
|
|
||||||
## @param ingress.enabled Enable ingress
|
|
||||||
## @param ingress.className Ingress class name
|
|
||||||
## @param ingress.annotations Ingress annotations
|
|
||||||
## @param ingress.hosts[0].host Default Ingress host
|
|
||||||
## @param ingress.hosts[0].paths[0].path Default Ingress path
|
|
||||||
## @param ingress.hosts[0].paths[0].pathType Ingress path type
|
|
||||||
## @param ingress.tls Ingress tls settings
|
|
||||||
## @extra ingress.apiVersion Specify APIVersion of ingress object. Mostly would only be used for argocd.
|
|
||||||
ingress:
|
|
||||||
enabled: false
|
|
||||||
# className: nginx
|
|
||||||
className:
|
|
||||||
annotations:
|
|
||||||
{}
|
|
||||||
# kubernetes.io/ingress.class: nginx
|
|
||||||
# kubernetes.io/tls-acme: "true"
|
|
||||||
hosts:
|
|
||||||
- host: git.example.com
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
tls: []
|
|
||||||
# - secretName: chart-example-tls
|
|
||||||
# hosts:
|
|
||||||
# - git.example.com
|
|
||||||
# Mostly for argocd or any other CI that uses `helm template | kubectl apply` or similar
|
|
||||||
# If helm doesn't correctly detect your ingress API version you can set it here.
|
|
||||||
# apiVersion: networking.k8s.io/v1
|
|
||||||
|
|
||||||
## @section StatefulSet
|
|
||||||
#
|
|
||||||
## @param resources Kubernetes resources
|
|
||||||
resources:
|
|
||||||
{}
|
|
||||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
||||||
# choice for the user. This also increases chances charts run on environments with little
|
|
||||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
||||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
|
|
||||||
## Use an alternate scheduler, e.g. "stork".
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
|
|
||||||
##
|
|
||||||
## @param schedulerName Use an alternate scheduler, e.g. "stork"
|
|
||||||
schedulerName: ""
|
|
||||||
|
|
||||||
## @param nodeSelector NodeSelector for the statefulset
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
## @param tolerations Tolerations for the statefulset
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
## @param affinity Affinity for the statefulset
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
## @param dnsConfig dnsConfig for the statefulset
|
|
||||||
dnsConfig: {}
|
|
||||||
|
|
||||||
## @param priorityClassName priorityClassName for the statefulset
|
|
||||||
priorityClassName: ""
|
|
||||||
|
|
||||||
## @param statefulset.env Additional environment variables to pass to containers
|
|
||||||
## @param statefulset.terminationGracePeriodSeconds How long to wait until forcefully kill the pod
|
|
||||||
## @param statefulset.labels Labels for the statefulset
|
|
||||||
## @param statefulset.annotations Annotations for the Gitea StatefulSet to be created
|
|
||||||
statefulset:
|
|
||||||
env:
|
|
||||||
[]
|
|
||||||
# - name: VARIABLE
|
|
||||||
# value: my-value
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
labels: {}
|
|
||||||
annotations: {}
|
|
||||||
|
|
||||||
## @section Persistence
|
|
||||||
#
|
|
||||||
## @param persistence.enabled Enable persistent storage
|
|
||||||
## @param persistence.existingClaim Use an existing claim to store repository information
|
|
||||||
## @param persistence.size Size for persistence to store repo information
|
|
||||||
## @param persistence.accessModes AccessMode for persistence
|
|
||||||
## @param persistence.labels Labels for the persistence volume claim to be created
|
|
||||||
## @param persistence.annotations Annotations for the persistence volume claim to be created
|
|
||||||
## @param persistence.storageClass Name of the storage class to use
|
|
||||||
## @param persistence.subPath Subdirectory of the volume to mount at
|
|
||||||
persistence:
|
|
||||||
enabled: true
|
|
||||||
existingClaim: gitea-data-nfs
|
|
||||||
|
|
||||||
size: 10Gi
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
labels: {}
|
|
||||||
annotations: {}
|
|
||||||
storageClass:
|
|
||||||
subPath:
|
|
||||||
|
|
||||||
## @param extraVolumes Additional volumes to mount to the Gitea statefulset
|
|
||||||
extraVolumes: []
|
|
||||||
# - name: postgres-ssl-vol
|
|
||||||
# secret:
|
|
||||||
# secretName: gitea-postgres-ssl
|
|
||||||
|
|
||||||
## @param extraContainerVolumeMounts Mounts that are only mapped into the Gitea runtime/main container, to e.g. override custom templates.
|
|
||||||
extraContainerVolumeMounts: []
|
|
||||||
|
|
||||||
## @param extraInitVolumeMounts Mounts that are only mapped into the init-containers. Can be used for additional preconfiguration.
|
|
||||||
extraInitVolumeMounts: []
|
|
||||||
|
|
||||||
## @deprecated The extraVolumeMounts variable has been split two:
|
|
||||||
## - extraContainerVolumeMounts
|
|
||||||
## - extraInitVolumeMounts
|
|
||||||
## As an example, can be used to mount a client cert when connecting to an external Postgres server.
|
|
||||||
## @param extraVolumeMounts **DEPRECATED** Additional volume mounts for init containers and the Gitea main container
|
|
||||||
extraVolumeMounts: []
|
|
||||||
# - name: postgres-ssl-vol
|
|
||||||
# readOnly: true
|
|
||||||
# mountPath: "/pg-ssl"
|
|
||||||
|
|
||||||
## @section Init
|
|
||||||
## @param initPreScript Bash shell script copied verbatim to the start of the init-container.
|
|
||||||
initPreScript: ""
|
|
||||||
#
|
|
||||||
# initPreScript: |
|
|
||||||
# mkdir -p /data/git/.postgresql
|
|
||||||
# cp /pg-ssl/* /data/git/.postgresql/
|
|
||||||
# chown -R git:git /data/git/.postgresql/
|
|
||||||
# chmod 400 /data/git/.postgresql/postgresql.key
|
|
||||||
|
|
||||||
## @param initContainers.resources.limits initContainers.limits Kubernetes resource limits for init containers
|
|
||||||
## @param initContainers.resources.requests.cpu initContainers.requests.cpu Kubernetes cpu resource limits for init containers
|
|
||||||
## @param initContainers.resources.requests.memory initContainers.requests.memory Kubernetes memory resource limits for init containers
|
|
||||||
initContainers:
|
|
||||||
resources:
|
|
||||||
limits: {}
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 128Mi
|
|
||||||
|
|
||||||
# Configure commit/action signing prerequisites
|
|
||||||
## @section Signing
|
|
||||||
#
|
|
||||||
## @param signing.enabled Enable commit/action signing
|
|
||||||
## @param signing.gpgHome GPG home directory
|
|
||||||
## @param signing.privateKey Inline private gpg key for signed Gitea actions
|
|
||||||
## @param signing.existingSecret Use an existing secret to store the value of `signing.privateKey`
|
|
||||||
signing:
|
|
||||||
enabled: false
|
|
||||||
gpgHome: /data/git/.gnupg
|
|
||||||
privateKey: ""
|
|
||||||
# privateKey: |-
|
|
||||||
# -----BEGIN PGP PRIVATE KEY BLOCK-----
|
|
||||||
# ...
|
|
||||||
# -----END PGP PRIVATE KEY BLOCK-----
|
|
||||||
existingSecret: ""
|
|
||||||
|
|
||||||
## @section Gitea
|
|
||||||
#
|
|
||||||
gitea:
|
|
||||||
## @param gitea.admin.username Username for the Gitea admin user
|
|
||||||
## @param gitea.admin.existingSecret Use an existing secret to store admin user credentials
|
|
||||||
## @param gitea.admin.password Password for the Gitea admin user
|
|
||||||
## @param gitea.admin.email Email for the Gitea admin user
|
|
||||||
admin:
|
|
||||||
# existingSecret: gitea-admin-secret
|
|
||||||
existingSecret:
|
|
||||||
username: gitea_admin
|
|
||||||
password: r8sA8CPHD9!bt6d
|
|
||||||
email: "gitea@local.domain"
|
|
||||||
|
|
||||||
## @param gitea.metrics.enabled Enable Gitea metrics
|
|
||||||
## @param gitea.metrics.serviceMonitor.enabled Enable Gitea metrics service monitor
|
|
||||||
metrics:
|
|
||||||
enabled: false
|
|
||||||
serviceMonitor:
|
|
||||||
enabled: false
|
|
||||||
# additionalLabels:
|
|
||||||
# prometheus-release: prom1
|
|
||||||
|
|
||||||
## @param gitea.ldap LDAP configuration
|
|
||||||
ldap:
|
|
||||||
[]
|
|
||||||
# - name: "LDAP 1"
|
|
||||||
# existingSecret:
|
|
||||||
# securityProtocol:
|
|
||||||
# host:
|
|
||||||
# port:
|
|
||||||
# userSearchBase:
|
|
||||||
# userFilter:
|
|
||||||
# adminFilter:
|
|
||||||
# emailAttribute:
|
|
||||||
# bindDn:
|
|
||||||
# bindPassword:
|
|
||||||
# usernameAttribute:
|
|
||||||
# publicSSHKeyAttribute:
|
|
||||||
|
|
||||||
# Either specify inline `key` and `secret` or refer to them via `existingSecret`
|
|
||||||
## @param gitea.oauth OAuth configuration
|
|
||||||
oauth:
|
|
||||||
[]
|
|
||||||
# - name: 'OAuth 1'
|
|
||||||
# provider:
|
|
||||||
# key:
|
|
||||||
# secret:
|
|
||||||
# existingSecret:
|
|
||||||
# autoDiscoverUrl:
|
|
||||||
# useCustomUrls:
|
|
||||||
# customAuthUrl:
|
|
||||||
# customTokenUrl:
|
|
||||||
# customProfileUrl:
|
|
||||||
# customEmailUrl:
|
|
||||||
|
|
||||||
## @param gitea.config Configuration for the Gitea server,ref: [config-cheat-sheet](https://docs.gitea.io/en-us/config-cheat-sheet/)
|
|
||||||
config:
|
|
||||||
APP_NAME: "Remy's personal git hosting"
|
|
||||||
server:
|
|
||||||
DOMAIN: git.kluster.moll.re
|
|
||||||
ROOT_URL: https://git.kluster.moll.re
|
|
||||||
SSH_LISTEN_PORT: 2222
|
|
||||||
actions:
|
|
||||||
ENABLED: true
|
|
||||||
|
|
||||||
|
|
||||||
## @param gitea.additionalConfigSources Additional configuration from secret or configmap
|
|
||||||
additionalConfigSources: []
|
|
||||||
# - secret:
|
|
||||||
# secretName: gitea-app-ini-oauth
|
|
||||||
# - configMap:
|
|
||||||
# name: gitea-app-ini-plaintext
|
|
||||||
|
|
||||||
## @param gitea.additionalConfigFromEnvs Additional configuration sources from environment variables
|
|
||||||
additionalConfigFromEnvs: []
|
|
||||||
|
|
||||||
## @param gitea.podAnnotations Annotations for the Gitea pod
|
|
||||||
podAnnotations: {}
|
|
||||||
|
|
||||||
## @param gitea.ssh.logLevel Configure OpenSSH's log level. Only available for root-based Gitea image.
|
|
||||||
ssh:
|
|
||||||
logLevel: "INFO"
|
|
||||||
|
|
||||||
## @section LivenessProbe
|
|
||||||
#
|
|
||||||
## @param gitea.livenessProbe.enabled Enable liveness probe
|
|
||||||
## @param gitea.livenessProbe.tcpSocket.port Port to probe for liveness
|
|
||||||
## @param gitea.livenessProbe.initialDelaySeconds Initial delay before liveness probe is initiated
|
|
||||||
## @param gitea.livenessProbe.timeoutSeconds Timeout for liveness probe
|
|
||||||
## @param gitea.livenessProbe.periodSeconds Period for liveness probe
|
|
||||||
## @param gitea.livenessProbe.successThreshold Success threshold for liveness probe
|
|
||||||
## @param gitea.livenessProbe.failureThreshold Failure threshold for liveness probe
|
|
||||||
# Modify the liveness probe for your needs or completely disable it by commenting out.
|
|
||||||
livenessProbe:
|
|
||||||
enabled: true
|
|
||||||
tcpSocket:
|
|
||||||
port: http
|
|
||||||
initialDelaySeconds: 200
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
failureThreshold: 10
|
|
||||||
|
|
||||||
## @section ReadinessProbe
|
|
||||||
#
|
|
||||||
## @param gitea.readinessProbe.enabled Enable readiness probe
|
|
||||||
## @param gitea.readinessProbe.tcpSocket.port Port to probe for readiness
|
|
||||||
## @param gitea.readinessProbe.initialDelaySeconds Initial delay before readiness probe is initiated
|
|
||||||
## @param gitea.readinessProbe.timeoutSeconds Timeout for readiness probe
|
|
||||||
## @param gitea.readinessProbe.periodSeconds Period for readiness probe
|
|
||||||
## @param gitea.readinessProbe.successThreshold Success threshold for readiness probe
|
|
||||||
## @param gitea.readinessProbe.failureThreshold Failure threshold for readiness probe
|
|
||||||
# Modify the readiness probe for your needs or completely disable it by commenting out.
|
|
||||||
readinessProbe:
|
|
||||||
enabled: true
|
|
||||||
tcpSocket:
|
|
||||||
port: http
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
failureThreshold: 3
|
|
||||||
|
|
||||||
# # Uncomment the startup probe to enable and modify it for your needs.
|
|
||||||
## @section StartupProbe
|
|
||||||
#
|
|
||||||
## @param gitea.startupProbe.enabled Enable startup probe
|
|
||||||
## @param gitea.startupProbe.tcpSocket.port Port to probe for startup
|
|
||||||
## @param gitea.startupProbe.initialDelaySeconds Initial delay before startup probe is initiated
|
|
||||||
## @param gitea.startupProbe.timeoutSeconds Timeout for startup probe
|
|
||||||
## @param gitea.startupProbe.periodSeconds Period for startup probe
|
|
||||||
## @param gitea.startupProbe.successThreshold Success threshold for startup probe
|
|
||||||
## @param gitea.startupProbe.failureThreshold Failure threshold for startup probe
|
|
||||||
startupProbe:
|
|
||||||
enabled: false
|
|
||||||
tcpSocket:
|
|
||||||
port: http
|
|
||||||
initialDelaySeconds: 60
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
failureThreshold: 10
|
|
||||||
|
|
||||||
## @section Memcached
|
|
||||||
#
|
|
||||||
## @param memcached.enabled Memcached is loaded as a dependency from [Bitnami](https://github.com/bitnami/charts/tree/master/bitnami/memcached) if enabled in the values. Complete Configuration can be taken from their website.
|
|
||||||
## ref: https://hub.docker.com/r/bitnami/memcached/tags/
|
|
||||||
## @param memcached.service.ports.memcached Port for Memcached
|
|
||||||
memcached:
|
|
||||||
enabled: true
|
|
||||||
# image:
|
|
||||||
# registry: docker.io
|
|
||||||
# repository: bitnami/memcached
|
|
||||||
# tag: ""
|
|
||||||
# digest: ""
|
|
||||||
# pullPolicy: IfNotPresent
|
|
||||||
# pullSecrets: []
|
|
||||||
service:
|
|
||||||
ports:
|
|
||||||
memcached: 11211
|
|
||||||
|
|
||||||
## @section PostgreSQL
|
|
||||||
#
|
|
||||||
## @param postgresql.enabled Enable PostgreSQL
|
|
||||||
## @param postgresql.global.postgresql.auth.password Password for the `gitea` user (overrides `auth.password`)
|
|
||||||
## @param postgresql.global.postgresql.auth.database Name for a custom database to create (overrides `auth.database`)
|
|
||||||
## @param postgresql.global.postgresql.auth.username Name for a custom user to create (overrides `auth.username`)
|
|
||||||
## @param postgresql.global.postgresql.service.ports.postgresql PostgreSQL service port (overrides `service.ports.postgresql`)
|
|
||||||
## @param postgresql.primary.persistence.size PVC Storage Request for PostgreSQL volume
|
|
||||||
postgresql:
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
tag: 11
|
|
||||||
# diagnosticMode:
|
|
||||||
# enabled: true
|
|
||||||
# containerSecurityContext:
|
|
||||||
# runAsUser: 0
|
|
||||||
global:
|
|
||||||
postgresql:
|
|
||||||
auth:
|
|
||||||
password: gitea
|
|
||||||
database: gitea
|
|
||||||
username: gitea
|
|
||||||
service:
|
|
||||||
ports:
|
|
||||||
postgresql: 5432
|
|
||||||
primary:
|
|
||||||
persistence:
|
|
||||||
size: 10Gi
|
|
||||||
existingClaim: gitea-postgresql-data-nfs
|
|
||||||
mountPath: /bitnami/postgresql/data
|
|
||||||
|
|
||||||
|
|
||||||
# By default, removed or moved settings that still remain in a user defined values.yaml will cause Helm to fail running the install/update.
|
|
||||||
# Set it to false to skip this basic validation check.
|
|
||||||
## @section Advanced
|
|
||||||
## @param checkDeprecation Set it to false to skip this basic validation check.
|
|
||||||
## @param test.enabled Set it to false to disable test-connection Pod.
|
|
||||||
## @param test.image.name Image name for the wget container used in the test-connection Pod.
|
|
||||||
## @param test.image.tag Image tag for the wget container used in the test-connection Pod.
|
|
||||||
checkDeprecation: true
|
|
||||||
test:
|
|
||||||
enabled: true
|
|
||||||
image:
|
|
||||||
name: busybox
|
|
||||||
tag: latest
|
|
||||||
|
|
||||||
## @param extraDeploy Array of extra objects to deploy with the release
|
|
||||||
##
|
|
||||||
extraDeploy: []
|
|
17
apps/grafana/grafana-admin.sealedsecret.yaml
Normal file
17
apps/grafana/grafana-admin.sealedsecret.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: grafana-admin-secret
|
||||||
|
namespace: grafana
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
password: AgAU6g/CwKj+1gPpt4DLvLsS0YCvJdVHWw4W4bRhibE9brVvcJtGB3D9MTJrSLVVwusaE6OR59og7oW5ge3yTd/9bbclXYLrxEi7OwvkQjCvo8MfD8yhJO9nV4Xs9Mjk2Z4SHGYuq6wvcssuJrpz5f0XEC7ocTRA+u0UaE+/b4FrYF71uyKGvj8GSXgLZUjGPFsGfPzwJn7cLBmlclVHx1xGbFpUc042m5Mulpn0QolFQnOwZiW4PL8pQyz1MXVRwCsz0RJd5apZL3XJ4X7BLMoAp+diHQ2xi3zoU9VScp+J2QgvFdRKgDa6v7Jz1f+HCwq5W/DoegwFXBrcMIfF2YrnvTnc1PCVwD9IHOeylO7J2hfi8teQiqTvvRlVgdBTLqoqlVovemf5k6ke6JfjTwnsJjTNnL7MKN5Qt0o7N2XRZ3ba9jp8cKbI7fyFQKaU2QEf2PIkp82kEnixmpA1aATgeA3W4E5Km7sKHUEB81+pwnOe54tzD2ShgQX/+UiswhWYTT+gdZKL1udBBemUDC0z9PSJNTPTy+hq+G4CIzVQUYxlioM3c+3geF7YLU8yXisj84pk44GN9KX3z5x+M2+LZL7agAWPUjxtrP2V+id7dNJQfCm0aSMeo57dVfb4zlBUAAgKIKjX+j1KqCVqE9zEO2F/QX7mY6MJTP2me3wmY7JAVRJ7d6bbkyyoDhs8JErLYLp0A+Eh+qx8nWgM9ErPVSA0
|
||||||
|
user: AgB8ZLG2EuERjg1nKdH/xadbUuIR2c8a9gF5fE8ctrp4DNDLLuuqmjyoHRiWpkrtfnE1yKg1rPP+asV9Lj5iVmE9J+OB3QUOeFS4MHciBNj7pa68zfFgnHP4kxMX6aXyKRQrYruYjHwfzCpOM1zyTEphuGlnokjQXxjF/mZsoM2NWn7WGReqfxqH95tJXfs9AUC5vVv/PHqd+KKRZH7+G1AnWVJ7RFQHedR7wyftO4/rkm8deMuZWtOLl25fAOyOr7+hSqT69s9/uTKSLJXjobSqtulqsR+v5lkwx2ThNKzmcEcuoenKG6lk8XLRSIscccZH3JTPh6IknQWUOC4nmYj+XUxE8Go0RX/4eL+D/6FrYrtp0gr3HOCLAGU4vAHMeKfJoyqykJVnvY6QY6bFgaziyOlWaoEHpg6g0vHHDwyX7HIDcQfJZGOLH9dhrWJ2sOkzyuuxfqWEgz/M2eBW4EUAudHwfTLPocSMUI+D6fjeciMojet5uxWMP7ZHh/E061f5+Vfk6CKYd9Kpi69Xah8KEyyHYP5NImkdIwjgllaEAd/FBE2+QJyTVZlUQC7y9ObagDMCUFaFbTS5QOLh5BOJDL5buEYFWG0IhoH47SC/pKeEOQH//uvoo27K9zvxTOQN1YOTrxCozmexMOsTIdhvU0dOnJDBrThSHKYLCeIokDOgUUT52FqDH51RoLoK3UkyGbMoq+M=
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: grafana-admin-secret
|
||||||
|
namespace: grafana
|
||||||
|
type: Opaque
|
16
apps/grafana/grafana-auth.sealedsecret.yaml
Normal file
16
apps/grafana/grafana-auth.sealedsecret.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: grafana-auth
|
||||||
|
namespace: grafana
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
client_secret: AgCEdC1/ERlPQyQP+bd9gcW33Yrvl4uRbx+RF5AY4vYAquOzxmLTygMl/WZlB5wlCE5idIHgto6/fUWVZrQbmfClRqsW2pFoddKQAtS9cQNXwMjLCm7e0lXk9GM9O3ZwktmklFbCu8XewHmefGHhoJ28vPxPMaINv1fM4zYKvNz5RHf0dJfTHgxb68wRYjAbE/eJpRcVE3a29Yw6Gfa8Mb+cFI7RTHvjuv9LBgWqM6b3qvvJ4wYR2WKuiQrnJ5xAtHpMAI/2R80qq151wlaZueDZ1PwjRBHURkmPTmwZnrMrmIugNge7Tpww+ArZlG9kDfSu1aTJidbXbcpN6fyt1qARTCYrBlbn60PTYLnPL/NObvMCpjS6DsYsYz7MJ7WoOupu46Ib5paZHmak+CilC6lb9LjJj4EKfRsagZmWT07JavhHBW/tqjB3GToccIz4fOAOdA9aU51J4wCL2ctp2SgzCEKe2EaBK/f9nDd9ASmmon9PDwRDVtG8yTukrNcZHNzodi09Af81DB0RNa36Z3Sjt5xu94paN+mjiOWGf2JduVEq+60NbPvDbPE9e1aVH3DdQcij2WGZaTE8dAGLSsLoOkIq3m2E+Mbk1Re1gI9H18xJM72ivb5uDe7pzReyvO5DY4Pfq8JgQhPxWcDq9ScmWS6Bb+jdCKytFq5NafSAl+akPbbwN+1GFu33if/P5D9I2TwOA8V1wyVU
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: grafana-auth
|
||||||
|
namespace: grafana
|
||||||
|
type: Opaque
|
@@ -1,5 +1,5 @@
|
|||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
metadata:
|
metadata:
|
||||||
name: grafana-ingress
|
name: grafana-ingress
|
||||||
spec:
|
spec:
|
||||||
@@ -13,5 +13,3 @@ spec:
|
|||||||
port: 80
|
port: 80
|
||||||
tls:
|
tls:
|
||||||
certResolver: default-tls
|
certResolver: default-tls
|
||||||
|
|
||||||
|
|
99
apps/grafana/grafana.values.yaml
Normal file
99
apps/grafana/grafana.values.yaml
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
replicas: 1
|
||||||
|
|
||||||
|
## Create a headless service for the deployment
|
||||||
|
headlessService: false
|
||||||
|
|
||||||
|
## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
|
||||||
|
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/services/
|
||||||
|
##
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
serviceMonitor:
|
||||||
|
## If true, a ServiceMonitor CRD is created for a prometheus operator
|
||||||
|
## https://github.com/coreos/prometheus-operator
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
envValueFrom:
|
||||||
|
AUTH_GRAFANA_CLIENT_SECRET:
|
||||||
|
secretKeyRef:
|
||||||
|
name: grafana-auth
|
||||||
|
key: client_secret
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# credentials
|
||||||
|
admin:
|
||||||
|
existingSecret: grafana-admin-secret
|
||||||
|
userKey: user
|
||||||
|
passwordKey: password
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
datasources.yaml:
|
||||||
|
apiVersion: 1
|
||||||
|
datasources:
|
||||||
|
- name: Prometheus
|
||||||
|
type: prometheus
|
||||||
|
url: http://prometheus.monitoring.svc:9090
|
||||||
|
isDefault: true
|
||||||
|
- name: Thanos
|
||||||
|
type: prometheus
|
||||||
|
url: http://thanos-querier.monitoring.svc:10902
|
||||||
|
isDefault: false
|
||||||
|
- name: Loki
|
||||||
|
type: loki
|
||||||
|
url: http://loki.monitoring.svc:3100
|
||||||
|
isDefault: false
|
||||||
|
|
||||||
|
dashboardProviders:
|
||||||
|
dashboardproviders.yaml:
|
||||||
|
apiVersion: 1
|
||||||
|
providers:
|
||||||
|
- name: 'default'
|
||||||
|
orgId: 1
|
||||||
|
folder: ''
|
||||||
|
type: file
|
||||||
|
disableDeletion: false
|
||||||
|
editable: true
|
||||||
|
options:
|
||||||
|
path: /var/lib/grafana/dashboards/default
|
||||||
|
## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.
|
||||||
|
## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.
|
||||||
|
## ConfigMap data example:
|
||||||
|
##
|
||||||
|
## data:
|
||||||
|
## example-dashboard.json: |
|
||||||
|
## RAW_JSON
|
||||||
|
##
|
||||||
|
dashboardsConfigMaps:
|
||||||
|
default: grafana-dashboards
|
||||||
|
|
||||||
|
|
||||||
|
grafana.ini:
|
||||||
|
wal: true
|
||||||
|
default_theme: dark
|
||||||
|
unified_alerting:
|
||||||
|
enabled: false
|
||||||
|
analytics:
|
||||||
|
check_for_updates: false
|
||||||
|
server:
|
||||||
|
domain: grafana.kluster.moll.re
|
||||||
|
root_url: https://grafana.kluster.moll.re
|
||||||
|
auth.generic_oauth:
|
||||||
|
name: Authelia
|
||||||
|
enabled: true
|
||||||
|
icon: signin
|
||||||
|
client_id: grafana
|
||||||
|
client_secret: ${AUTH_GRAFANA_CLIENT_SECRET}
|
||||||
|
scopes: openid profile email groups
|
||||||
|
empty_scopes: false
|
||||||
|
auth_url: https://auth.kluster.moll.re/api/oidc/authorization
|
||||||
|
token_url: https://auth.kluster.moll.re/api/oidc/token
|
||||||
|
api_url: https://auth.kluster.moll.re/api/oidc/userinfo
|
||||||
|
tls_skip_verify_insecure: true
|
||||||
|
auto_login: true
|
||||||
|
use_pkce: true
|
||||||
|
role_attribute_path: contains(groups[*], 'apps_admin') && 'Admin' || 'Editor'
|
21
apps/grafana/kustomization.yaml
Normal file
21
apps/grafana/kustomization.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
namespace: grafana
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- grafana.ingress.yaml
|
||||||
|
- grafana-admin.sealedsecret.yaml
|
||||||
|
- grafana-auth.sealedsecret.yaml
|
||||||
|
# grafana dashboards are provisioned from a git repository
|
||||||
|
# in the initial bootstrap of the app of apps, the git repo won't be available, so this sync will initially fail
|
||||||
|
- https://git.kluster.moll.re/remoll/grafana-dashboards//?timeout=10&ref=main
|
||||||
|
|
||||||
|
|
||||||
|
helmCharts:
|
||||||
|
- releaseName: grafana
|
||||||
|
name: grafana
|
||||||
|
repo: https://grafana.github.io/helm-charts
|
||||||
|
version: 9.2.10
|
||||||
|
valuesFile: grafana.values.yaml
|
4
apps/grafana/namespace.yaml
Normal file
4
apps/grafana/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
@@ -15,14 +14,14 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: homeassistant
|
- name: homeassistant
|
||||||
image: homeassistant/home-assistant:2023.11
|
image: homeassistant
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8123
|
- containerPort: 8123
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: Europe/Berlin
|
value: Europe/Berlin
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: config
|
- name: config-dir
|
||||||
mountPath: /config
|
mountPath: /config
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -32,6 +31,7 @@ spec:
|
|||||||
cpu: "2"
|
cpu: "2"
|
||||||
memory: "1Gi"
|
memory: "1Gi"
|
||||||
volumes:
|
volumes:
|
||||||
- name: config
|
- name: config-dir
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: homeassistant-nfs
|
claimName: config
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: homeassistant-ingress
|
name: homeassistant-ingress
|
||||||
@@ -6,7 +6,7 @@ spec:
|
|||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
routes:
|
routes:
|
||||||
- match: Host(`home.kluster.moll.re`)
|
- match: Host(`home.kluster.moll.re`) && !Path(`/api/prometheus`)
|
||||||
middlewares:
|
middlewares:
|
||||||
- name: homeassistant-websocket
|
- name: homeassistant-websocket
|
||||||
kind: Rule
|
kind: Rule
|
||||||
@@ -15,9 +15,8 @@ spec:
|
|||||||
port: 8123
|
port: 8123
|
||||||
tls:
|
tls:
|
||||||
certResolver: default-tls
|
certResolver: default-tls
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: Middleware
|
kind: Middleware
|
||||||
metadata:
|
metadata:
|
||||||
name: homeassistant-websocket
|
name: homeassistant-websocket
|
||||||
@@ -27,6 +26,3 @@ spec:
|
|||||||
X-Forwarded-Proto: "https"
|
X-Forwarded-Proto: "https"
|
||||||
# enable websockets
|
# enable websockets
|
||||||
Upgrade: "websocket"
|
Upgrade: "websocket"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,18 +1,18 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
|
||||||
- namespace.yaml
|
|
||||||
- ingress.yaml
|
|
||||||
- pvc.yaml
|
|
||||||
- service.yaml
|
|
||||||
- deployment.yaml
|
|
||||||
|
|
||||||
namespace: homeassistant
|
namespace: homeassistant
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- service.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- servicemonitor.yaml
|
||||||
|
|
||||||
# helmCharts:
|
|
||||||
# - name: home-assistant
|
images:
|
||||||
# releaseName: homeassistant
|
- name: homeassistant
|
||||||
# version: 13.4.2
|
newName: homeassistant/home-assistant
|
||||||
# valuesFile: values.yaml
|
newTag: "2025.7"
|
||||||
# repo: https://k8s-at-home.com/charts/
|
|
||||||
|
@@ -1,28 +1,11 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: homeassistant-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: slow
|
|
||||||
capacity:
|
|
||||||
storage: "1Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /kluster/homeassistant
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: homeassistant-nfs
|
name: config
|
||||||
spec:
|
spec:
|
||||||
storageClassName: ""
|
storageClassName: "nfs-client"
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: "1Gi"
|
storage: "1Gi"
|
||||||
volumeName: homeassistant-nfs
|
|
||||||
|
@@ -2,9 +2,12 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: homeassistant-web
|
name: homeassistant-web
|
||||||
|
labels:
|
||||||
|
app: homeassistant
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: homeassistant
|
app: homeassistant
|
||||||
ports:
|
ports:
|
||||||
- port: 8123
|
- port: 8123
|
||||||
targetPort: 8123
|
targetPort: 8123
|
||||||
|
name: http
|
13
apps/homeassistant/servicemonitor.yaml
Normal file
13
apps/homeassistant/servicemonitor.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
name: homeassistant-servicemonitor
|
||||||
|
labels:
|
||||||
|
app: homeassistant
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: homeassistant
|
||||||
|
endpoints:
|
||||||
|
- port: http
|
||||||
|
path: /api/prometheus
|
@@ -1,136 +0,0 @@
|
|||||||
#
|
|
||||||
# IMPORTANT NOTE
|
|
||||||
#
|
|
||||||
# This chart inherits from our common library chart. You can check the default values/options here:
|
|
||||||
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
|
|
||||||
#
|
|
||||||
|
|
||||||
image:
|
|
||||||
# -- image repository
|
|
||||||
repository: homeassistant/home-assistant
|
|
||||||
# -- image tag
|
|
||||||
tag: "2023.10"
|
|
||||||
# -- image pull policy
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
# -- environment variables.
|
|
||||||
# @default -- See below
|
|
||||||
env:
|
|
||||||
# -- Set the container timezone
|
|
||||||
TZ: Europe/Berlin
|
|
||||||
|
|
||||||
# -- Configures service settings for the chart. Normally this does not need to be modified.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
service:
|
|
||||||
main:
|
|
||||||
ports:
|
|
||||||
http:
|
|
||||||
port: 8123
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
# -- Enable and configure ingress settings for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
main:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
# -- Enable devices to be discoverable
|
|
||||||
# hostNetwork: true
|
|
||||||
|
|
||||||
# -- When hostNetwork is true set dnsPolicy to ClusterFirstWithHostNet
|
|
||||||
# dnsPolicy: ClusterFirstWithHostNet
|
|
||||||
|
|
||||||
securityContext:
|
|
||||||
# -- (bool) Privileged securityContext may be required if USB devics are accessed directly through the host machine
|
|
||||||
privileged: # true
|
|
||||||
|
|
||||||
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: "100m"
|
|
||||||
memory: "200Mi"
|
|
||||||
limits:
|
|
||||||
cpu: "2"
|
|
||||||
memory: "1Gi"
|
|
||||||
|
|
||||||
# -- Configure persistence settings for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
existingClaim: homeassistant-nfs
|
|
||||||
|
|
||||||
# -- Configure a hostPathMount to mount a USB device in the container.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
usb:
|
|
||||||
enabled: false
|
|
||||||
type: hostPath
|
|
||||||
hostPath: /path/to/device
|
|
||||||
|
|
||||||
# -- Enable and configure mariadb database subchart under this key.
|
|
||||||
# For more options see [mariadb chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/mariadb)
|
|
||||||
# @default -- See values.yaml
|
|
||||||
mariadb:
|
|
||||||
enabled: false
|
|
||||||
architecture: standalone
|
|
||||||
auth:
|
|
||||||
database: home-assistant
|
|
||||||
username: home-assistant
|
|
||||||
password: home-assistant-pass
|
|
||||||
rootPassword: home-assistantrootpass
|
|
||||||
primary:
|
|
||||||
persistence:
|
|
||||||
enabled: false
|
|
||||||
# storageClass: ""
|
|
||||||
|
|
||||||
# -- Enable and configure postgresql database subchart under this key.
|
|
||||||
# For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql)
|
|
||||||
# @default -- See values.yaml
|
|
||||||
postgresql:
|
|
||||||
enabled: false
|
|
||||||
image:
|
|
||||||
# -- Enable and configure influxdb database subchart under this key.
|
|
||||||
# For more options see [influxdb chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/influxdb)
|
|
||||||
# @default -- See values.yaml
|
|
||||||
influxdb:
|
|
||||||
enabled: false
|
|
||||||
architecture: standalone
|
|
||||||
database: home_assistant
|
|
||||||
authEnabled: false
|
|
||||||
persistence:
|
|
||||||
enabled: false
|
|
||||||
# storageClass: ""
|
|
||||||
# size: 8Gi
|
|
||||||
|
|
||||||
metrics:
|
|
||||||
# -- Enable and configure a Prometheus serviceMonitor for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
enabled: false
|
|
||||||
serviceMonitor:
|
|
||||||
interval: 1m
|
|
||||||
scrapeTimeout: 30s
|
|
||||||
labels: {}
|
|
||||||
## See https://www.home-assistant.io/docs/authentication/ for where to find
|
|
||||||
## long lived access token creation under your account profile, which is
|
|
||||||
## needed to monitor Home Assistant
|
|
||||||
# bearerTokenSecret:
|
|
||||||
# name: ""
|
|
||||||
# key: ""
|
|
||||||
|
|
||||||
# -- Enable and configure Prometheus Rules for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
prometheusRule:
|
|
||||||
enabled: false
|
|
||||||
labels: {}
|
|
||||||
# -- Configure additionial rules for the chart under this key.
|
|
||||||
# @default -- See prometheusrules.yaml
|
|
||||||
rules: []
|
|
||||||
# - alert: HomeAssistantAbsent
|
|
||||||
# annotations:
|
|
||||||
# description: Home Assistant has disappeared from Prometheus service discovery.
|
|
||||||
# summary: Home Assistant is down.
|
|
||||||
# expr: |
|
|
||||||
# absent(up{job=~".*home-assistant.*"} == 1)
|
|
||||||
# for: 5m
|
|
||||||
# labels:
|
|
||||||
# severity: critical
|
|
||||||
|
|
39
apps/immich/immich.postgres.yaml
Normal file
39
apps/immich/immich.postgres.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: immich-postgresql
|
||||||
|
spec:
|
||||||
|
instances: 1
|
||||||
|
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:16-0.3.0
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
initdb:
|
||||||
|
owner: immich
|
||||||
|
database: immich
|
||||||
|
secret:
|
||||||
|
name: postgres-password
|
||||||
|
dataChecksums: true
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- ALTER USER immich WITH SUPERUSER;
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS vchord CASCADE;
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "cube";
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "earthdistance";
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
shared_preload_libraries:
|
||||||
|
- "vchord.so"
|
||||||
|
|
||||||
|
storage:
|
||||||
|
size: 5Gi
|
||||||
|
storageClass: nfs-client
|
||||||
|
|
||||||
|
monitoring:
|
||||||
|
enablePodMonitor: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 2
|
||||||
|
memory: 1024Mi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 512Mi
|
@@ -1,13 +1,4 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: Middleware
|
|
||||||
metadata:
|
|
||||||
name: stripprefix
|
|
||||||
spec:
|
|
||||||
stripPrefix:
|
|
||||||
prefixes:
|
|
||||||
- /api
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: Middleware
|
kind: Middleware
|
||||||
metadata:
|
metadata:
|
||||||
name: websocket
|
name: websocket
|
||||||
@@ -18,22 +9,21 @@ spec:
|
|||||||
# enable websockets
|
# enable websockets
|
||||||
Upgrade: "websocket"
|
Upgrade: "websocket"
|
||||||
---
|
---
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: immich-ingressroute
|
name: immich-ingressroute
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
routes:
|
routes:
|
||||||
- match: Host(`immich.kluster.moll.re`)
|
- match: Host(`immich.kluster.moll.re`)
|
||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: immich-server
|
- name: immich-server
|
||||||
port: 3001
|
port: 2283
|
||||||
passHostHeader: true
|
middlewares:
|
||||||
middlewares:
|
- name: websocket
|
||||||
- name: websocket
|
tls:
|
||||||
tls:
|
certResolver: default-tls
|
||||||
certResolver: default-tls
|
|
||||||
|
@@ -1,16 +1,34 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
- pvc.yaml
|
- pvc.yaml
|
||||||
- postgres.sealedsecret.yaml
|
- immich.postgres.yaml
|
||||||
|
- postgres.sealedsecret.yaml
|
||||||
|
- servicemonitor.yaml
|
||||||
|
|
||||||
|
|
||||||
namespace: immich
|
namespace: immich
|
||||||
|
|
||||||
|
|
||||||
helmCharts:
|
helmCharts:
|
||||||
- name: immich
|
- name: immich
|
||||||
releaseName: immich
|
releaseName: immich
|
||||||
version: 0.2.0
|
version: 0.9.3
|
||||||
valuesFile: values.yaml
|
valuesFile: values.yaml
|
||||||
repo: https://immich-app.github.io/immich-charts
|
repo: https://immich-app.github.io/immich-charts
|
||||||
|
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: ghcr.io/immich-app/immich-machine-learning
|
||||||
|
newTag: v1.140.1
|
||||||
|
- name: ghcr.io/immich-app/immich-server
|
||||||
|
newTag: v1.140.1
|
||||||
|
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- path: patch-redis-pvc.yaml
|
||||||
|
target:
|
||||||
|
kind: StatefulSet
|
||||||
|
name: immich-redis-master
|
||||||
|
17
apps/immich/patch-redis-pvc.yaml
Normal file
17
apps/immich/patch-redis-pvc.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: immich-redis-master
|
||||||
|
spec:
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: redis-data
|
||||||
|
spec:
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
35
apps/immich/postgres.yaml
Normal file
35
apps/immich/postgres.yaml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: immich-postgres
|
||||||
|
spec:
|
||||||
|
instances: 1
|
||||||
|
imageName: ghcr.io/tensorchord/cloudnative-pgvecto.rs:16.2
|
||||||
|
bootstrap:
|
||||||
|
initdb:
|
||||||
|
owner: immich
|
||||||
|
database: immich
|
||||||
|
secret:
|
||||||
|
name: postgres-password
|
||||||
|
|
||||||
|
# Enable the VECTORS extension
|
||||||
|
postInitSQL:
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "vectors";
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
shared_preload_libraries:
|
||||||
|
- "vectors.so"
|
||||||
|
|
||||||
|
# Persistent storage configuration
|
||||||
|
storage:
|
||||||
|
size: 2Gi
|
||||||
|
pvcTemplate:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
||||||
|
storageClassName: nfs-client
|
||||||
|
volumeMode: Filesystem
|
||||||
|
monitoring:
|
||||||
|
enablePodMonitor: true
|
@@ -1,26 +1,11 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: immich-nfs
|
|
||||||
spec:
|
|
||||||
capacity:
|
|
||||||
storage: "50Gi"
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /kluster/immich
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: immich-nfs
|
name: data
|
||||||
spec:
|
spec:
|
||||||
storageClassName: ""
|
storageClassName: "nfs-client"
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: "50Gi"
|
storage: "100Gi"
|
||||||
volumeName: immich-nfs
|
|
||||||
|
10
apps/immich/renovate.json
Normal file
10
apps/immich/renovate.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"matchDatasources": ["docker"],
|
||||||
|
"matchPackagePrefixes": ["ghcr.io/immich-app/"],
|
||||||
|
"groupName": "Immich containers",
|
||||||
|
"groupSlug": "immich-app-images"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
14
apps/immich/servicemonitor.yaml
Normal file
14
apps/immich/servicemonitor.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
name: immich-service-monitor
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- port: metrics-api
|
||||||
|
scheme: http
|
||||||
|
- port: metrics-ms
|
||||||
|
scheme: http
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/service: immich-server
|
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
REDIS_HOSTNAME: '{{ printf "%s-redis-master" .Release.Name }}'
|
REDIS_HOSTNAME: '{{ printf "%s-redis-master" .Release.Name }}'
|
||||||
DB_HOSTNAME: "postgres-postgresql.postgres"
|
DB_HOSTNAME: "immich-postgresql-rw"
|
||||||
DB_USERNAME:
|
DB_USERNAME:
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: postgres-password
|
name: postgres-password
|
||||||
@@ -22,94 +22,41 @@ env:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: postgres-password
|
name: postgres-password
|
||||||
key: password
|
key: password
|
||||||
TYPESENSE_ENABLED: "{{ .Values.typesense.enabled }}"
|
|
||||||
TYPESENSE_API_KEY: "{{ .Values.typesense.env.TYPESENSE_API_KEY }}"
|
|
||||||
TYPESENSE_HOST: '{{ printf "%s-typesense" .Release.Name }}'
|
|
||||||
IMMICH_WEB_URL: '{{ printf "http://%s-web:3000" .Release.Name }}'
|
|
||||||
IMMICH_SERVER_URL: '{{ printf "http://%s-server:3001" .Release.Name }}'
|
|
||||||
IMMICH_MACHINE_LEARNING_URL: '{{ printf "http://%s-machine-learning:3003" .Release.Name }}'
|
IMMICH_MACHINE_LEARNING_URL: '{{ printf "http://%s-machine-learning:3003" .Release.Name }}'
|
||||||
|
IMMICH_METRICS: true
|
||||||
image:
|
|
||||||
tag: v1.89.0
|
|
||||||
|
|
||||||
immich:
|
immich:
|
||||||
|
metrics:
|
||||||
|
# Enabling this will create the service monitors needed to monitor immich with the prometheus operator
|
||||||
|
enabled: true
|
||||||
persistence:
|
persistence:
|
||||||
# Main data store for all photos shared between different components.
|
# Main data store for all photos shared between different components.
|
||||||
library:
|
library:
|
||||||
# Automatically creating the library volume is not supported by this chart
|
# Automatically creating the library volume is not supported by this chart
|
||||||
# You have to specify an existing PVC to use
|
# You have to specify an existing PVC to use
|
||||||
existingClaim: immich-nfs
|
existingClaim: data
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
postgresql:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
architecture: standalone
|
architecture: standalone
|
||||||
auth:
|
auth:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
typesense:
|
|
||||||
enabled: true
|
|
||||||
env:
|
|
||||||
TYPESENSE_DATA_DIR: /tsdata
|
|
||||||
TYPESENSE_API_KEY: typesense
|
|
||||||
persistence:
|
|
||||||
tsdata:
|
|
||||||
# Enabling typesense persistence is recommended to avoid slow reindexing
|
|
||||||
enabled: true
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 1Gi
|
|
||||||
# storageClass: storage-class
|
|
||||||
image:
|
|
||||||
repository: docker.io/typesense/typesense
|
|
||||||
tag: 0.24.0
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
# Immich components
|
# Immich components
|
||||||
|
|
||||||
server:
|
server:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/immich-app/immich-server
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
main:
|
main:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
microservices:
|
|
||||||
enabled: true
|
|
||||||
env:
|
|
||||||
REVERSE_GEOCODING_DUMP_DIRECTORY: /geodata-cache
|
|
||||||
persistence:
|
|
||||||
geodata-cache:
|
|
||||||
enabled: true
|
|
||||||
size: 1Gi
|
|
||||||
# Optional: Set this to pvc to avoid downloading the geodata every start.
|
|
||||||
type: emptyDir
|
|
||||||
accessMode: ReadWriteMany
|
|
||||||
# storageClass: your-class
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/immich-app/immich-server
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
machine-learning:
|
machine-learning:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
|
||||||
repository: ghcr.io/immich-app/immich-machine-learning
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
TRANSFORMERS_CACHE: /cache
|
|
||||||
persistence:
|
persistence:
|
||||||
cache:
|
cache:
|
||||||
enabled: true
|
enabled: true
|
||||||
size: 10Gi
|
size: 200Gi
|
||||||
# Optional: Set this to pvc to avoid downloading the ML models every start.
|
# Optional: Set this to pvc to avoid downloading the ML models every start.
|
||||||
type: emptyDir
|
type: emptyDir
|
||||||
accessMode: ReadWriteMany
|
accessMode: ReadWriteMany
|
||||||
# storageClass: your-class
|
|
||||||
|
42
apps/kitchenowl/deployment.yaml
Normal file
42
apps/kitchenowl/deployment.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: kitchenowl
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: kitchenowl
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: kitchenowl
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: kitchenowl
|
||||||
|
image: kitchenowl
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Berlin
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: kitchenowl-config
|
||||||
|
- secretRef:
|
||||||
|
name: kitchenowl-oauth
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /data
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "50m"
|
||||||
|
memory: "100Mi"
|
||||||
|
limits:
|
||||||
|
cpu: "100m"
|
||||||
|
memory: "1Gi"
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: kitchenowl-data
|
||||||
|
|
17
apps/kitchenowl/ingress.yaml
Normal file
17
apps/kitchenowl/ingress.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: kitchenowl-ingressroute
|
||||||
|
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`kitchen.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: kitchenowl-web
|
||||||
|
port: 8080
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
7
apps/kitchenowl/kitchenowl-config.configmap.yaml
Normal file
7
apps/kitchenowl/kitchenowl-config.configmap.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: kitchenowl-config
|
||||||
|
data:
|
||||||
|
FRONT_URL: https://kitchen.kluster.moll.re
|
||||||
|
DISABLE_USERNAME_PASSWORD_LOGIN: "true"
|
19
apps/kitchenowl/kitchenowl-oauth.sealedsecret.yaml
Normal file
19
apps/kitchenowl/kitchenowl-oauth.sealedsecret.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: kitchenowl-oauth
|
||||||
|
namespace: kitchenowl
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
JWT_SECRET_KEY: AgAclRIJS25ACVe4NqLQbAree6c6WpTBHnLpe3ZQJ0ScHG/EbW/ooABZj7y1ABAn/mCc+hBYXYHm81FNUfUtSuLKi2UlORbTCsfmisYH49WX0Lpku9LTM/8az9tjE0tjUUrJZcRUuJfdNJMDPQx7IPjUQ7sKk/exFnkPEbK98+AElXyHpPKXd9dxiCgll0n+ksbF9BDUR8KY8IB2Zvh4cXPww578qe/9XYnxLV8uY9K8KPvhl7NI40SIaL4PX8KmsDlBh1bpOR/OxhIwAGEZDQp/KROy6msrIOYW4SHM9nlSUSD4WvV8UjcbV1oNnYpE1usFOuxSfQlJ1zlFepKUv40JykyunvQv9nqVbEogsrS4o5N3gNEaB9yyFSHIlevp32LVpAuZu3cNplmT+Zg7+ODpCWIcVgmOAeapvB+X7H4ScbKVcYLAzrRFDtnS4Vo1M+RERhr0AuMU/tz0lGs99oRkCw2ZIg015R125u0VcRNqzgCtbBM5BFiKiP2kYrHn02Q6o5tRWxDQfrfb0mnfD5c/gM4+btlfM6DZMpr/l1kLlm8PDEpPGbkhK1XiAyJ4erHPDMLcmZXrSyxX9R1g8n7vnLnkqx5LkGmnltQI2FM7StxC6IrMlxY0nPnkq1lHhTz7yCpQJNXgfXZLVvov+f6jlD6WJhYHZCL/hIFfx3ybjGYZwJ0m84lH0OQJQw5dtsbPVqqoYZIPieqdRmHw7M7TTmFuQJXD94lZj5gsln1sMqs=
|
||||||
|
OIDC_CLIENT_ID: AgDOxWtGCiFrIP5aWHimrR6bu0uMS1/i1v1Kzo1lIR3j3zlw/Da2oCPNx1ZuhNAp9UMIs2euc8mtrWkyv4R6pcci+IxXiGzlQNBSkMfWu4DwhwlEdnVyCVehfE00t0ytBxX6NeLfS1b8JOtH9yo3e22fdaeTwn/iwGLNwi1BJxMmzk9pVp7jzXH09Zia8UvUmXw5GyGpIOIiGcIfaXkr1ZnY2l30jTw8eS7HaouzfWHWTpNXkMLN3qim4vs/B1Sgz/y9tUyVo/qMhWLdEcVklYHT7xHx03SPD7RtK+zdYZCqvDtj+tsdpYHt05zeGV+wflNQuiocjwP8TW7vhtbjKrf9lQIxB5CErju178ELOVrpsPBAYMgdEl7qZeKdSpydIwe3VbOg3XJ7O/Ps1KSnRYwrCvgE4ZCMm3geHyJxSiKRhBcuVYz5JkNd5ylD0Eq9NL5RCqJ4szL9NaGNPbzkvcdZzAnbTYFTzyqZ+XHX/BUFisXl5bKNHtaqAsOK8woGYnxJiawKRrwDUmHXU4RB3QiPCPhHSLU7OkvU+XDhyQqLa8bKEQzj9dUf4bX3Savk4noiRsXMYJznAlgMPo0Q4taxVIoyQHELYwIIdP5YRuw27B9wKUR7e2hhu4FTOEcyhwuFql3OuAjq8HJCDX6+COkL2WYFFxWBnbSCYEdzfbMBCHjrUUonijcQluU2VbaHODNMAvB16MRKapAW
|
||||||
|
OIDC_CLIENT_SECRET: AgAylnSUXwInlh/WvyCiFz+8asbCSZA6kk84Rt6l7bHVYw34c58lJHsZK2OvOIlHuaMe/ewnTqxVd0hI1Azl+wd/5NygMYlntKquq0vuzlhLrGc3u+0SOn9N2P6quA3slF9KR94CYsDx9ogy+EsEoA1yrsydB8S0g9W8syraR1MtpM0ZkcJ/D78OZ6qzyXUuBNAZc+iX/r96NvoMiGNYavgG7npOJh/pkKNYPuNkt4zpbAFjVyoCfgZd4V2nmZ6dhEVy8odW+jcsMn6OJ1OZVlPb1beq49lBEcaJqk83ZtKbq2evtBYHw9YAnENVq92ecenw/YL5LXUhOxeN0M9Amo99/O6pQwwrT1mtZqhTTeTIZTAxqmJKgyxGhE4DJUR/s71bc7K9hd2WvdAYnCyVC2uGa0MwXp4V7UuaN9GerldT8lcFxOpRnD7yroqVTqebjAJIkIinp5NNZ2ZP/LCiCwKKHHT19Pchn615WOPTofC6es/spIdQ8a1Nf2J5YzvRjsduFS55U6tMaC7cuV8kqKH9xTTf/sDHt+68wVEAO9koAe1zpO+zR2Pq3VuCnvcDGIwXopXjvyjfujEEhEWZl51PVJLZqtkP5Wg2wHvlgjJBbbIGTrqh4xa9pK7wLDM2hUFx1q/YKqwfP0EGVTc96G8Wermj0DtIqclqFLr54DtxVe+Rr8J4edG6YQ26/seYsrZ1Oq2PejHQt8u9EzQYAtYYlBsw2ujCWys6KrbhaVr3
|
||||||
|
OIDC_ISSUER: AgA2JPd5axkL5YIRA95qm/iH8wgM2J0AjKjgGClWabYJ3UKIk0hi/L/zR+1Pw9Z+6amYXj7Q0FxLqCcNYG+H5ABxnqUi7Gl8gvfVbegaO3q5QiO27g18RMDssNHDSun8PPaxHBvBD68hxgsaXntu8sZavCGdwEK0TzLJi7eH/4jtHlofzfYgaCsGqeOBgvs/q87PVJ/qxazXlY9e7abbRAKl9ZMY7Wga58/IU2HhWwYMvI53yQyGMcKf3XiI9iNHgIcj1+TmlgQo+PRKyopNfzgFbey7on8woQXphY+ioqQ0hyworpxAVoWlvzKKopt1xBDr4zxzkzbWyxtjwPVOOH3iyenZz8tZa/JkNYWxkWHbh0KCs9yUIji3D3shQOFM/NtE17THsQm3NgpZ2lg9ET1v6uXqwfOLiQ+J1JQLwNFnYeruH2lK4EGt2nDCq2VycOIjW4kMpiJ4LiT8gap9HwYjTpAn+opicYn5e9fmpgiHdMPvrsG1m9edg0cbwdSpEelliHnAUfKsxMV2e1fLsga6yrhBLSXIQs8rbURRa6wqVvGoLB86a9Q5Rm94Jfm0Sa9v5LMGRYvqO5LbLrjrR8e/2r17pHQE8ynMQCAW1yVTe09FcgRwYhDUohfThtjIh16sdoC97eUel7fo/POt3atP69JsCIBZstprhVtBIBssmavpIotVqi8F2/yUkhrZR26mH3gsOxkNTEk6XzHHtJRu0cU+BmObTvYgMi3DHg==
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: kitchenowl-oauth
|
||||||
|
namespace: kitchenowl
|
||||||
|
type: Opaque
|
17
apps/kitchenowl/kustomization.yaml
Normal file
17
apps/kitchenowl/kustomization.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- kitchenowl-oauth.sealedsecret.yaml
|
||||||
|
- kitchenowl-config.configmap.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
|
||||||
|
namespace: kitchenowl
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: kitchenowl
|
||||||
|
newName: tombursch/kitchenowl
|
||||||
|
newTag: v0.7.3
|
4
apps/kitchenowl/namespace.yaml
Normal file
4
apps/kitchenowl/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
11
apps/kitchenowl/pvc.yaml
Normal file
11
apps/kitchenowl/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: kitchenowl-data
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
10
apps/kitchenowl/service.yaml
Normal file
10
apps/kitchenowl/service.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: kitchenowl-web
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: kitchenowl
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
targetPort: 8080
|
40
apps/linkding/deployment.yaml
Normal file
40
apps/linkding/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: linkding
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: linkding
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: linkding
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: linkding
|
||||||
|
image: linkding
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Berlin
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: oauth-config
|
||||||
|
|
||||||
|
volumeMounts:
|
||||||
|
- name: linkding-data
|
||||||
|
mountPath: /etc/linkding/data
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m"
|
||||||
|
memory: "200Mi"
|
||||||
|
limits:
|
||||||
|
cpu: "1"
|
||||||
|
memory: "1Gi"
|
||||||
|
volumes:
|
||||||
|
- name: linkding-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: data
|
17
apps/linkding/ingress.yaml
Normal file
17
apps/linkding/ingress.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: linkding-ingressroute
|
||||||
|
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`linkding.kluster.moll.re`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: linkding-web
|
||||||
|
port: 9090
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
16
apps/linkding/kustomization.yaml
Normal file
16
apps/linkding/kustomization.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- service.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- oauth.sealedsecret.yaml
|
||||||
|
|
||||||
|
namespace: linkding
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: linkding
|
||||||
|
newName: sissbruecker/linkding
|
||||||
|
newTag: "1.41.0"
|
4
apps/linkding/namespace.yaml
Normal file
4
apps/linkding/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
22
apps/linkding/oauth.sealedsecret.yaml
Normal file
22
apps/linkding/oauth.sealedsecret.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: oauth-config
|
||||||
|
namespace: linkding
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
LD_ENABLE_OIDC: AgBfiwAdh1RD8gpzzVnF6y3c8kn5NFbms0T74pmj1aaFD0uQd/dqIxrvZxiBMzgqdrrVUCxRlpG3tiJYMpDEVXQPwRj8uuAizYFEP4uuGFpCtErjb+Y+aOdXSPRCVPbIqROiE+qswNT5KkJm6rR3FPckWipiQdzfpoq+G00MARKqzo4sNrx8+JzgoBFbS/tVPej3VdmDy8iceeVCQ2dJs+roRw+jOfCxqiUjHH5SyoZPnCTlmTZcwr3F9gBGEWGyEl0FNVgL/ku7WEL2COeIIE/2r4RWPqZU4DkPtIv/J4Dosxuw7EQnC5kzTgJGB/TF9Mn/FcS7iYQZKATvWzjC/cTdwZ+aG1qZGz87wM4fxQ05GhgEUkVOlGgxlzxk9BUL3l9Xsaa1KTivaQ4dvB/jm3j12b9rPfO2CXB4jPK7Pk1vKbr5icPXa8dyFY4hiJ1PYh/295a7ZM02n3ao4uHw8KSaxK9GxsCFBxr59q+6ZpjOGnTHZvKGfJHn3jEcIT8k89J5gqrlWjLqR50TEJj3jPZ3QDPN/u1Bf0wAoIOGK7jpnwIXQpacudU2pxZNWC2KtdZbcF9QzuOqKVFABmabdCkBtLa34cyZdweBaCfLRg1Ic0yxrWGzctnwM0Rfd+OzsEpLB7GHKllV597znF5QiK3rQrl5TmgHf0jC1OmMsBkNYCRo2AhYsBN5nli0dgD1y028rsW6
|
||||||
|
OIDC_OP_AUTHORIZATION_ENDPOINT: AgBYHGF/D1tzWRy2issyi3oZjYK/m5cuwdlHuqboPBBHybfTwCkvSfWAL8FSGAgoLYWZEwwoGr5GDSCnAWfhoYwVgCxWw7y4IohCkUSrwbzTVwJxoRTeWIilzwAdH2zX3mZJVHTYCQiLTCjv+MPRsF5FZP4+STtgfecK5Fjgb3sIfZa/yazbN6jf7bdaR91yX2iddeZn7B80aQvu3jOkujPX9yCJz/H+1BN35CtC7KLhFrKgw6uvfQi3g90On5uBHwrC53ve4rEvcOgi575WBA3fDYW4RxNb8yxxocQOuqNRa3jUa/RIjOnX9tFoG/QIXY89DUSsgpAZFWIlV4np4KOe4V+xWT1khz2TPRDaakDumkNmE/sAjpYfGX13+88A0N/hO9o2aXJhEXOFZ5eulyAwDdIodMg6lQTG43OhdSZLFfR5TrnzkVR1pIzwPMutgf8jai4dyYK+SV+oyGeZosNpD484gzhjMGkz8Djs7/cADcvJVmGfWWYvjenlfvFC5lK7F+355o9L38fUeG2lhRw8NsPWuzsiH7m6GaSEfEPcdqj/AohArtUnf9cfF04tocPwCuNLeIgR42W+cfapD9g14sN9v4Z7g/5IQSqL2EhNR9xQMoIT9BkBEhI9JR518Yds/Z89Lg0HsMw6UCrkg6um1If80gjHyRa7JrfxzepKifWNn9/suHlhecaeXcSOKMCCFYDtHyvO4/gCe8/PXjyVc/SUZNBDJsDOikVvVJfKqDlEkimfl+BISzkMv5ALxGDHMRc=
|
||||||
|
OIDC_OP_JWKS_ENDPOINT: AgAg+6Ty8o++uc+UfaVNtJviu1A771rtazn9pj7KafqgIx1xNuPtUBwGEScfku8glUy0bS8r7MyMNlUe3sIYfnDKQmmHBVHFoiJ0IjLZP/pV51A4fT2DUrFv9pnIemqjFD2jew5ToXhuHwUc+Y3LvX8M8aPpB/J+DjIIvgKQe2faHyWt4c24jOZaH56xJhI114LIXD0A7Qvq4O7UfpIUNfYSMojTH7VURptL18Mh1YRKJmil1PmRIstX9Smr3ltAG9Rw032v9ISdDmV+OyuhPo1Wk3AU85RdOQ9hZGMSFXQXFEqQUp/N76n875KDUMT4W57//YGFRUrm8w4oB+PlkjGV2pG7DNYVxUZEmi5UXwY8fTI+KljAZHSk/YOSku+gc75hWYXX6s3g/R6/IWmr9sV5O5N0bc3guQ96nnRmjuzb3HebM0hPfPS+6/xn29erTDETs1bvfCQ9oWNMomDsH4FVz5gC+zwrUvUD3Af3TVsU5g+lfOE83+pmMMWcJFn8Z0uldud0jR27o/ftKgBDmUaGi3zCQWJrYxtXehBy9fo0K7QpbYnLHvNnXVX9fGQ0PZNMc8N0wYZUDuhOv114lqfbVR5dHYoger4iT0xC+SHcWGgvyjqb4YI7bfnY+bnh8TLfuI/ttw1l7/ev79/yvjrtgPuBwN9ygUxENLR2Ur1Cc/u72d+ST4NIg5esth+y9Z2JdP/3+nlYctnyakWhEkUyBPK+5Iyacv29t1bMXoesB6Ub5WsXaw==
|
||||||
|
OIDC_OP_TOKEN_ENDPOINT: AgBRpyDYbQlq7dcqJ2Gd+CfSRZRgvpuUsIngAXX85dt0dChYhQ/YvnFl9r3GqsXNBrWQBa0uE7t+uXxo+oobjgfSibq28kQBL92PM/s7OctINTJBN3q0Gdv43vnliS69/WR21kZkLuAmPne1nL+FZJXavIUF8N6CX3gKb4WMdv+Rl4AAmUo9vsB1C7mxDcS1CppUeJ8KdF5qkb8Xag28Lv2rDA7W9Ne+tNGFi4q/UWqdU76iUxrHu/Kfg6RD0rYlOaW+0b3A5Rvj5oU8ho1Z/eIsA9NaZNYBQjtGAk9fiD2EB9IcFi6kYv5zGZsRcPTzMv/35Wh+lV8I3mDRGcfkmzQsZ8Hcfx7c3zpemZqvY7LMgrvO5AatWKYZUFPsTcaT/mVFmAaVuq5PqeuCQhqekug3rdQxxf2n1cWMMnbptf4g19oTFKx3FtXImpPk97Iv9RbMATKHE/nnfin5/7PtQNn9VBBW785hzzB7cs+IiEzdjGu7MnFlKaGEoS94eZtgLSEmpIMeXFW6V0rXHQ6J+CUjBjiEpAh6LKsh4De+IrWFuzAYH0jwowuY2r4VX3jx+Yv8SFEJ5AfDYbvx8qX1zy1dGfsQvrAai298QCOTizLmeuJLMIC0qlNLZWrYhf8XzF2/N8/bC0R0Pyr+6Jxo8HrtHyFcnl8ckHycWosCOkQmQIbX+vOffOpQ6vYUkHM4MqIAiTl6G+bxjtxBZUTXvqX1sKCEO7pccL8gJZQ+ICN9nP785JAd4eW2JeGW
|
||||||
|
OIDC_OP_USER_ENDPOINT: AgBD4amxFPHYQR6JWjNTsPM63NNI+f9DgZ9+whv5f3bUo7KNtB05vAYYQtAdMYJR+5499S6t0BYwOi4cNxQVJyga1bKogqih3EI/QlJeLvoFvDFj2wEMmCkT5MS+qemtPJwXK7JTHzUFX74b+S/a30/mvWKkMRHzc+G+E678/RDIScFJFssfJVMJB4Kp9T4y+v9jJAKZRixkx2lOR48JR5umXwxm+xQGaexeJOv0MZY4Am4P/nJcWM+Gk1Ka/ih+VAJRLsu9dgvShytQ1OHaAPMRu6H7Wb2bLrzpz4rTcGbZA3aTgHfItjWQpBV3fhNvyNW8QRbRFSyxHBC4snqW5Bl77u4KdMicwL/0x1JhwP6cx+/TVEyZ2n+5Y5PyOW+E7LXtiZGZ/eRw3xVLxvrFDwY0EBMqAUWHyQjwlZLctjxgBud5XDtT4athaNq5hnCELMepRI05kF+o5ECxKWoFXN5rXrwrlcgftCV9PTZbP8pkxyau8O28C4YX07J65G9ntV3VIg9tAXww6X68YHIQEdAgjNOI1soWt15q582OlhXBTTKAf/QU7mrSCn5FH0Q4Z7VLIsJwMz0orGB69Qxo/lLF7z+pQEE4PArceoLi7cffQV/+VzUBOACDdfKFiN3LTDuoMm6lvkAOdmzXccmXlEGvNEwLR+8Ac26Ld4fAnEFSLIJpwQHheIQRY19qbN5+cOa+RmuOroxWWA2P/8uSlp4kXVvAmPJOt8PprI3h8iRG5zBv+J8kE8wpI1scJdDr
|
||||||
|
OIDC_RP_CLIENT_ID: AgCOGuVP8BVfAT5FRmmJLptdv+8vtppOgpzJ2LXU3vR3sjQE4MLKgWwoAyrnkAa2IMrsmkg5+pyHBDlp1AMba3OTVZmhyEVLrFe/vCiL45hEaW2l6kiwlIW3nZnoJlGG2Ugj4SX8YCQGlyr19vEFcPdieWlKpHfda/EP4xYhXMSzXCxFCtT7uGjgnBlrV0uXeFCezYGzvmA4SbDli7fvGv5H85cwgUlMdSn2ZIP3DAxQ8gP0ETF6KaOK5QVP0e/7kw9SK3oo4XHE2c8AjHLFFnmz/uf07+7LuOunSqunolbVy+Lm2mHHnzx+0PBmMYvl7FHY/TkBZaVjVaZtrELbFYaraop8iE6hFMvOYNa/1BFY1x0aeRfPb0jt5IPnuebllnEh4P7JUQxef4Bqbjp8u7P+uOBWnQbeMEp5F3rWE8qy09NnjsKPz87Jw9pb0aPgXWLKVHjJpArhcb6gTJLESCw9kgT+c0pYI0s3BYmwNkJ+6wxflvTLb5z3YyY5/+8/s3PgDz6Hj4tyA8tBru/KQwnBVMw0GhF5YwlZ4SYHPwVX+ZMj9UQc6swNsrxKLqs5Ci7KjvzEDUJ4/aW+rv8naoCiebIJrbmLB8iSqNGh90s1S9BJsQaWXbKYday3spt0eg+tH/iQgAnUAjd9RK3TxkkmWVjmeUc/rOltsbaIvy6/WdyKnF8/f9B03Pm5eal73yC7reFyGYiXvA==
|
||||||
|
OIDC_RP_CLIENT_SECRET: AgA+Q9osGcUgiGsyPfHph3vGiNBjmL7pK3JlaE4PoI+eGsvb+3Ozf9KnfHSMm2R0fq/eukFn6i25MZ/mKYliVSIcjWbnGDFSysiCAwirKTUXoFUo87zmguNUPr8Rr45m1AIaJb31T4MKeFQRHSg715rs/6fKlbejUWUBZuMTN1DXkWr+00atj0JmmZPScSfRmwKNsHnoZCUWFE/DaFChpoCU4fCp5vL9P2LcdzsY84vue8y7Trg0e/LpEi6+DzSoxurE9jwjoUauXmZnOSW3jFgy+u5c9Oa3RC+IB/UUsmHI8eUVOXGdQsSFufrAMd1uyPRa2g+aCX0zX5boZC9dTGqaT+D/6xXnMFsvw5K+K4Y/QZ+j9ZHx0232sPCFVi2HaYHV51c2Xi6tizy+/0J27/4gvaVREXw94pmsaI5rt9sNDHoKw6LwkPO8heqkYzfIWhAg5vKswDn/MWAVTIzIubdTvrDjVWxoJ2FM9sCUsai/X7rj6QUiVTgbWuYYO0hMrT2Q9y05n68hWOmpqmna4/JGIE+N48h0/wAHLsLeV4ZNLJdJhQovOSkYsB5FIYPTuihFASLhE+uf8VBwSfYlwcWORz7dssAYvCJAx3huYZCSHrT4WPtLt4Ok/IuplXvVbZ/d6NISqE/g+BiNmN7r4DZQ/QbN4TD9t6BQESKkTqPHYIiVtZHdalgPFFSS8JP2wv50mSh/imjlX51ruHGQbVbIfZnfJGwLEL0KN/Zn3BMrNtMgCqEs3itnGQQnBchQ
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: oauth-config
|
||||||
|
namespace: linkding
|
||||||
|
type: Opaque
|
11
apps/linkding/pvc.yaml
Normal file
11
apps/linkding/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
13
apps/linkding/service.yaml
Normal file
13
apps/linkding/service.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: linkding-web
|
||||||
|
labels:
|
||||||
|
app: linkding
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: linkding
|
||||||
|
ports:
|
||||||
|
- port: 9090
|
||||||
|
targetPort: 9090
|
||||||
|
name: http
|
48
apps/media/deployment.yaml
Normal file
48
apps/media/deployment.yaml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-server
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: jellyfin-server
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: jellyfin-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: jellyfin-server
|
||||||
|
image: jellyfin/jellyfin
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: "2Gi"
|
||||||
|
cpu: "2"
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "250m"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8096
|
||||||
|
name: jellyfin
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Berlin
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- name: media
|
||||||
|
mountPath: /media
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 8096
|
||||||
|
initialDelaySeconds: 100
|
||||||
|
periodSeconds: 15
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: config
|
||||||
|
- name: media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media
|
||||||
|
|
44
apps/media/ingress.yaml
Normal file
44
apps/media/ingress.yaml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-backend-ingress
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`media.kluster.moll.re`) && !Path(`/metrics`)
|
||||||
|
middlewares:
|
||||||
|
- name: jellyfin-websocket
|
||||||
|
- name: jellyfin-server-headers
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: jellyfin-server
|
||||||
|
port: 8096
|
||||||
|
tls:
|
||||||
|
certResolver: default-tls
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-websocket
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
headers:
|
||||||
|
customRequestHeaders:
|
||||||
|
Connection: keep-alive, Upgrade
|
||||||
|
Upgrade: WebSocket
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-server-headers
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
headers:
|
||||||
|
accessControlAllowCredentials: true
|
||||||
|
accessControlAllowHeaders: [ "Authorization","Content-Type" ] # "Accept","Origin"
|
||||||
|
accessControlAllowMethods: [ "GET","HEAD","OPTIONS" ] # "POST","PUT"
|
||||||
|
accessControlAllowOriginList:
|
||||||
|
- "*"
|
||||||
|
accessControlMaxAge: 100
|
@@ -1,32 +0,0 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: jellyfin-ingress
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`media.kluster.moll.re`)
|
|
||||||
middlewares:
|
|
||||||
- name: jellyfin-websocket
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: jellyfin
|
|
||||||
port: 8096
|
|
||||||
tls:
|
|
||||||
certResolver: default-tls
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: Middleware
|
|
||||||
metadata:
|
|
||||||
name: jellyfin-websocket
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
headers:
|
|
||||||
customRequestHeaders:
|
|
||||||
X-Forwarded-Proto: "https"
|
|
||||||
Upgrade: "websocket"
|
|
||||||
|
|
||||||
|
|
@@ -1,62 +0,0 @@
|
|||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: media
|
|
||||||
name: jellyfin-config-nfs
|
|
||||||
|
|
||||||
spec:
|
|
||||||
# storageClassName: slow
|
|
||||||
capacity:
|
|
||||||
storage: "1Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/jellyfin-config
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: media
|
|
||||||
name: jellyfin-config-nfs
|
|
||||||
spec:
|
|
||||||
storageClassName: ""
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "1Gi"
|
|
||||||
volumeName: jellyfin-config-nfs
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
namespace: media
|
|
||||||
name: jellyfin-data-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: slow
|
|
||||||
capacity:
|
|
||||||
storage: "1Ti"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/jellyfin-media
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: media
|
|
||||||
name: jellyfin-data-nfs
|
|
||||||
spec:
|
|
||||||
storageClassName: nfs-client
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "1Ti"
|
|
||||||
volumeName: jellyfin-data-nfs
|
|
@@ -1,108 +0,0 @@
|
|||||||
image:
|
|
||||||
# -- image repository
|
|
||||||
repository: jellyfin/jellyfin
|
|
||||||
# -- image tag
|
|
||||||
tag: 10.8.9
|
|
||||||
|
|
||||||
# -- image pull policy
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
|
|
||||||
# -- environment variables. See [image docs](https://jellyfin.org/docs/general/administration/configuration.html) for more details.
|
|
||||||
# @default -- See below
|
|
||||||
env:
|
|
||||||
# -- Set the container timezone
|
|
||||||
TZ: Europe/Berlin
|
|
||||||
|
|
||||||
# -- Configures service settings for the chart.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
service:
|
|
||||||
main:
|
|
||||||
ports:
|
|
||||||
http:
|
|
||||||
port: 8096
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
# -- Enable and configure ingress settings for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
main:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
# -- Configure persistence settings for the chart under this key.
|
|
||||||
# @default -- See values.yaml
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
type: pvc
|
|
||||||
existingClaim: jellyfin-config-nfs
|
|
||||||
accessMode:
|
|
||||||
- ReadWriteOnce
|
|
||||||
|
|
||||||
# Cache does NOT contain temporary transcoding data.
|
|
||||||
cache:
|
|
||||||
enabled: false
|
|
||||||
mountPath: /cache
|
|
||||||
|
|
||||||
media:
|
|
||||||
enabled: true
|
|
||||||
# use local storage
|
|
||||||
type: pvc
|
|
||||||
existingClaim: jellyfin-data-nfs
|
|
||||||
accessMode:
|
|
||||||
- ReadWriteOnce
|
|
||||||
mountPath: /media
|
|
||||||
|
|
||||||
# encoder:
|
|
||||||
# enabled: true
|
|
||||||
# type: hostPath
|
|
||||||
# hostPath: /dev/dri/renderD128
|
|
||||||
|
|
||||||
|
|
||||||
# # -- Configure the Security Context for the Pod
|
|
||||||
# podSecurityContext:
|
|
||||||
# runAsUser: 0 # root user -> access to /dev/video*
|
|
||||||
# runAsUser: 568
|
|
||||||
# runAsGroup: 568
|
|
||||||
# fsGroup: 568
|
|
||||||
# # Hardware acceleration using an Intel iGPU w/ QuickSync
|
|
||||||
# # These IDs below should be matched to your `video` and `render` group on the host
|
|
||||||
# # To obtain those IDs run the following grep statement on the host:
|
|
||||||
# # $ cat /etc/group | grep "video\|render"
|
|
||||||
# # video:x:44:
|
|
||||||
# # render:x:109:
|
|
||||||
# supplementalGroups:
|
|
||||||
# - 44
|
|
||||||
# - 109
|
|
||||||
|
|
||||||
# resources:
|
|
||||||
# requests:
|
|
||||||
# # Hardware acceleration using an Intel iGPU w/ QuickSync and
|
|
||||||
# # using intel-gpu-plugin (https://github.com/intel/intel-device-plugins-for-kubernetes)
|
|
||||||
# gpu.intel.com/i915: 1
|
|
||||||
# cpu: 200m
|
|
||||||
# memory: 256Mi
|
|
||||||
# limits:
|
|
||||||
# # Hardware acceleration using an Intel iGPU w/ QuickSync and
|
|
||||||
# # using intel-gpu-plugin (https://github.com/intel/intel-device-plugins-for-kubernetes)
|
|
||||||
# gpu.intel.com/i915: 1
|
|
||||||
# memory: 4096Mi
|
|
||||||
|
|
||||||
probes:
|
|
||||||
# -- Liveness probe configuration
|
|
||||||
# @default -- See below
|
|
||||||
liveness:
|
|
||||||
# -- Enable the liveness probe
|
|
||||||
enabled: true
|
|
||||||
# -- Set this to `true` if you wish to specify your own livenessProbe
|
|
||||||
custom: true
|
|
||||||
# -- The spec field contains the values for the default livenessProbe.
|
|
||||||
# If you selected `custom: true`, this field holds the definition of the livenessProbe.
|
|
||||||
# @default -- See below
|
|
||||||
spec:
|
|
||||||
initialDelaySeconds: 100
|
|
||||||
periodSeconds: 100
|
|
||||||
timeoutSeconds: 5
|
|
||||||
failureThreshold: 3
|
|
||||||
httpGet:
|
|
||||||
path: /health
|
|
||||||
port: 8096
|
|
15
apps/media/kustomization.yaml
Normal file
15
apps/media/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: media
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: jellyfin/jellyfin
|
||||||
|
newName: jellyfin/jellyfin
|
||||||
|
newTag: 10.10.7
|
4
apps/media/namespace.yaml
Normal file
4
apps/media/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
39
apps/media/pvc.yaml
Normal file
39
apps/media/pvc.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: config
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "1Gi"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: media
|
||||||
|
spec:
|
||||||
|
capacity:
|
||||||
|
storage: "1Ti"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
nfs:
|
||||||
|
path: /export/jellyfin-media
|
||||||
|
server: 192.168.1.157
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: media
|
||||||
|
spec:
|
||||||
|
storageClassName: ""
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "1Ti"
|
||||||
|
volumeName: media
|
14
apps/media/service.yaml
Normal file
14
apps/media/service.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-server
|
||||||
|
labels:
|
||||||
|
app: jellyfin-server-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: jellyfin-server
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 8096
|
||||||
|
targetPort: 8096
|
15
apps/minecraft/README.md
Normal file
15
apps/minecraft/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
## Setup
|
||||||
|
Because minecraft is quite sensitive to io performance, we want the data to be stored on a local disk. But hostpath is not well supported in talos (and is not persistent), so we use an ephemeral volume instead. In order to do this, we create an emptyDir volume and mount it to the pod.
|
||||||
|
|
||||||
|
We use an initContaier that copies the data to the local storage. Afterwards, copying from the local storage back to the persistent storage is handled by a preStop lifecycle event.
|
||||||
|
|
||||||
|
This way, we can have the best of both worlds: fast local storage and persistent storage.
|
||||||
|
|
||||||
|
|
||||||
|
## Sending a command
|
||||||
|
```
|
||||||
|
kubectl exec -it -n minecraft deploy/minecraft-server -- /bin/bash
|
||||||
|
mc-send-to-console /help
|
||||||
|
# or directly
|
||||||
|
kubectl exec -it -n minecraft deploy/minecraft-server -- mc-send-to-console /help
|
||||||
|
```
|
16
apps/minecraft/curseforge.sealedsecret.yaml
Normal file
16
apps/minecraft/curseforge.sealedsecret.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
kind: SealedSecret
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: curseforge-api
|
||||||
|
namespace: minecraft
|
||||||
|
spec:
|
||||||
|
encryptedData:
|
||||||
|
key: AgDG6apUvB38rB9tH+/ya5Af/32IUJjHiEGZFdYYqesuqyPB/qf99EtC/7CwqD6bDQQPVycJVcxwZuF8QtYfPXzv//yMkqEUJ2G1/Q5J8I6bjNGLR636UhliUpCkH1QDOspWJUjwKDVxlFN9l0g9UajvxnqLyGzbWPeay0sJEBvAY8ltEZpLP21V+GD+HgPk3HIfSFFBMsULS6GPCjMaFxkxQb6cG3K4Ej4NHCHRGOmax+4Rk7lwMyAHlXLlrwj/ytxrnHDWrugLIJE9KKmJn6UVNTuk6olgkhleg2PixV7oOiDVyu9ZQP8wbdppzRix6dnIcFEYJ1ZDK1rNF5QErYO0gBytiJnSsdFO0jUMsdBrho2FgUc5GgIdmgXWJJz3lrGFqXaRVvbPsBZTUAsQRh2+4IfqfWmAkEjBcjs1K8WWJfS+rO9e02KoHBT4decdsd8Qfr5EFdPIzMrkUoRMI9CJnIa5u2nR08Hhd9iojbL64FZ26kXMODtEdKmlo+HwjufLX5rYJVSfOyZYzivd/kgKA87YTFaMLKej07w3ofGrPYSoCnmLfJyoQdNyJhdonBDsgM1GgRWQZDpgJ1df0SB02A5lZ4V7lHWr8KlANv9YLuMoZnVehsH1NZjNQHDInIRiTLahEBbjcJzQz4vU1UWG100ATszEYKOUVkzPnTgkqKYU99ZQ23bHP8z7iAWQeumb6V84NTi6jNITBvU4yTFLuAiI3nW34Vb1mFVLwfWqMjEYX8gBB4yMSaVshB/japfkyXU0pYg4mK9gsB4=
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: curseforge-api
|
||||||
|
namespace: minecraft
|
||||||
|
type: Opaque
|
92
apps/minecraft/job.yaml
Normal file
92
apps/minecraft/job.yaml
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: start-server
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: minecraft-server
|
||||||
|
spec:
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
initContainers:
|
||||||
|
- name: copy-data-to-local
|
||||||
|
image: alpine
|
||||||
|
command: ["/bin/sh"]
|
||||||
|
args: ["-c", "cp -r /data/* /local-data/"]
|
||||||
|
volumeMounts:
|
||||||
|
- name: local-data
|
||||||
|
mountPath: /local-data
|
||||||
|
- name: minecraft-data
|
||||||
|
mountPath: /data
|
||||||
|
containers:
|
||||||
|
- name: minecraft-server
|
||||||
|
image: minecraft
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: "11000Mi"
|
||||||
|
cpu: "5"
|
||||||
|
requests:
|
||||||
|
memory: "1500Mi"
|
||||||
|
cpu: "500m"
|
||||||
|
ports:
|
||||||
|
- containerPort: 25565
|
||||||
|
env:
|
||||||
|
- name: EULA
|
||||||
|
value: "TRUE"
|
||||||
|
- name: TYPE
|
||||||
|
value: "AUTO_CURSEFORGE"
|
||||||
|
- name: CF_API_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: curseforge-api
|
||||||
|
key: key
|
||||||
|
- name: CF_PAGE_URL
|
||||||
|
value: "https://www.curseforge.com/minecraft/modpacks/vault-hunters-1-18-2/files/6807187"
|
||||||
|
- name: VERSION
|
||||||
|
value: "1.18.2"
|
||||||
|
- name: INIT_MEMORY
|
||||||
|
value: "1G"
|
||||||
|
- name: MAX_MEMORY
|
||||||
|
value: "10G"
|
||||||
|
- name: MOTD
|
||||||
|
value: "VaultHunters baby!"
|
||||||
|
- name: ENABLE_RCON
|
||||||
|
value: "false"
|
||||||
|
- name: CREATE_CONSOLE_IN_PIPE
|
||||||
|
value: "true"
|
||||||
|
- name: ONLINE_MODE
|
||||||
|
value: "false"
|
||||||
|
- name: ENABLE_AUTOSTOP
|
||||||
|
value: "true"
|
||||||
|
- name: AUTOSTOP_TIMEOUT_EST
|
||||||
|
value: "1800" # stop 30 min after last disconnect
|
||||||
|
volumeMounts:
|
||||||
|
- name: local-data
|
||||||
|
mountPath: /data
|
||||||
|
|
||||||
|
- name: copy-data-to-persistent
|
||||||
|
image: rsync
|
||||||
|
command: ["/bin/sh"]
|
||||||
|
# args: ["-c", "sleep infinity"]
|
||||||
|
args: ["/run-rsync.sh"]
|
||||||
|
volumeMounts:
|
||||||
|
- name: local-data
|
||||||
|
mountPath: /local-data
|
||||||
|
- name: minecraft-data
|
||||||
|
mountPath: /persistent-data
|
||||||
|
- name: rsync-config
|
||||||
|
mountPath: /run-rsync.sh
|
||||||
|
subPath: run-rsync.sh
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: minecraft-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: minecraft-data
|
||||||
|
- name: local-data
|
||||||
|
emptyDir: {}
|
||||||
|
- name: rsync-config
|
||||||
|
configMap:
|
||||||
|
name: rsync-config
|
||||||
|
defaultMode: 0777
|
24
apps/minecraft/kustomization.yaml
Normal file
24
apps/minecraft/kustomization.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
namespace: minecraft
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- job.yaml
|
||||||
|
- service.yaml
|
||||||
|
- rsync.configmap.yaml
|
||||||
|
- curseforge.sealedsecret.yaml
|
||||||
|
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: minecraft
|
||||||
|
newName: itzg/minecraft-server
|
||||||
|
newTag: java21
|
||||||
|
- name: alpine
|
||||||
|
newName: alpine
|
||||||
|
newTag: "3.22"
|
||||||
|
- name: rsync
|
||||||
|
newName: eeacms/rsync
|
||||||
|
newTag: "2.7"
|
4
apps/minecraft/namespace.yaml
Normal file
4
apps/minecraft/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: placeholder
|
11
apps/minecraft/pvc.yaml
Normal file
11
apps/minecraft/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: minecraft-data
|
||||||
|
spec:
|
||||||
|
storageClassName: "nfs-client"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
42
apps/minecraft/rsync.configmap.yaml
Normal file
42
apps/minecraft/rsync.configmap.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: rsync-config
|
||||||
|
data:
|
||||||
|
run-rsync.sh: |-
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
echo "Starting rsync..."
|
||||||
|
|
||||||
|
no_change_count=0
|
||||||
|
|
||||||
|
while [ "$no_change_count" -lt 3 ]; do
|
||||||
|
# use the i flag to get per line output of each change
|
||||||
|
rsync_output=$(rsync -avzi --delete /local-data/ /persistent-data/)
|
||||||
|
# echo "$rsync_output"
|
||||||
|
|
||||||
|
# in this format rsync outputs at least 4 lines:
|
||||||
|
# ---
|
||||||
|
# sending incremental file list
|
||||||
|
#
|
||||||
|
# sent 145,483 bytes received 717 bytes 26,581.82 bytes/sec
|
||||||
|
# total size is 708,682,765 speedup is 4,847.35
|
||||||
|
# ---
|
||||||
|
# even though a non-zero number of bytes is sent, no changes were made
|
||||||
|
|
||||||
|
line_count=$(echo "$rsync_output" | wc -l)
|
||||||
|
|
||||||
|
if [ "$line_count" -eq 4 ]; then
|
||||||
|
echo "Rsync output was: $rsync_output"
|
||||||
|
no_change_count=$((no_change_count + 1))
|
||||||
|
echo "No changes detected. Incrementing no_change_count to $no_change_count."
|
||||||
|
else
|
||||||
|
no_change_count=0
|
||||||
|
echo "Changes detected. Resetting no_change_count to 0."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Rsync completed. Sleeping for 10 minutes..."
|
||||||
|
sleep 600
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "No changes detected for 3 consecutive runs. Exiting."
|
12
apps/minecraft/service.yaml
Normal file
12
apps/minecraft/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: minecraft-server
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: minecraft-server
|
||||||
|
ports:
|
||||||
|
- port: 25565
|
||||||
|
targetPort: 25565
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerIP: 192.168.3.4
|
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: grafana-nfs
|
|
||||||
labels:
|
|
||||||
directory: grafana
|
|
||||||
spec:
|
|
||||||
# storageClassName: slow
|
|
||||||
capacity:
|
|
||||||
storage: "1Gi"
|
|
||||||
# volumeMode: Filesystem
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
nfs:
|
|
||||||
path: /export/kluster/grafana
|
|
||||||
server: 192.168.1.157
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: grafana-nfs
|
|
||||||
spec:
|
|
||||||
# storageClassName: slow
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: "1Gi"
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
directory: grafana
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -1,873 +0,0 @@
|
|||||||
rbac:
|
|
||||||
create: true
|
|
||||||
## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
|
|
||||||
# useExistingRole: name-of-some-(cluster)role
|
|
||||||
pspEnabled: true
|
|
||||||
pspUseAppArmor: true
|
|
||||||
namespaced: false
|
|
||||||
extraRoleRules: []
|
|
||||||
# - apiGroups: []
|
|
||||||
# resources: []
|
|
||||||
# verbs: []
|
|
||||||
extraClusterRoleRules: []
|
|
||||||
# - apiGroups: []
|
|
||||||
# resources: []
|
|
||||||
# verbs: []
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
name:
|
|
||||||
nameTest:
|
|
||||||
## Service account annotations. Can be templated.
|
|
||||||
# annotations:
|
|
||||||
# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
|
|
||||||
autoMount: true
|
|
||||||
|
|
||||||
replicas: 1
|
|
||||||
|
|
||||||
## Create a headless service for the deployment
|
|
||||||
headlessService: false
|
|
||||||
|
|
||||||
## Create HorizontalPodAutoscaler object for deployment type
|
|
||||||
#
|
|
||||||
autoscaling:
|
|
||||||
enabled: false
|
|
||||||
# minReplicas: 1
|
|
||||||
# maxReplicas: 10
|
|
||||||
# metrics:
|
|
||||||
# - type: Resource
|
|
||||||
# resource:
|
|
||||||
# name: cpu
|
|
||||||
# targetAverageUtilization: 60
|
|
||||||
# - type: Resource
|
|
||||||
# resource:
|
|
||||||
# name: memory
|
|
||||||
# targetAverageUtilization: 60
|
|
||||||
|
|
||||||
## See `kubectl explain poddisruptionbudget.spec` for more
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
|
|
||||||
podDisruptionBudget: {}
|
|
||||||
# minAvailable: 1
|
|
||||||
# maxUnavailable: 1
|
|
||||||
|
|
||||||
## See `kubectl explain deployment.spec.strategy` for more
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
|
|
||||||
deploymentStrategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/health
|
|
||||||
port: 3000
|
|
||||||
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/health
|
|
||||||
port: 3000
|
|
||||||
initialDelaySeconds: 60
|
|
||||||
timeoutSeconds: 30
|
|
||||||
failureThreshold: 10
|
|
||||||
|
|
||||||
## Use an alternate scheduler, e.g. "stork".
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
|
|
||||||
##
|
|
||||||
# schedulerName: "default-scheduler"
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: grafana/grafana
|
|
||||||
tag: 9.0.2
|
|
||||||
sha: ""
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
## Optionally specify an array of imagePullSecrets.
|
|
||||||
## Secrets must be manually created in the namespace.
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
|
||||||
## Can be templated.
|
|
||||||
##
|
|
||||||
# pullSecrets:
|
|
||||||
# - myRegistrKeySecretName
|
|
||||||
|
|
||||||
testFramework:
|
|
||||||
enabled: true
|
|
||||||
image: "bats/bats"
|
|
||||||
tag: "v1.4.1"
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
securityContext: {}
|
|
||||||
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 472
|
|
||||||
runAsGroup: 472
|
|
||||||
fsGroup: 472
|
|
||||||
|
|
||||||
containerSecurityContext:
|
|
||||||
{}
|
|
||||||
|
|
||||||
# Extra configmaps to mount in grafana pods
|
|
||||||
# Values are templated.
|
|
||||||
extraConfigmapMounts: []
|
|
||||||
# - name: certs-configmap
|
|
||||||
# mountPath: /etc/grafana/ssl/
|
|
||||||
# subPath: certificates.crt # (optional)
|
|
||||||
# configMap: certs-configmap
|
|
||||||
# readOnly: true
|
|
||||||
|
|
||||||
|
|
||||||
extraEmptyDirMounts: []
|
|
||||||
# - name: provisioning-notifiers
|
|
||||||
# mountPath: /etc/grafana/provisioning/notifiers
|
|
||||||
|
|
||||||
|
|
||||||
# Apply extra labels to common labels.
|
|
||||||
extraLabels: {}
|
|
||||||
|
|
||||||
## Assign a PriorityClassName to pods if set
|
|
||||||
# priorityClassName:
|
|
||||||
|
|
||||||
downloadDashboardsImage:
|
|
||||||
repository: curlimages/curl
|
|
||||||
tag: 7.73.0
|
|
||||||
sha: ""
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
downloadDashboards:
|
|
||||||
env: {}
|
|
||||||
envFromSecret: ""
|
|
||||||
resources: {}
|
|
||||||
|
|
||||||
## Pod Annotations
|
|
||||||
# podAnnotations: {}
|
|
||||||
|
|
||||||
## Pod Labels
|
|
||||||
# podLabels: {}
|
|
||||||
|
|
||||||
podPortName: grafana
|
|
||||||
|
|
||||||
## Deployment annotations
|
|
||||||
# annotations: {}
|
|
||||||
|
|
||||||
## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
|
|
||||||
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
|
|
||||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
|
||||||
##
|
|
||||||
service:
|
|
||||||
enabled: true
|
|
||||||
type: ClusterIP
|
|
||||||
port: 80
|
|
||||||
targetPort: 3000
|
|
||||||
# targetPort: 4181 To be used with a proxy extraContainer
|
|
||||||
annotations: {}
|
|
||||||
labels: {}
|
|
||||||
portName: service
|
|
||||||
|
|
||||||
serviceMonitor:
|
|
||||||
## If true, a ServiceMonitor CRD is created for a prometheus operator
|
|
||||||
## https://github.com/coreos/prometheus-operator
|
|
||||||
##
|
|
||||||
enabled: false
|
|
||||||
path: /metrics
|
|
||||||
# namespace: monitoring (defaults to use the namespace this chart is deployed to)
|
|
||||||
labels: {}
|
|
||||||
interval: 1m
|
|
||||||
scheme: http
|
|
||||||
tlsConfig: {}
|
|
||||||
scrapeTimeout: 30s
|
|
||||||
relabelings: []
|
|
||||||
|
|
||||||
extraExposePorts: []
|
|
||||||
# - name: keycloak
|
|
||||||
# port: 8080
|
|
||||||
# targetPort: 8080
|
|
||||||
# type: ClusterIP
|
|
||||||
|
|
||||||
# overrides pod.spec.hostAliases in the grafana deployment's pods
|
|
||||||
hostAliases: []
|
|
||||||
# - ip: "1.2.3.4"
|
|
||||||
# hostnames:
|
|
||||||
# - "my.host.com"
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
|
|
||||||
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
|
|
||||||
# ingressClassName: nginx
|
|
||||||
# Values can be templated
|
|
||||||
annotations: {
|
|
||||||
kubernetes.io/ingress.class: nginx,
|
|
||||||
cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod
|
|
||||||
}
|
|
||||||
# kubernetes.io/ingress.class: nginx
|
|
||||||
# kubernetes.io/tls-acme: "true"
|
|
||||||
labels: {}
|
|
||||||
path: /
|
|
||||||
|
|
||||||
# pathType is only for k8s >= 1.1=
|
|
||||||
pathType: Prefix
|
|
||||||
|
|
||||||
hosts:
|
|
||||||
- grafana.kluster.moll.re
|
|
||||||
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
|
|
||||||
extraPaths: []
|
|
||||||
# - path: /*
|
|
||||||
# backend:
|
|
||||||
# serviceName: ssl-redirect
|
|
||||||
# servicePort: use-annotation
|
|
||||||
## Or for k8s > 1.19
|
|
||||||
# - path: /*
|
|
||||||
# pathType: Prefix
|
|
||||||
# backend:
|
|
||||||
# service:
|
|
||||||
# name: ssl-redirect
|
|
||||||
# port:
|
|
||||||
# name: use-annotation
|
|
||||||
|
|
||||||
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- grafana.kluster.moll.re
|
|
||||||
secretName: cloudflare-letsencrypt-issuer-account-key
|
|
||||||
# - secretName: chart-example-tls
|
|
||||||
# hosts:
|
|
||||||
# - chart-example.local
|
|
||||||
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
|
|
||||||
## Node labels for pod assignment
|
|
||||||
## ref: https://kubernetes.io/docs/user-guide/node-selection/
|
|
||||||
#
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
## Tolerations for pod assignment
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
|
||||||
##
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
## Affinity for pod assignment (evaluated as template)
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
|
||||||
##
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
## Additional init containers (evaluated as template)
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
|
|
||||||
##
|
|
||||||
extraInitContainers: []
|
|
||||||
|
|
||||||
## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod
|
|
||||||
extraContainers: ""
|
|
||||||
# extraContainers: |
|
|
||||||
# - name: proxy
|
|
||||||
# image: quay.io/gambol99/keycloak-proxy:latest
|
|
||||||
# args:
|
|
||||||
# - -provider=github
|
|
||||||
# - -client-id=
|
|
||||||
# - -client-secret=
|
|
||||||
# - -github-org=<ORG_NAME>
|
|
||||||
# - -email-domain=*
|
|
||||||
# - -cookie-secret=
|
|
||||||
# - -http-address=http://0.0.0.0:4181
|
|
||||||
# - -upstream-url=http://127.0.0.1:3000
|
|
||||||
# ports:
|
|
||||||
# - name: proxy-web
|
|
||||||
# containerPort: 4181
|
|
||||||
|
|
||||||
## Volumes that can be used in init containers that will not be mounted to deployment pods
|
|
||||||
extraContainerVolumes: []
|
|
||||||
# - name: volume-from-secret
|
|
||||||
# secret:
|
|
||||||
# secretName: secret-to-mount
|
|
||||||
# - name: empty-dir-volume
|
|
||||||
# emptyDir: {}
|
|
||||||
|
|
||||||
## Enable persistence using Persistent Volume Claims
|
|
||||||
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
|
|
||||||
##
|
|
||||||
persistence:
|
|
||||||
type: pvc
|
|
||||||
enabled: true
|
|
||||||
# storageClassName: default
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
size: 10Gi
|
|
||||||
# annotations: {}
|
|
||||||
finalizers:
|
|
||||||
- kubernetes.io/pvc-protection
|
|
||||||
# selectorLabels: {}
|
|
||||||
## Sub-directory of the PV to mount. Can be templated.
|
|
||||||
# subPath: ""
|
|
||||||
## Name of an existing PVC. Can be templated.
|
|
||||||
existingClaim: grafana-nfs
|
|
||||||
|
|
||||||
## If persistence is not enabled, this allows to mount the
|
|
||||||
## local storage in-memory to improve performance
|
|
||||||
##
|
|
||||||
inMemory:
|
|
||||||
enabled: false
|
|
||||||
## The maximum usage on memory medium EmptyDir would be
|
|
||||||
## the minimum value between the SizeLimit specified
|
|
||||||
## here and the sum of memory limits of all containers in a pod
|
|
||||||
##
|
|
||||||
# sizeLimit: 300Mi
|
|
||||||
|
|
||||||
initChownData:
|
|
||||||
## If false, data ownership will not be reset at startup
|
|
||||||
## This allows the prometheus-server to be run with an arbitrary user
|
|
||||||
##
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
## initChownData container image
|
|
||||||
##
|
|
||||||
image:
|
|
||||||
repository: busybox
|
|
||||||
tag: "1.31.1"
|
|
||||||
sha: ""
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
## initChownData resource requests and limits
|
|
||||||
## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
|
||||||
##
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
|
|
||||||
|
|
||||||
# Administrator credentials when not using an existing secret (see below)
|
|
||||||
adminUser: admin
|
|
||||||
# adminPassword: strongpassword
|
|
||||||
|
|
||||||
# Use an existing secret for the admin user.
|
|
||||||
admin:
|
|
||||||
## Name of the secret. Can be templated.
|
|
||||||
existingSecret: ""
|
|
||||||
userKey: admin-user
|
|
||||||
passwordKey: admin-password
|
|
||||||
|
|
||||||
## Define command to be executed at startup by grafana container
|
|
||||||
## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/)
|
|
||||||
## Default is "run.sh" as defined in grafana's Dockerfile
|
|
||||||
# command:
|
|
||||||
# - "sh"
|
|
||||||
# - "/run.sh"
|
|
||||||
|
|
||||||
## Use an alternate scheduler, e.g. "stork".
|
|
||||||
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
|
|
||||||
##
|
|
||||||
# schedulerName:
|
|
||||||
|
|
||||||
## Extra environment variables that will be pass onto deployment pods
|
|
||||||
##
|
|
||||||
## to provide grafana with access to CloudWatch on AWS EKS:
|
|
||||||
## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later)
|
|
||||||
## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the
|
|
||||||
## same oidc eks provider as noted before (same as the existing line)
|
|
||||||
## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name
|
|
||||||
##
|
|
||||||
## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana",
|
|
||||||
##
|
|
||||||
## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess
|
|
||||||
## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name)
|
|
||||||
##
|
|
||||||
## env:
|
|
||||||
## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here
|
|
||||||
## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
|
|
||||||
## AWS_REGION: us-east-1
|
|
||||||
##
|
|
||||||
## 5. uncomment the EKS section in extraSecretMounts: below
|
|
||||||
## 6. uncomment the annotation section in the serviceAccount: above
|
|
||||||
## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn
|
|
||||||
|
|
||||||
env: {}
|
|
||||||
|
|
||||||
## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
|
|
||||||
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
|
|
||||||
## Renders in container spec as:
|
|
||||||
## env:
|
|
||||||
## ...
|
|
||||||
## - name: <key>
|
|
||||||
## valueFrom:
|
|
||||||
## <value rendered as YAML>
|
|
||||||
envValueFrom: {}
|
|
||||||
# ENV_NAME:
|
|
||||||
# configMapKeyRef:
|
|
||||||
# name: configmap-name
|
|
||||||
# key: value_key
|
|
||||||
|
|
||||||
## The name of a secret in the same kubernetes namespace which contain values to be added to the environment
|
|
||||||
## This can be useful for auth tokens, etc. Value is templated.
|
|
||||||
envFromSecret: ""
|
|
||||||
|
|
||||||
## Sensible environment variables that will be rendered as new secret object
|
|
||||||
## This can be useful for auth tokens, etc
|
|
||||||
envRenderSecret: {}
|
|
||||||
|
|
||||||
## The names of secrets in the same kubernetes namespace which contain values to be added to the environment
|
|
||||||
## Each entry should contain a name key, and can optionally specify whether the secret must be defined with an optional key.
|
|
||||||
## Name is templated.
|
|
||||||
envFromSecrets: []
|
|
||||||
## - name: secret-name
|
|
||||||
## optional: true
|
|
||||||
|
|
||||||
## The names of conifgmaps in the same kubernetes namespace which contain values to be added to the environment
|
|
||||||
## Each entry should contain a name key, and can optionally specify whether the configmap must be defined with an optional key.
|
|
||||||
## Name is templated.
|
|
||||||
## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core
|
|
||||||
envFromConfigMaps: []
|
|
||||||
## - name: configmap-name
|
|
||||||
## optional: true
|
|
||||||
|
|
||||||
# Inject Kubernetes services as environment variables.
|
|
||||||
# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables
|
|
||||||
enableServiceLinks: true
|
|
||||||
|
|
||||||
## Additional grafana server secret mounts
|
|
||||||
# Defines additional mounts with secrets. Secrets must be manually created in the namespace.
|
|
||||||
extraSecretMounts: []
|
|
||||||
# - name: secret-files
|
|
||||||
# mountPath: /etc/secrets
|
|
||||||
# secretName: grafana-secret-files
|
|
||||||
# readOnly: true
|
|
||||||
# subPath: ""
|
|
||||||
#
|
|
||||||
# for AWS EKS (cloudwatch) use the following (see also instruction in env: above)
|
|
||||||
# - name: aws-iam-token
|
|
||||||
# mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
|
|
||||||
# readOnly: true
|
|
||||||
# projected:
|
|
||||||
# defaultMode: 420
|
|
||||||
# sources:
|
|
||||||
# - serviceAccountToken:
|
|
||||||
# audience: sts.amazonaws.com
|
|
||||||
# expirationSeconds: 86400
|
|
||||||
# path: token
|
|
||||||
#
|
|
||||||
# for CSI e.g. Azure Key Vault use the following
|
|
||||||
# - name: secrets-store-inline
|
|
||||||
# mountPath: /run/secrets
|
|
||||||
# readOnly: true
|
|
||||||
# csi:
|
|
||||||
# driver: secrets-store.csi.k8s.io
|
|
||||||
# readOnly: true
|
|
||||||
# volumeAttributes:
|
|
||||||
# secretProviderClass: "akv-grafana-spc"
|
|
||||||
# nodePublishSecretRef: # Only required when using service principal mode
|
|
||||||
# name: grafana-akv-creds # Only required when using service principal mode
|
|
||||||
|
|
||||||
## Additional grafana server volume mounts
|
|
||||||
# Defines additional volume mounts.
|
|
||||||
extraVolumeMounts: []
|
|
||||||
# - name: extra-volume-0
|
|
||||||
# mountPath: /mnt/volume0
|
|
||||||
# readOnly: true
|
|
||||||
# existingClaim: volume-claim
|
|
||||||
# - name: extra-volume-1
|
|
||||||
# mountPath: /mnt/volume1
|
|
||||||
# readOnly: true
|
|
||||||
# hostPath: /usr/shared/
|
|
||||||
|
|
||||||
## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request
|
|
||||||
lifecycleHooks: {}
|
|
||||||
# postStart:
|
|
||||||
# exec:
|
|
||||||
# command: []
|
|
||||||
|
|
||||||
## Pass the plugins you want installed as a list.
|
|
||||||
##
|
|
||||||
plugins: []
|
|
||||||
# - digrich-bubblechart-panel
|
|
||||||
# - grafana-clock-panel
|
|
||||||
|
|
||||||
## Configure grafana datasources
|
|
||||||
## ref: http://docs.grafana.org/administration/provisioning/#datasources
|
|
||||||
##
|
|
||||||
datasources: {}
|
|
||||||
# datasources.yaml:
|
|
||||||
# apiVersion: 1
|
|
||||||
# datasources:
|
|
||||||
# - name: Prometheus
|
|
||||||
# type: prometheus
|
|
||||||
# url: http://prometheus-prometheus-server
|
|
||||||
# access: proxy
|
|
||||||
# isDefault: true
|
|
||||||
# - name: CloudWatch
|
|
||||||
# type: cloudwatch
|
|
||||||
# access: proxy
|
|
||||||
# uid: cloudwatch
|
|
||||||
# editable: false
|
|
||||||
# jsonData:
|
|
||||||
# authType: default
|
|
||||||
# defaultRegion: us-east-1
|
|
||||||
|
|
||||||
## Configure notifiers
|
|
||||||
## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels
|
|
||||||
##
|
|
||||||
notifiers: {}
|
|
||||||
# notifiers.yaml:
|
|
||||||
# notifiers:
|
|
||||||
# - name: email-notifier
|
|
||||||
# type: email
|
|
||||||
# uid: email1
|
|
||||||
# # either:
|
|
||||||
# org_id: 1
|
|
||||||
# # or
|
|
||||||
# org_name: Main Org.
|
|
||||||
# is_default: true
|
|
||||||
# settings:
|
|
||||||
# addresses: an_email_address@example.com
|
|
||||||
# delete_notifiers:
|
|
||||||
|
|
||||||
## Configure grafana dashboard providers
|
|
||||||
## ref: http://docs.grafana.org/administration/provisioning/#dashboards
|
|
||||||
##
|
|
||||||
## `path` must be /var/lib/grafana/dashboards/<provider_name>
|
|
||||||
##
|
|
||||||
dashboardProviders: {}
|
|
||||||
# dashboardproviders.yaml:
|
|
||||||
# apiVersion: 1
|
|
||||||
# providers:
|
|
||||||
# - name: 'default'
|
|
||||||
# orgId: 1
|
|
||||||
# folder: ''
|
|
||||||
# type: file
|
|
||||||
# disableDeletion: false
|
|
||||||
# editable: true
|
|
||||||
# options:
|
|
||||||
# path: /var/lib/grafana/dashboards/default
|
|
||||||
|
|
||||||
## Configure grafana dashboard to import
|
|
||||||
## NOTE: To use dashboards you must also enable/configure dashboardProviders
|
|
||||||
## ref: https://grafana.com/dashboards
|
|
||||||
##
|
|
||||||
## dashboards per provider, use provider name as key.
|
|
||||||
##
|
|
||||||
dashboards: {}
|
|
||||||
# default:
|
|
||||||
# some-dashboard:
|
|
||||||
# json: |
|
|
||||||
# $RAW_JSON
|
|
||||||
# custom-dashboard:
|
|
||||||
# file: dashboards/custom-dashboard.json
|
|
||||||
# prometheus-stats:
|
|
||||||
# gnetId: 2
|
|
||||||
# revision: 2
|
|
||||||
# datasource: Prometheus
|
|
||||||
# local-dashboard:
|
|
||||||
# url: https://example.com/repository/test.json
|
|
||||||
# token: ''
|
|
||||||
# local-dashboard-base64:
|
|
||||||
# url: https://example.com/repository/test-b64.json
|
|
||||||
# token: ''
|
|
||||||
# b64content: true
|
|
||||||
|
|
||||||
## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.
|
|
||||||
## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.
|
|
||||||
## ConfigMap data example:
|
|
||||||
##
|
|
||||||
## data:
|
|
||||||
## example-dashboard.json: |
|
|
||||||
## RAW_JSON
|
|
||||||
##
|
|
||||||
dashboardsConfigMaps: {}
|
|
||||||
# default: ""
|
|
||||||
|
|
||||||
## Grafana's primary configuration
|
|
||||||
## NOTE: values in map will be converted to ini format
|
|
||||||
## ref: http://docs.grafana.org/installation/configuration/
|
|
||||||
##
|
|
||||||
grafana.ini:
|
|
||||||
paths:
|
|
||||||
data: /var/lib/grafana/
|
|
||||||
logs: /var/log/grafana
|
|
||||||
plugins: /var/lib/grafana/plugins
|
|
||||||
provisioning: /etc/grafana/provisioning
|
|
||||||
analytics:
|
|
||||||
check_for_updates: true
|
|
||||||
log:
|
|
||||||
mode: console
|
|
||||||
grafana_net:
|
|
||||||
url: https://grafana.net
|
|
||||||
## grafana Authentication can be enabled with the following values on grafana.ini
|
|
||||||
# server:
|
|
||||||
# The full public facing url you use in browser, used for redirects and emails
|
|
||||||
# root_url:
|
|
||||||
# https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana
|
|
||||||
# auth.github:
|
|
||||||
# enabled: false
|
|
||||||
# allow_sign_up: false
|
|
||||||
# scopes: user:email,read:org
|
|
||||||
# auth_url: https://github.com/login/oauth/authorize
|
|
||||||
# token_url: https://github.com/login/oauth/access_token
|
|
||||||
# api_url: https://api.github.com/user
|
|
||||||
# team_ids:
|
|
||||||
# allowed_organizations:
|
|
||||||
# client_id:
|
|
||||||
# client_secret:
|
|
||||||
## LDAP Authentication can be enabled with the following values on grafana.ini
|
|
||||||
## NOTE: Grafana will fail to start if the value for ldap.toml is invalid
|
|
||||||
# auth.ldap:
|
|
||||||
# enabled: true
|
|
||||||
# allow_sign_up: true
|
|
||||||
# config_file: /etc/grafana/ldap.toml
|
|
||||||
|
|
||||||
## Grafana's LDAP configuration
|
|
||||||
## Templated by the template in _helpers.tpl
|
|
||||||
## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled
|
|
||||||
## ref: http://docs.grafana.org/installation/configuration/#auth-ldap
|
|
||||||
## ref: http://docs.grafana.org/installation/ldap/#configuration
|
|
||||||
ldap:
|
|
||||||
enabled: false
|
|
||||||
# `existingSecret` is a reference to an existing secret containing the ldap configuration
|
|
||||||
# for Grafana in a key `ldap-toml`.
|
|
||||||
existingSecret: ""
|
|
||||||
# `config` is the content of `ldap.toml` that will be stored in the created secret
|
|
||||||
config: ""
|
|
||||||
# config: |-
|
|
||||||
# verbose_logging = true
|
|
||||||
|
|
||||||
# [[servers]]
|
|
||||||
# host = "my-ldap-server"
|
|
||||||
# port = 636
|
|
||||||
# use_ssl = true
|
|
||||||
# start_tls = false
|
|
||||||
# ssl_skip_verify = false
|
|
||||||
# bind_dn = "uid=%s,ou=users,dc=myorg,dc=com"
|
|
||||||
|
|
||||||
## Grafana's SMTP configuration
|
|
||||||
## NOTE: To enable, grafana.ini must be configured with smtp.enabled
|
|
||||||
## ref: http://docs.grafana.org/installation/configuration/#smtp
|
|
||||||
smtp:
|
|
||||||
# `existingSecret` is a reference to an existing secret containing the smtp configuration
|
|
||||||
# for Grafana.
|
|
||||||
existingSecret: ""
|
|
||||||
userKey: "user"
|
|
||||||
passwordKey: "password"
|
|
||||||
|
|
||||||
## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
|
|
||||||
## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
|
|
||||||
sidecar:
|
|
||||||
image:
|
|
||||||
repository: quay.io/kiwigrid/k8s-sidecar
|
|
||||||
tag: 1.15.6
|
|
||||||
sha: ""
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 100Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 50m
|
|
||||||
# memory: 50Mi
|
|
||||||
securityContext: {}
|
|
||||||
# skipTlsVerify Set to true to skip tls verification for kube api calls
|
|
||||||
# skipTlsVerify: true
|
|
||||||
enableUniqueFilenames: false
|
|
||||||
readinessProbe: {}
|
|
||||||
livenessProbe: {}
|
|
||||||
dashboards:
|
|
||||||
enabled: false
|
|
||||||
SCProvider: true
|
|
||||||
# label that the configmaps with dashboards are marked with
|
|
||||||
label: grafana_dashboard
|
|
||||||
# value of label that the configmaps with dashboards are set to
|
|
||||||
labelValue: null
|
|
||||||
# folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set)
|
|
||||||
folder: /tmp/dashboards
|
|
||||||
# The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead
|
|
||||||
defaultFolderName: null
|
|
||||||
# Namespaces list. If specified, the sidecar will search for config-maps/secrets inside these namespaces.
|
|
||||||
# Otherwise the namespace in which the sidecar is running will be used.
|
|
||||||
# It's also possible to specify ALL to search in all namespaces.
|
|
||||||
searchNamespace: null
|
|
||||||
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
|
|
||||||
watchMethod: WATCH
|
|
||||||
# search in configmap, secret or both
|
|
||||||
resource: both
|
|
||||||
# If specified, the sidecar will look for annotation with this name to create folder and put graph here.
|
|
||||||
# You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.
|
|
||||||
folderAnnotation: null
|
|
||||||
# Absolute path to shell script to execute after a configmap got reloaded
|
|
||||||
script: null
|
|
||||||
# watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
|
|
||||||
# defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
|
|
||||||
# watchServerTimeout: 3600
|
|
||||||
#
|
|
||||||
# watchClientTimeout: is a client-side timeout, configuring your local socket.
|
|
||||||
# If you have a network outage dropping all packets with no RST/FIN,
|
|
||||||
# this is how long your client waits before realizing & dropping the connection.
|
|
||||||
# defaults to 66sec (sic!)
|
|
||||||
# watchClientTimeout: 60
|
|
||||||
#
|
|
||||||
# provider configuration that lets grafana manage the dashboards
|
|
||||||
provider:
|
|
||||||
# name of the provider, should be unique
|
|
||||||
name: sidecarProvider
|
|
||||||
# orgid as configured in grafana
|
|
||||||
orgid: 1
|
|
||||||
# folder in which the dashboards should be imported in grafana
|
|
||||||
folder: ''
|
|
||||||
# type of the provider
|
|
||||||
type: file
|
|
||||||
# disableDelete to activate a import-only behaviour
|
|
||||||
disableDelete: false
|
|
||||||
# allow updating provisioned dashboards from the UI
|
|
||||||
allowUiUpdates: false
|
|
||||||
# allow Grafana to replicate dashboard structure from filesystem
|
|
||||||
foldersFromFilesStructure: false
|
|
||||||
# Additional dashboard sidecar volume mounts
|
|
||||||
extraMounts: []
|
|
||||||
# Sets the size limit of the dashboard sidecar emptyDir volume
|
|
||||||
sizeLimit: {}
|
|
||||||
datasources:
|
|
||||||
enabled: false
|
|
||||||
# label that the configmaps with datasources are marked with
|
|
||||||
label: grafana_datasource
|
|
||||||
# value of label that the configmaps with datasources are set to
|
|
||||||
labelValue: null
|
|
||||||
# If specified, the sidecar will search for datasource config-maps inside this namespace.
|
|
||||||
# Otherwise the namespace in which the sidecar is running will be used.
|
|
||||||
# It's also possible to specify ALL to search in all namespaces
|
|
||||||
searchNamespace: null
|
|
||||||
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
|
|
||||||
watchMethod: WATCH
|
|
||||||
# search in configmap, secret or both
|
|
||||||
resource: both
|
|
||||||
# Endpoint to send request to reload datasources
|
|
||||||
reloadURL: "http://localhost:3000/api/admin/provisioning/datasources/reload"
|
|
||||||
skipReload: false
|
|
||||||
# Deploy the datasource sidecar as an initContainer in addition to a container.
|
|
||||||
# This is needed if skipReload is true, to load any datasources defined at startup time.
|
|
||||||
initDatasources: false
|
|
||||||
# Sets the size limit of the datasource sidecar emptyDir volume
|
|
||||||
sizeLimit: {}
|
|
||||||
plugins:
|
|
||||||
enabled: false
|
|
||||||
# label that the configmaps with plugins are marked with
|
|
||||||
label: grafana_plugin
|
|
||||||
# value of label that the configmaps with plugins are set to
|
|
||||||
labelValue: null
|
|
||||||
# If specified, the sidecar will search for plugin config-maps inside this namespace.
|
|
||||||
# Otherwise the namespace in which the sidecar is running will be used.
|
|
||||||
# It's also possible to specify ALL to search in all namespaces
|
|
||||||
searchNamespace: null
|
|
||||||
# Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
|
|
||||||
watchMethod: WATCH
|
|
||||||
# search in configmap, secret or both
|
|
||||||
resource: both
|
|
||||||
# Endpoint to send request to reload plugins
|
|
||||||
reloadURL: "http://localhost:3000/api/admin/provisioning/plugins/reload"
|
|
||||||
skipReload: false
|
|
||||||
# Deploy the datasource sidecar as an initContainer in addition to a container.
|
|
||||||
# This is needed if skipReload is true, to load any plugins defined at startup time.
|
|
||||||
initPlugins: false
|
|
||||||
# Sets the size limit of the plugin sidecar emptyDir volume
|
|
||||||
sizeLimit: {}
|
|
||||||
notifiers:
|
|
||||||
enabled: false
|
|
||||||
# label that the configmaps with notifiers are marked with
|
|
||||||
label: grafana_notifier
|
|
||||||
# If specified, the sidecar will search for notifier config-maps inside this namespace.
|
|
||||||
# Otherwise the namespace in which the sidecar is running will be used.
|
|
||||||
# It's also possible to specify ALL to search in all namespaces
|
|
||||||
searchNamespace: null
|
|
||||||
# search in configmap, secret or both
|
|
||||||
resource: both
|
|
||||||
# Sets the size limit of the notifier sidecar emptyDir volume
|
|
||||||
sizeLimit: {}
|
|
||||||
|
|
||||||
## Override the deployment namespace
|
|
||||||
##
|
|
||||||
namespaceOverride: ""
|
|
||||||
|
|
||||||
## Number of old ReplicaSets to retain
|
|
||||||
##
|
|
||||||
revisionHistoryLimit: 10
|
|
||||||
|
|
||||||
## Add a seperate remote image renderer deployment/service
|
|
||||||
imageRenderer:
|
|
||||||
# Enable the image-renderer deployment & service
|
|
||||||
enabled: false
|
|
||||||
replicas: 1
|
|
||||||
image:
|
|
||||||
# image-renderer Image repository
|
|
||||||
repository: grafana/grafana-image-renderer
|
|
||||||
# image-renderer Image tag
|
|
||||||
tag: latest
|
|
||||||
# image-renderer Image sha (optional)
|
|
||||||
sha: ""
|
|
||||||
# image-renderer ImagePullPolicy
|
|
||||||
pullPolicy: Always
|
|
||||||
# extra environment variables
|
|
||||||
env:
|
|
||||||
HTTP_HOST: "0.0.0.0"
|
|
||||||
# RENDERING_ARGS: --no-sandbox,--disable-gpu,--window-size=1280x758
|
|
||||||
# RENDERING_MODE: clustered
|
|
||||||
# IGNORE_HTTPS_ERRORS: true
|
|
||||||
# image-renderer deployment serviceAccount
|
|
||||||
serviceAccountName: ""
|
|
||||||
# image-renderer deployment securityContext
|
|
||||||
securityContext: {}
|
|
||||||
# image-renderer deployment Host Aliases
|
|
||||||
hostAliases: []
|
|
||||||
# image-renderer deployment priority class
|
|
||||||
priorityClassName: ''
|
|
||||||
service:
|
|
||||||
# Enable the image-renderer service
|
|
||||||
enabled: true
|
|
||||||
# image-renderer service port name
|
|
||||||
portName: 'http'
|
|
||||||
# image-renderer service port used by both service and deployment
|
|
||||||
port: 8081
|
|
||||||
targetPort: 8081
|
|
||||||
# If https is enabled in Grafana, this needs to be set as 'https' to correctly configure the callback used in Grafana
|
|
||||||
grafanaProtocol: http
|
|
||||||
# In case a sub_path is used this needs to be added to the image renderer callback
|
|
||||||
grafanaSubPath: ""
|
|
||||||
# name of the image-renderer port on the pod
|
|
||||||
podPortName: http
|
|
||||||
# number of image-renderer replica sets to keep
|
|
||||||
revisionHistoryLimit: 10
|
|
||||||
networkPolicy:
|
|
||||||
# Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods
|
|
||||||
limitIngress: true
|
|
||||||
# Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods
|
|
||||||
limitEgress: false
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 100Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 50m
|
|
||||||
# memory: 50Mi
|
|
||||||
## Node labels for pod assignment
|
|
||||||
## ref: https://kubernetes.io/docs/user-guide/node-selection/
|
|
||||||
#
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
## Tolerations for pod assignment
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
|
||||||
##
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
## Affinity for pod assignment (evaluated as template)
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
|
||||||
##
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
# Create a dynamic manifests via values:
|
|
||||||
extraObjects: []
|
|
||||||
# - apiVersion: "kubernetes-client.io/v1"
|
|
||||||
# kind: ExternalSecret
|
|
||||||
# metadata:
|
|
||||||
# name: grafana-secrets
|
|
||||||
# spec:
|
|
||||||
# backendType: gcpSecretsManager
|
|
||||||
# data:
|
|
||||||
# - key: grafana-admin-password
|
|
||||||
# name: adminPassword
|
|
||||||
|
|
@@ -1,157 +0,0 @@
|
|||||||
## Default values.yaml for Telegraf
|
|
||||||
## This is a YAML-formatted file.
|
|
||||||
## ref: https://hub.docker.com/r/library/telegraf/tags/
|
|
||||||
|
|
||||||
image:
|
|
||||||
repo: "telegraf"
|
|
||||||
tag: "1.22"
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
## Configure resource requests and limits
|
|
||||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 256Mi
|
|
||||||
cpu: 0.1
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 1
|
|
||||||
|
|
||||||
## Pod annotations
|
|
||||||
podAnnotations: {}
|
|
||||||
|
|
||||||
## Pod labels
|
|
||||||
podLabels: {}
|
|
||||||
|
|
||||||
## Configure args passed to Telegraf containers
|
|
||||||
args: []
|
|
||||||
|
|
||||||
## The name of a secret in the same kubernetes namespace which contains values to
|
|
||||||
## be added to the environment (must be manually created)
|
|
||||||
## This can be useful for auth tokens, etc.
|
|
||||||
# envFromSecret: "telegraf-tokens"
|
|
||||||
|
|
||||||
## Environment
|
|
||||||
env:
|
|
||||||
# This pulls HOSTNAME from the node, not the pod.
|
|
||||||
- name: HOSTNAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
# In test clusters where hostnames are resolved in /etc/hosts on each node,
|
|
||||||
# the HOSTNAME is not resolvable from inside containers
|
|
||||||
# So inject the host IP as well
|
|
||||||
- name: HOSTIP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.hostIP
|
|
||||||
# Mount the host filesystem and set the appropriate env variables.
|
|
||||||
# ref: https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md
|
|
||||||
# HOST_PROC is required by the cpu, disk, diskio, kernel and processes input plugins
|
|
||||||
- name: "HOST_PROC"
|
|
||||||
value: "/hostfs/proc"
|
|
||||||
# HOST_SYS is required by the diskio plugin
|
|
||||||
- name: "HOST_SYS"
|
|
||||||
value: "/hostfs/sys"
|
|
||||||
- name: "HOST_MOUNT_PREFIX"
|
|
||||||
value: "/hostfs"
|
|
||||||
|
|
||||||
## Add custom volumes and mounts
|
|
||||||
# volumes:
|
|
||||||
# - name: telegraf-output-influxdb2
|
|
||||||
# configMap:
|
|
||||||
# name: "telegraf-output-influxdb2"
|
|
||||||
# mountPoints:
|
|
||||||
# - name: telegraf-output-influxdb2
|
|
||||||
# mountPath: /etc/telegraf/conf.d
|
|
||||||
# subPath: influxdb2.conf
|
|
||||||
|
|
||||||
## Tolerations for pod assignment
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
|
||||||
##
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
## If the DaemonSet should run on the host's network namespace
|
|
||||||
## hostNetwork: true
|
|
||||||
|
|
||||||
## If using hostNetwork=true, set dnsPolicy to ClusterFirstWithHostNet
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#
|
|
||||||
## dnsPolicy: ClusterFirstWithHostNet
|
|
||||||
|
|
||||||
## If using dnsPolicy=None, set dnsConfig
|
|
||||||
## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
|
|
||||||
## dnsConfig:
|
|
||||||
## nameservers:
|
|
||||||
## - 1.2.3.4
|
|
||||||
## searches:
|
|
||||||
## - ns1.svc.cluster-domain.example
|
|
||||||
## - my.dns.search.suffix
|
|
||||||
## options:
|
|
||||||
## - name: ndots
|
|
||||||
## value: "2"
|
|
||||||
## - name: edns0
|
|
||||||
|
|
||||||
rbac:
|
|
||||||
# Specifies whether RBAC resources should be created
|
|
||||||
create: true
|
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
# Specifies whether a ServiceAccount should be created
|
|
||||||
create: true
|
|
||||||
# The name of the ServiceAccount to use.
|
|
||||||
# If not set and create is true, a name is generated using the fullname template
|
|
||||||
# name:
|
|
||||||
# Annotations for the ServiceAccount
|
|
||||||
annotations: {}
|
|
||||||
|
|
||||||
## Specify priorityClassName
|
|
||||||
## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
|
||||||
# priorityClassName: system-node-critical
|
|
||||||
|
|
||||||
# Specify the pod's SecurityContext, including the OS user and group to run the pod
|
|
||||||
podSecurityContext: {}
|
|
||||||
|
|
||||||
override_config:
|
|
||||||
toml: ~
|
|
||||||
# Provide a literal TOML config
|
|
||||||
# toml: |+
|
|
||||||
# [global_tags]
|
|
||||||
# foo = "bar"
|
|
||||||
# [agent]
|
|
||||||
# interval = "10s"
|
|
||||||
# [[inputs.mem]]
|
|
||||||
# [[outputs.influxdb_v2]]
|
|
||||||
# urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
|
|
||||||
# bucket = "data"
|
|
||||||
# organization = "OurCompany"
|
|
||||||
# token = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
||||||
|
|
||||||
## Exposed telegraf configuration
|
|
||||||
## ref: https://docs.influxdata.com/telegraf/v1.13/administration/configuration/
|
|
||||||
config:
|
|
||||||
# global_tags:
|
|
||||||
# cluster: "mycluster"
|
|
||||||
agent:
|
|
||||||
interval: "10s"
|
|
||||||
round_interval: true
|
|
||||||
metric_batch_size: 1000
|
|
||||||
metric_buffer_limit: 10000
|
|
||||||
collection_jitter: "0s"
|
|
||||||
flush_interval: "10s"
|
|
||||||
flush_jitter: "0s"
|
|
||||||
precision: ""
|
|
||||||
debug: false
|
|
||||||
quiet: false
|
|
||||||
logfile: ""
|
|
||||||
hostname: "$HOSTNAME"
|
|
||||||
omit_hostname: false
|
|
||||||
outputs:
|
|
||||||
- influxdb_v2:
|
|
||||||
urls:
|
|
||||||
- "http://influxdb-influxdb2.monitoring:80"
|
|
||||||
token: N_jNm1hZTfyhJneTJj2G357mQ7EJdNzdvebjSJX6JkbyaXNup_IAqeYowblMgV8EjLypNvauTl27ewJvI_rbqQ==
|
|
||||||
organization: "influxdata"
|
|
||||||
bucket: "kluster"
|
|
||||||
monitor_self: false
|
|
||||||
docker_endpoint: "unix:///run/k3s/containerd/containerd.sock"
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user