Compare commits
709
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ead0c3adc0 | ||
|
|
7a844e7b29 | ||
|
|
83bc47cd83 | ||
|
|
869907bb45
|
||
|
|
3b4e60b93c | ||
|
|
7dc5f9feb6 | ||
|
|
ec82b44029
|
||
|
|
c5f4691eb3 | ||
|
|
db84da9a0c | ||
|
|
55d47f503f | ||
|
|
ac0278290f | ||
|
|
5c66a2396f
|
||
|
|
f9c75fd16e
|
||
|
|
a9e3a4556c | ||
|
|
b91bc8f14a | ||
|
|
b33aadf4b1 | ||
|
|
84e35ae15f | ||
|
|
5e0967311f | ||
|
|
eab631b725 | ||
|
|
91a6f91bcd | ||
|
|
4f608dfe5c | ||
|
|
f793ce5c86 | ||
|
|
65e1a14757 | ||
|
|
6aad0a763a | ||
|
|
fc4a5775a8 | ||
|
|
71498e7943 | ||
|
|
ba1de46bb0 | ||
|
|
0d92c5dbe0 | ||
|
|
949cadb0a9 | ||
|
|
82973b58fc
|
||
|
|
4db319058b | ||
|
|
5fc33da2be | ||
|
|
d623f3bc16 | ||
|
|
8895a77df1 | ||
|
|
b95594ebfa | ||
|
|
3957a525fa | ||
|
|
3ecfc1eb35 | ||
|
|
ea9a89eb21 | ||
|
|
095186b375 | ||
|
|
63cffad4f7 | ||
|
|
f6ff591cf2
|
||
|
|
f5aa4ba9be | ||
|
|
c7eb0fc97a | ||
|
|
3554d9cc49 | ||
|
|
03b6d55594 | ||
|
|
653d8705cd | ||
|
|
3f31deb6f5 | ||
|
|
1f2bf92c16 | ||
|
|
204a8d9c5e | ||
|
|
7469fb42df | ||
|
|
bb79dfe79e | ||
|
|
225e963bc8 | ||
|
|
df81167c40 | ||
|
|
c5c6add039 | ||
|
|
0fe03bb187 | ||
|
|
cae79d865d | ||
|
|
b6b2fc2d90 | ||
|
|
f677994f7a | ||
|
|
37b7f15fac | ||
|
|
79a5550612 | ||
|
|
35a9984977 | ||
|
|
fde417913a | ||
|
|
39258cd055 | ||
|
|
ecdce07900 | ||
|
|
d4c54439db | ||
|
|
6cf80a3e7e | ||
|
|
eac7fefbf8
|
||
|
|
db7d00f6b4
|
||
|
|
13aafde356
|
||
|
|
cd92901416 | ||
|
|
7ee11e8ebb
|
||
|
|
943d3caa2a
|
||
|
|
c7d1ece0c4
|
||
|
|
34205db0b4 | ||
|
|
6e35bd49b5 | ||
|
|
1af391c646 | ||
|
|
a276bcf0e3 | ||
|
|
cb203a2e91 | ||
|
|
6716097535 | ||
|
|
31e942a29a | ||
|
|
2a831a5250 | ||
|
|
3e0473ebdf | ||
|
|
ac9d40a77d | ||
|
|
68255cdb10 | ||
|
|
018fb55585 | ||
|
|
27b0aa2bd5 | ||
|
|
24c07ddff3 | ||
|
|
c0e7a34ba0 | ||
|
|
f77b088d79 | ||
|
|
4f3a991e4a | ||
|
|
3e53f177d8 | ||
|
|
7665793bbd | ||
|
|
dfc5ec5b6b | ||
|
|
b586694307
|
||
|
|
ca17e40801
|
||
|
|
c0c01a641e
|
||
|
|
c628a560f8
|
||
|
|
ee66e1e51c
|
||
|
|
0a8ab347b8
|
||
|
|
419974392a | ||
|
|
02c8c52016 | ||
|
|
d53ed6b4c4 | ||
|
|
c641d00f14 | ||
|
|
e5e1035871 | ||
|
|
d197cb858b | ||
|
|
dfb7255864 | ||
|
|
05f6b59f11 | ||
|
|
5c35a85abe | ||
|
|
b4a9540cdd | ||
|
|
a1e3138588
|
||
|
|
29b5f9b6d7
|
||
|
|
dc0832ed70
|
||
|
|
3c3fb73708 | ||
|
|
966776772b | ||
|
|
d8c23afe95 | ||
|
|
b444bb6225 | ||
|
|
4aaa96c695 | ||
|
|
dcc6e371cf | ||
|
|
183dc20d35 | ||
|
|
1355d27bd9 | ||
|
|
2f68b2d875 | ||
|
|
407555362a | ||
|
|
397f2640ad | ||
|
|
782eabcbd3 | ||
|
|
2e20ea10e6 | ||
|
|
10012bd5b0 | ||
|
|
97f1a7f069 | ||
|
|
3f670fcd3c | ||
|
|
bc60301944 | ||
|
|
846f2d8c49 | ||
|
|
3b4aa26ff4 | ||
|
|
2153672357 | ||
|
|
2bd70491b7 | ||
|
|
2d00f5ffb6 | ||
|
|
12008cf556 | ||
|
|
22bb309b98 | ||
|
|
0e74b53a14 | ||
|
|
9da875de21 | ||
|
|
ccad9a8fba | ||
|
|
ac600c9e21 | ||
|
|
ec350a56d7 | ||
|
|
4e1da3cc50 | ||
|
|
4725d3b214 | ||
|
|
80b3f2c1d6 | ||
|
|
a2612e519c | ||
|
|
51590f335d | ||
|
|
9bc8999e53 | ||
|
|
1636e10163 | ||
|
|
0b44949165 | ||
|
|
7095c5e93d | ||
|
|
9fbccc8cc0 | ||
|
|
17068ffa30 | ||
|
|
97bb76165e | ||
|
|
6bb72b07cb | ||
|
|
74f888ab60 | ||
|
|
5383cf6277 | ||
|
|
66e09072fa | ||
|
|
16bff39991
|
||
|
|
0a23fd79b1
|
||
|
|
284e61a026 | ||
|
|
96873d8e59 | ||
|
|
e12d7191ec | ||
|
|
70e6b2e731 | ||
|
|
a7473e2603 | ||
|
|
e4f1fa0c4e | ||
|
|
682119e432 | ||
|
|
1b0e4a7287 | ||
|
|
5928880b4a | ||
|
|
ff4eddea2f | ||
|
|
d55db51b77 | ||
|
|
e2ed58c4de | ||
|
|
4aff9e8638 | ||
|
|
85279ebb1c | ||
|
|
e07254bc71 | ||
|
|
0a159e7e71 | ||
|
|
02394c3168 | ||
|
|
e4c885fbf2 | ||
|
|
d95e3cf86b | ||
|
|
b61e30c421 | ||
|
|
3033620e62 | ||
|
|
455173c16f | ||
|
|
d0e868b315 | ||
|
|
9e2f81035b | ||
|
|
99da6a94da | ||
|
|
5b8167d568 | ||
|
|
b0263911f9 | ||
|
|
909de955c6 | ||
|
|
6f5f2c997e | ||
|
|
422c275b62 | ||
|
|
2700c47e1f | ||
|
|
60572f9f52 | ||
|
|
4dad44b146 | ||
|
|
03f60acceb | ||
|
|
34ad0c754a | ||
|
|
463e0c78c0 | ||
|
|
21fa72e26a | ||
|
|
e92bfb1086 | ||
|
|
ed5ddbe532 | ||
|
|
2bcc221584 | ||
|
|
febc2ebace | ||
|
|
089b89dbbe | ||
|
|
d3e473e81d | ||
|
|
8d2665f312 | ||
|
|
5d07bf59b3 | ||
|
|
2ec6e58065 | ||
|
|
4703cbcbf4 | ||
|
|
bfc5513a40 | ||
|
|
ad7e75c017 | ||
|
|
c9a7a8a7d1 | ||
|
|
038cc4ae6f | ||
|
|
cef891d4c1 | ||
|
|
721d9c5198
|
||
|
|
867370aaac
|
||
|
|
85838093eb
|
||
|
|
b29a34008f
|
||
|
|
0fcd9d60b6
|
||
|
|
3435e8dfc0
|
||
|
|
20aeaf3f44
|
||
|
|
bb7ebb00d6
|
||
|
|
9bf10d8fdd | ||
|
|
6e944e191e | ||
|
|
b4fd2eeec6 | ||
|
|
8a3b4712ce | ||
|
|
5f275f32c1 | ||
|
|
8c318060ec | ||
|
|
200c30d541 | ||
|
|
8a86ec9a2f | ||
|
|
f24b8d684c | ||
|
|
faf1132442 | ||
|
|
b1da07a495 | ||
|
|
e9b7347723 | ||
|
|
e34d6702fd | ||
|
|
d539479903 | ||
|
|
8f8bf4af7b | ||
|
|
4e6aad08e3 | ||
|
|
b27c55fde8 | ||
|
|
8106e9367c | ||
|
|
69e4b28067 | ||
|
|
6d4958aa03 | ||
|
|
0079e3e1e9 | ||
|
|
c08c1c9c9c | ||
|
|
033973f557 | ||
|
|
5e58d342b9 | ||
|
|
e678af8f63 | ||
|
|
b809f2f6df | ||
|
|
be3a28f9e4 | ||
|
|
1d20b25b0b | ||
|
|
6231e7d072 | ||
|
|
e19e425d15 | ||
|
|
090683de93 | ||
|
|
ef914c8b10 | ||
|
|
c0e64ca31b | ||
|
|
90b52eccc1 | ||
|
|
9a32778951 | ||
|
|
4e9d22ece2 | ||
|
|
a4b3a9a77b | ||
|
|
c4855c3f30 | ||
|
|
55b0408a9e | ||
|
|
8f12f678c1 | ||
|
|
7c42534cb6 | ||
|
|
cf00b32e1b | ||
|
|
2487f07d66 | ||
|
|
3bd4cbd5c2 | ||
|
|
c592fc69f0 | ||
|
|
b9940c1a83 | ||
|
|
7168bb6bd0 | ||
|
|
fae3ef506e | ||
|
|
c33fbd1370
|
||
|
|
8472829ffa | ||
|
|
a68f27b631 | ||
|
|
e47aa0d024 | ||
|
|
4ef76abbb2 | ||
|
|
7d231dec88
|
||
|
|
81431971c2 | ||
|
|
1c7c4e9fd8 | ||
|
|
2b88f9e765
|
||
|
|
d48e21ada7
|
||
|
|
ebddfbf1fb | ||
|
|
92d66145f3 | ||
|
|
fd46f3f0b3 | ||
|
|
3ddb6c24ea | ||
|
|
a5cab6c570 | ||
|
|
803f086a54 | ||
|
|
272537bb63 | ||
|
|
25b28d046d | ||
|
|
a4598c6caa | ||
|
|
343f0785b3 | ||
|
|
c9836ffa1f | ||
|
|
b917739a13 | ||
|
|
a8c1f39a03 | ||
|
|
b52c5a8eba | ||
|
|
0521df9e92 | ||
|
|
6e8275454e | ||
|
|
493984abe4
|
||
|
|
5e9efc3a3b | ||
|
|
c3b3db2651 | ||
|
|
519b8eebb9 | ||
|
|
3bef85f5a6 | ||
|
|
a1baddb427 | ||
|
|
e3d2b0f65f | ||
|
|
8a5598d4a9
|
||
|
|
3368d4ba29
|
||
|
|
8255a8a3ae | ||
|
|
51a544b103 | ||
|
|
18917ae78d
|
||
|
|
2cf9b56629
|
||
|
|
1854511adf | ||
|
|
4b26152245 | ||
|
|
3f8efe67c3
|
||
|
|
bc5fe3912d | ||
|
|
ea317c1c61 | ||
|
|
f046201dab | ||
|
|
160160b56d | ||
|
|
059e89bedb | ||
|
|
032684eec6 | ||
|
|
f8013da2aa | ||
|
|
28c4eb526c | ||
|
|
edbd951776 | ||
|
|
2cdf6d3cbb | ||
|
|
4285fa6352 | ||
|
|
9ab9aaa506 | ||
|
|
cfa129da43 | ||
|
|
9d95fc12ba | ||
|
|
befc4591a6 | ||
|
|
65b782dce7 | ||
|
|
4f6d2b3073 | ||
|
|
af8d3910b7 | ||
|
|
0b61a47008 | ||
|
|
629c5505a7 | ||
|
|
b237c95dde | ||
|
|
c9059d8302 | ||
|
|
e89f848734 | ||
|
|
7cca04fbad | ||
|
|
494042f2b8 | ||
|
|
8b95212625 | ||
|
|
4ef75f78c9 | ||
|
|
bd1c92efa2 | ||
|
|
fd18e4ed24 | ||
|
|
d08bcd6203 | ||
|
|
f803f5426c | ||
|
|
0077eb909a | ||
|
|
184bd4b256 | ||
|
|
2862f9e3eb | ||
|
|
12d1903e8e | ||
|
|
6a5bffd57f | ||
|
|
d6b504ed4b | ||
|
|
5485e5e210 | ||
|
|
077be387b1
|
||
|
|
372dede85c | ||
|
|
2bbe37f85b | ||
|
|
7a44b84ffb | ||
|
|
0ed927c6dd | ||
|
|
42fdc8b490 | ||
|
|
2a7f5df0f5 | ||
|
|
1a9e02db02 | ||
|
|
9e26c4a018 | ||
|
|
de74f642b8 | ||
|
|
1ac805a8c9 | ||
|
|
1f54e0c3a4 | ||
|
|
783b6a3cdc | ||
|
|
d8e855148c | ||
|
|
c6446d9e78 | ||
|
|
2ed56146cc | ||
|
|
35d28c6d39 | ||
|
|
c9901ee6d1 | ||
|
|
e7cfadd76b | ||
|
|
8895debbea | ||
|
|
3a35247283 | ||
|
|
8c017e1645 | ||
|
|
c0eb5b6d83 | ||
|
|
2b81239dd8 | ||
|
|
080d6d3b18 | ||
|
|
d99d4d974b | ||
|
|
f6d4d811cc | ||
|
|
7a72ca6aa8 | ||
|
|
b8d80143d6 | ||
|
|
81c3b562ab | ||
|
|
e0b8bd0bd8 | ||
|
|
cbde1c9b7f | ||
|
|
2d55b7560f | ||
|
|
44407c10a3 | ||
|
|
d2f651cafe | ||
|
|
e0bcb235c2 | ||
|
|
c533ec0ea5 | ||
|
|
39a5e5d85b | ||
|
|
6cbf99a3dd | ||
|
|
9975be6023 | ||
|
|
2ba6ed2468 | ||
|
|
0ed5ce52ad | ||
|
|
df88cde4f6 | ||
|
|
142fe29f54 | ||
|
|
79e4a92af7 | ||
|
|
09957b422b | ||
|
|
75fb5bf5ff | ||
|
|
cd97713b34 | ||
|
|
ec95e34e9e | ||
|
|
2eb5c2c390 | ||
|
|
4f10f63579 | ||
|
|
416600ea6e | ||
|
|
07968925b3 | ||
|
|
27aaeefd95 | ||
|
|
11cbca1b6f | ||
|
|
c232daf504 | ||
|
|
d3b93c07f4 | ||
|
|
003ec6b24f | ||
|
|
c756f5804a | ||
|
|
e856c3d995 | ||
|
|
e48fa28c3f | ||
|
|
25fbb7d23f | ||
|
|
29449e2c9f | ||
|
|
7fec16ecab
|
||
|
|
b8655242fa
|
||
|
|
2ac88a7bc3
|
||
|
|
044d601bc8
|
||
|
|
b3f2362db7 | ||
|
|
8bf4174863 | ||
|
|
c8fd05f0df | ||
|
|
0930e7cd59 | ||
|
|
cc5dd02912 | ||
|
|
6cba8a6d88 | ||
|
|
b629bfae2e | ||
|
|
8956c5140c | ||
|
|
703c72afb0 | ||
|
|
f026a1321b | ||
|
|
257368d485 | ||
|
|
a481b45654 | ||
|
|
963b62afa5 | ||
|
|
5e083f61b6 | ||
|
|
ad77d79a61 | ||
|
|
5d170b78c8 | ||
|
|
696615b5f0 | ||
|
|
7f5f724688 | ||
|
|
0550d487ac | ||
|
|
acf8a706b3 | ||
|
|
6e5226b74f | ||
|
|
7aa5e5e4de | ||
|
|
201edea180 | ||
|
|
7da3bed7f5 | ||
|
|
cf1491fc4a
|
||
|
|
1486556981
|
||
|
|
f3297d4166
|
||
|
|
6e96d7d5da
|
||
|
|
58f0cfa9a2 | ||
|
|
64b4064ee1 | ||
|
|
e2de0acebf | ||
|
|
a05da745ee | ||
|
|
5fa41babaf | ||
|
|
9ef7dd183c | ||
|
|
c855a9d477 | ||
|
|
86271931e9 | ||
|
|
c672a03227 | ||
|
|
e0c95eee2f | ||
|
|
a7ed0f9353 | ||
|
|
12bdddf153 | ||
|
|
3ede731c28 | ||
|
|
45663e2e41 | ||
|
|
4f4e5a8285 | ||
|
|
9465d62c27 | ||
|
|
6be9349de4 | ||
|
|
f3e929d8af | ||
|
|
ffd8a9594e | ||
|
|
7e4ff44720 | ||
|
|
9501ac8bb1 | ||
|
|
bf74d7efab | ||
|
|
cbcfb488a7
|
||
|
|
922a496d18
|
||
|
|
96b5e8cf24
|
||
|
|
10fe20e939 | ||
|
|
b21c4b8413 | ||
|
|
c507a43352
|
||
|
|
593b9812d9 | ||
|
|
60d42c872c | ||
|
|
4b9d02607e | ||
|
|
de755bd511 | ||
|
|
5a3a7195ad
|
||
|
|
ebdfff210b
|
||
|
|
26ba76b463
|
||
|
|
8440f9e1cb
|
||
|
|
92f1a74b93
|
||
|
|
29ee4f0398 | ||
|
|
b9effc4cb1 | ||
|
|
e8e8f196bd | ||
|
|
c588a8fee0 | ||
|
|
dff439ce06 | ||
|
|
50c88dda7f | ||
|
|
8c56aba369 | ||
|
|
a5e693a101 | ||
|
|
ed1f4506d4 | ||
|
|
eae3c563a2 | ||
|
|
ef147d7226 | ||
|
|
f189f8cca2 | ||
|
|
3d27f1180f | ||
|
|
dba15f56ea | ||
|
|
c470901b1a | ||
|
|
6c23bba17f | ||
|
|
4fdded9f56 | ||
|
|
50da8e6f3a | ||
|
|
b443028b74
|
||
|
|
09c80dda70
|
||
|
|
9e591315c1 | ||
|
|
cfc50fcbf4 | ||
|
|
3c18b88393
|
||
|
|
813ec159a9
|
||
|
|
38e6083fec
|
||
|
|
5ec45e625e
|
||
|
|
014573284f | ||
|
|
cb9c4aca50 | ||
|
|
76f21ba0a6 | ||
|
|
daf6a46e54 | ||
|
|
4c49adc39d | ||
|
|
23bc9538d7 | ||
|
|
be073df80e | ||
|
|
bfbcaefb3e | ||
|
|
6e1e234666 | ||
|
|
512f970bca | ||
|
|
10a98260cf | ||
|
|
c70f9fc458 | ||
|
|
d129ddb9bc | ||
|
|
903669b69e | ||
|
|
f7b9c1a4e8 | ||
|
|
e01ce9d8f8 | ||
|
|
e087a4c70f | ||
|
|
bf300f829a | ||
|
|
e7d696f04c | ||
|
|
b5d4bda35c | ||
|
|
54f0173e5a | ||
|
|
7b0d7a4c4f | ||
|
|
8509d0335f | ||
|
|
3fc13ce126 | ||
|
|
4b93c630f4 | ||
|
|
e4cf167942 | ||
|
|
cfa9cfe468 | ||
|
|
7f0ec8ef2f | ||
|
|
a83da6edb9 | ||
|
|
dae2ad04dc | ||
|
|
2a34d6d4dc | ||
|
|
75d1d522a3 | ||
|
|
04de7d9573 | ||
|
|
96331a3569 | ||
|
|
c30ff337ee | ||
|
|
96633d19d6 | ||
|
|
206adbb7f2 | ||
|
|
1d29241e3c | ||
|
|
6c42c98bd1 | ||
|
|
dd489762e1 | ||
|
|
0a0fc2dc6b | ||
|
|
438db7a471 | ||
|
|
bb950e67e7 | ||
|
|
e13342b7a5 | ||
|
|
733a63ae27
|
||
|
|
7f21c584a4 | ||
|
|
6c1d4fb5b8 | ||
|
|
e5cb2f35e3 | ||
|
|
e66c5d2147 | ||
|
|
a4fc0f1b3f
|
||
|
|
a496c0cd8e
|
||
|
|
db27aa023b | ||
|
|
86f2336eeb | ||
|
|
c207c43567 | ||
|
|
2c6bee2e66 | ||
|
|
4823517675 | ||
|
|
a679a48644 | ||
|
|
7ec4cd1482 | ||
|
|
debcbd8df5 | ||
|
|
839d4f065d | ||
|
|
1123f0e6fa | ||
|
|
ead9ed20e8
|
||
|
|
2732a24201
|
||
|
|
ce6b933f10
|
||
|
|
2cde93b2df
|
||
|
|
d08c78b37b
|
||
|
|
81d1399b76 | ||
|
|
6a9f40991a | ||
|
|
7d994aa814 | ||
|
|
27c66258d7 | ||
|
|
73d50c3c13 | ||
|
|
78f4de4a72 | ||
|
|
419af24e48 | ||
|
|
efa33903f3 | ||
|
|
62ba08f06a | ||
|
|
97c353a1e3 | ||
|
|
0d5c12bcf5 | ||
|
|
e513089d8c | ||
|
|
6a8cd6953a | ||
|
|
41083dfc7a | ||
|
|
ba756c370a | ||
|
|
cce26dc206 | ||
|
|
a3ffc6d395 | ||
|
|
12e5172c3e | ||
|
|
b1cbe9770e | ||
|
|
c4a1654f75 | ||
|
|
0c6c45584f | ||
|
|
1de710badb | ||
|
|
56f4c82c59 | ||
|
|
40f624d7f6 | ||
|
|
e0d4d327e8 | ||
|
|
ea82e9a1ae | ||
|
|
c44545acee | ||
|
|
531e74e56d | ||
|
|
7b0e2240a3 | ||
|
|
497cf9c279 | ||
|
|
56395b7e2d | ||
|
|
6e5d298daf | ||
|
|
c172fb8f06 | ||
|
|
5512f4b5cb | ||
|
|
45ef9d99af | ||
|
|
51f5250a51 | ||
|
|
f3331b7c36 | ||
|
|
359809ec3e | ||
|
|
5d317815a6 | ||
|
|
3060651f33 | ||
|
|
1267aee558 | ||
|
|
c4deb4530c | ||
|
|
8071aaf13c | ||
|
|
b3507ddbb4 | ||
|
|
bfcddd7a76 | ||
|
|
b3aa166e16 | ||
|
|
2bc0b9f4df | ||
|
|
b6b5027601 | ||
|
|
c22d5d3428
|
||
|
|
6c34c4ca9e | ||
|
|
d32d64d78e | ||
|
|
cf3a9b9aba | ||
|
|
643ba071e0 | ||
|
|
42c7163710 | ||
|
|
ca76486945 | ||
|
|
a8142056c6 | ||
|
|
8f8bd1d7f1 | ||
|
|
28ce27280d
|
||
|
|
8442208f02
|
||
|
|
6d9ebaf533
|
||
|
|
b83ddcce89
|
||
|
|
6a5360a803
|
||
|
|
d6ad2f1c79
|
||
|
|
68a06195e9
|
||
|
|
b8e08002dd
|
||
|
|
3fa3703b27
|
||
|
|
84fbd628db
|
||
|
|
32158e4cef
|
||
|
|
7c52a9dc34
|
||
|
|
8d2ab9205a | ||
|
|
e2fafc6a7e | ||
|
|
375343d100 | ||
|
|
0eb69ef4f5 | ||
|
|
de9197d740 | ||
|
|
abbc4fc453 | ||
|
|
77d24ae009 | ||
|
|
193406e7df | ||
|
|
c15da69d83 | ||
|
|
23a6d889f1 | ||
|
|
57ac458504
|
||
|
|
e53a02014a
|
||
|
|
eefb79771f
|
||
|
|
a3f8762679
|
||
|
|
6e064edb7c
|
||
|
|
0243dc08e7
|
||
|
|
a6ce82e001
|
||
|
|
68d172423c
|
||
|
|
390986ffaa
|
||
|
|
44b8088899 | ||
|
|
6de863bba5 | ||
|
|
4ea8bf9acd
|
||
|
|
c3053250a3
|
||
|
|
91a3cc22b0
|
||
|
|
d97cdc1bdc
|
||
|
|
435cee3116
|
||
|
|
5950568286
|
||
|
|
2d6faab122
|
||
|
|
2eca62bf5d
|
||
|
|
aa3c98d453 | ||
|
|
b334e52544 | ||
|
|
78af20ec62
|
||
|
|
cfb3de7e76
|
||
|
|
627b997241
|
||
|
|
aa1163aab9
|
||
|
|
3c5c5e9016
|
||
|
|
42328cb5f0
|
||
|
|
f4aac5f5e6
|
||
|
|
87286c91d0
|
||
|
|
9aa1b0f522
|
||
|
|
2cf08255cc
|
||
|
|
5e8e1ff294
|
||
|
|
556ba744f9
|
||
|
|
9565bee15f
|
||
|
|
487aea3af4
|
||
|
|
c6380f0350
|
||
|
|
6ce44f3132
|
||
|
|
63510aa4bb
|
||
|
|
f25ef5e5bb
|
||
|
|
5ac34d3890 | ||
|
|
8a7ad6fa2d | ||
|
|
3914740922 | ||
|
|
56f61deeb3 | ||
|
|
4c406eed40 | ||
|
|
1ee1ba0659 | ||
|
|
ae06bd0ab6 | ||
|
|
56100ba077 | ||
|
|
bb057547a8 | ||
|
|
00c78fddd5 | ||
|
|
d7be1186c7 | ||
|
|
d4a3d5f4a7 | ||
|
|
e59f5f6e65 | ||
|
|
a8c0df9ee4 | ||
|
|
33f9840d59 | ||
|
|
1546086d4f | ||
|
|
2457da2a2a | ||
|
|
b3ec9a50ea | ||
|
|
ef70214fd5 | ||
|
|
2b635174c3 |
No files matched your search
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: base64
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/base64
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: bsky-screenshot
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/bsky-screenshot
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: cel-tester
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/cel-tester
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -1,27 +1,3 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cert-manager-civo
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: cert-manager
|
||||
name: civo
|
||||
source:
|
||||
path: manifests/certmanager-civo
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
---
|
||||
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
@@ -59,7 +35,7 @@ spec:
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
repoURL: 'https://charts.jetstack.io'
|
||||
targetRevision: 1.11.0
|
||||
targetRevision: v1.21.3
|
||||
chart: cert-manager
|
||||
helm:
|
||||
version: v3
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: civo-versions
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/civo-versions
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: cv
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/cv
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -22,5 +22,9 @@ spec:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
- group: apps
|
||||
kind: Deployment
|
||||
jqPathExpressions:
|
||||
- .spec.template.spec.containers[]?.image
|
||||
|
||||
---
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: feed-fetcher
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/feed-fetcher
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
# apiVersion: argoproj.io/v1alpha1
|
||||
# kind: Application
|
||||
# metadata:
|
||||
# name: cluster-fun-goldilocks
|
||||
# namespace: argocd
|
||||
# finalizers:
|
||||
# - resources-finalizer.argocd.argoproj.io
|
||||
# spec:
|
||||
# project: cluster.fun
|
||||
# destination:
|
||||
# namespace: goldilocks
|
||||
# name: cluster-fun (v2)
|
||||
# source:
|
||||
# repoURL: 'https://charts.fairwinds.com/stable'
|
||||
# targetRevision: 10.1.0
|
||||
# chart: goldilocks
|
||||
# helm:
|
||||
# version: v3
|
||||
# values: |-
|
||||
# vpa:
|
||||
# enabled: true
|
||||
# controller:
|
||||
# flags:
|
||||
# on-by-default: true
|
||||
# dashboard:
|
||||
# flags:
|
||||
# on-by-default: true
|
||||
# replicaCount: 1
|
||||
# syncPolicy:
|
||||
# automated: {}
|
||||
# syncOptions:
|
||||
# - CreateNamespace=true
|
||||
|
||||
# ---
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: goplayground
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/goplayground
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
+3
-3
@@ -1,17 +1,17 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-twitter-profile-pic
|
||||
name: cluster-fun-homelab-accessible-check
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: twitter-profile-pic
|
||||
namespace: homelab-accessible-check
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/twitter-profile-pic
|
||||
path: manifests/homelab-accessible-check
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: link
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/link
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-tank
|
||||
name: mazanoke
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: tank
|
||||
namespace: mazanoke
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/tank
|
||||
path: manifests/mazanoke
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
@@ -23,4 +23,3 @@ spec:
|
||||
jsonPointers:
|
||||
- /data
|
||||
|
||||
---
|
||||
@@ -1,24 +0,0 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: monitoring-civo
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: monitoring
|
||||
name: civo
|
||||
source:
|
||||
path: manifests/monitoring-civo
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: opengraph
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/opengraph
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-matrix
|
||||
name: pairdrop
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: chat
|
||||
namespace: pairdrop
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/matrix_chart
|
||||
path: manifests/pairdrop
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
automated: {}
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
---
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: planning-poker
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: planning-poker
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/planning-poker
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-mastodon-digest
|
||||
name: cluster-fun-priority-classes
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: mastodon-digest
|
||||
namespace: kube-system
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/mastodon-digest
|
||||
path: manifests/priority-classes
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
@@ -1,24 +0,0 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: proxy-civo
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: proxy-civo
|
||||
name: civo
|
||||
source:
|
||||
path: manifests/proxy-civo
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: qr
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/qr
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -12,30 +12,7 @@ spec:
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
repoURL: 'https://stakater.github.io/stakater-charts'
|
||||
targetRevision: v0.0.89
|
||||
chart: reloader
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-reloader-civo
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: kube-system
|
||||
name: civo
|
||||
source:
|
||||
repoURL: 'https://stakater.github.io/stakater-charts'
|
||||
targetRevision: v0.0.89
|
||||
targetRevision: v0.0.129
|
||||
chart: reloader
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: social-to-rolodex
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/social-to-rolodex
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: sre-agent
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: default
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/sre-agent
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: svg-to-dxf
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/svg-to-dxf
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: talks
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/talks
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: text-to-dxf
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/text-to-dxf
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: til
|
||||
name: civo
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/til
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: traefik-civo
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: kube-system
|
||||
name: civo
|
||||
source:
|
||||
path: manifests/traefik
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
@@ -1,17 +1,17 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: tweetsvg
|
||||
name: trek
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: tweetsvg
|
||||
name: civo
|
||||
namespace: trek
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/tweetsvg
|
||||
path: manifests/trek
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
@@ -1,17 +1,17 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cluster-fun-wallabag
|
||||
name: url-to-grist
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: wallabag
|
||||
namespace: cloudnative-now
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/wallabag
|
||||
path: manifests/url-to-grist
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
@@ -0,0 +1,25 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: vert
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: cluster.fun
|
||||
destination:
|
||||
namespace: vert
|
||||
name: cluster-fun (v2)
|
||||
source:
|
||||
path: manifests/vert
|
||||
repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git"
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- kind: Secret
|
||||
jsonPointers:
|
||||
- /data
|
||||
|
||||
@@ -18,6 +18,7 @@ spec:
|
||||
- ombi.cluster.fun
|
||||
- bsky-feeds.cluster.fun
|
||||
- ai.cluster.fun
|
||||
- hermes-hooks.cluster.fun
|
||||
secretName: non-auth-proxy-ingress
|
||||
rules:
|
||||
- host: hello-world.cluster.fun
|
||||
@@ -60,3 +61,13 @@ spec:
|
||||
name: tailscale-proxy
|
||||
port:
|
||||
name: non-auth
|
||||
- host: hermes-hooks.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: tailscale-proxy
|
||||
port:
|
||||
name: non-auth
|
||||
@@ -38,6 +38,7 @@ spec:
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
serviceAccountName: default
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig:
|
||||
@@ -45,7 +46,7 @@ spec:
|
||||
- 100.100.100.100
|
||||
containers:
|
||||
- name: proxy
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/proxy:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/proxy:latest@sha256:2a401eec859bf665e75bbb737b3b1709cd1fa74576e4ba8c7daeb63d8b3e8d51
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: PROXY_DESTINATION
|
||||
@@ -67,7 +68,7 @@ spec:
|
||||
mountPath: /config/
|
||||
|
||||
- name: oauth-proxy
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.6@sha256:c3415e8660af553f5e18f5d90db050614c02493c0ac6260ac59442f6d9b12048
|
||||
args:
|
||||
- --cookie-secure=false
|
||||
- --provider=oidc
|
||||
@@ -101,9 +102,9 @@ spec:
|
||||
protocol: TCP
|
||||
resources:
|
||||
limits:
|
||||
memory: 50Mi
|
||||
memory: 80Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
memory: 80Mi
|
||||
volumes:
|
||||
- name: host-mappings
|
||||
configMap:
|
||||
|
||||
@@ -29,9 +29,10 @@ spec:
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: docker-config
|
||||
priorityClassName: low
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/base64:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/base64:latest@sha256:1ec2b770a5ffe986bdfbf24094ed945191bd7b9dd27a7b3212af92a3dfcea032
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
@@ -49,11 +50,10 @@ metadata:
|
||||
namespace: base64
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- base64.cluster.fun
|
||||
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: black-hole
|
||||
image: averagemarcus/black-hole:latest
|
||||
image: averagemarcus/black-hole:latest@sha256:1e9cb8396f67aeb25a9eaaf14b369a53a7b300ae465859f10d9f0f88ef3023e1
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 9090
|
||||
|
||||
@@ -27,9 +27,18 @@ spec:
|
||||
labels:
|
||||
app: blog
|
||||
spec:
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 100
|
||||
podAffinityTerm:
|
||||
labelSelector:
|
||||
matchLabels:
|
||||
app: blog
|
||||
topologyKey: kubernetes.io/hostname
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/blog:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/blog:latest@sha256:d40aa67a51924a89ad0ac6f7387a63f2f41e9bff7b5e4c6f7675cd43354b0c28
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
|
||||
@@ -29,16 +29,16 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/bsky-screenshot:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/bsky-screenshot:latest@sha256:0fae863fc3123f73aa6268a125d5bf2c2122c8a3f2aedaf129462e668e56ab23
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 20Mi
|
||||
memory: 105Mi
|
||||
requests:
|
||||
memory: 20Mi
|
||||
memory: 105Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
@@ -47,11 +47,10 @@ metadata:
|
||||
namespace: bsky-screenshot
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- bsky-screenshot.cluster.fun
|
||||
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/cel-tester:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/cel-tester:latest@sha256:caf9044a19fa0e14f92232f68c1fe808249580d33619ea3706ff935bd2853559
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
@@ -47,11 +47,10 @@ metadata:
|
||||
namespace: cel-tester
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- cel-tester.cluster.fun
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: cert-manager
|
||||
labels:
|
||||
certmanager.k8s.io/disable-validation: "true"
|
||||
|
||||
---
|
||||
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: letsencrypt
|
||||
spec:
|
||||
acme:
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
email: letsencrypt@marcusnoble.co.uk
|
||||
privateKeySecretRef:
|
||||
name: letsencrypt
|
||||
solvers:
|
||||
- http01:
|
||||
ingress:
|
||||
class: traefik
|
||||
@@ -38,9 +38,10 @@ spec:
|
||||
labels:
|
||||
app: civo-versions
|
||||
spec:
|
||||
priorityClassName: low
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/civo-versions:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/civo-versions:latest@sha256:90585c61b82e124f9179b60fc8231247e3b37cab76fd7c0185aeb4a4276a0ab4
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
@@ -66,11 +67,10 @@ metadata:
|
||||
namespace: civo-versions
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- civo-versions.cluster.fun
|
||||
|
||||
@@ -29,14 +29,19 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/cors-proxy:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/cors-proxy:latest@sha256:306783c26392f92af7e34d173493b0f8d6fd7623421d16a02fad26857317aeec
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
name: web
|
||||
env:
|
||||
- name: ALLOWLIST
|
||||
value: cdn.bsky.app
|
||||
value: cdn.bsky.app,en.wikipedia.org
|
||||
resources:
|
||||
requests:
|
||||
memory: 184M
|
||||
limits:
|
||||
memory: 184M
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
|
||||
@@ -62,11 +62,10 @@ metadata:
|
||||
namespace: cv
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- cv.marcusnoble.co.uk
|
||||
|
||||
@@ -81,7 +81,7 @@ spec:
|
||||
secretKeyRef:
|
||||
key: password
|
||||
name: dashboard-auth
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.6@sha256:c3415e8660af553f5e18f5d90db050614c02493c0ac6260ac59442f6d9b12048
|
||||
name: oauth-proxy
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
|
||||
@@ -31,7 +31,7 @@ spec:
|
||||
- name: docker-config
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/devstats-viewer:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/devstats-viewer:latest@sha256:ecf19a3dd9ecc16f78d0a276aa977a7a8ee17635d5ee68ea86e5ee0a2e1ebe48
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
|
||||
@@ -29,11 +29,16 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/feed-fetcher:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/feed-fetcher:latest@sha256:fe79408673dda5c73ed05e38cac441cbbbebd264548318f1e4701751c6a32b35
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: web
|
||||
resources:
|
||||
requests:
|
||||
memory: 80M
|
||||
limits:
|
||||
memory: 80M
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
@@ -42,11 +47,10 @@ metadata:
|
||||
namespace: feed-fetcher
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- feed-fetcher.cluster.fun
|
||||
|
||||
@@ -78,7 +78,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: sync
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/git-sync:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/git-sync:latest@sha256:6060f0e77e324179cf6b2136a180ceecbcc64344682154b8848434fd105323e7
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: GITHUB_TOKEN
|
||||
|
||||
@@ -40,9 +40,10 @@ spec:
|
||||
labels:
|
||||
app: git
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: git
|
||||
image: gitea/gitea:1.24.5
|
||||
image: gitea/gitea:28.3.0@sha256:8967bf9deaf3c5c4adae13519436dc1b20c646ac83fe37ae810c933a1045227d
|
||||
env:
|
||||
- name: APP_NAME
|
||||
value: "Git"
|
||||
@@ -66,6 +67,8 @@ spec:
|
||||
value: arc-green
|
||||
- name: ALLOWED_HOST_LIST
|
||||
value: "*"
|
||||
- name: EGRESS_MODE
|
||||
value: "lax"
|
||||
- name: SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
@@ -76,7 +79,7 @@ spec:
|
||||
name: web
|
||||
resources:
|
||||
requests:
|
||||
memory: 400Mi
|
||||
memory: 700Mi
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: git-data
|
||||
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: x1unix/go-playground:2.5.7
|
||||
image: x1unix/go-playground:3.0.0@sha256:4c4a9bcbc0413faaacc8eb0a425922858a55b73ab03f5359082217d5b93cc000
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
@@ -47,11 +47,10 @@ metadata:
|
||||
namespace: goplayground
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- go.cluster.fun
|
||||
|
||||
@@ -64,15 +64,18 @@ spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: grist
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: grist
|
||||
spec:
|
||||
serviceAccountName: grist
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: grist
|
||||
image: gristlabs/grist-oss:1.7.2
|
||||
image: gristlabs/grist-oss:1.7.22@sha256:40d2c0ce0c29b2aa1ec1dcf9652ec26a13a8f2b4b44116733bcede428afd27dc
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
@@ -97,14 +100,17 @@ spec:
|
||||
value: default
|
||||
- name: GRIST_TELEMETRY_LEVEL
|
||||
value: "off"
|
||||
- name: ALLOWED_WEBHOOK_DOMAINS
|
||||
value: "tank.tank.svc,matrix.cluster.fun"
|
||||
- name: GRIST_ANON_PLAYGROUND
|
||||
value: "false"
|
||||
- name: GRIST_FORCE_LOGIN
|
||||
value: "true"
|
||||
- name: GRIST_SANDBOX_FLAVOR
|
||||
value: gvisor
|
||||
resources:
|
||||
requests:
|
||||
memory: 300M
|
||||
limits:
|
||||
memory: 600M
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: docker-config
|
||||
namespace: homelab-accessible-check
|
||||
annotations:
|
||||
kube-1password: i6ngbk5zf4k52xgwdwnfup5bby
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: .dockerconfigjson
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
data:
|
||||
.dockerconfigjson: e30=
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: homelab-accessible-check
|
||||
namespace: homelab-accessible-check
|
||||
annotations:
|
||||
kube-1password: bz6ujxc5neqma242lpfqdxfiay
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: homelab-accessible-check
|
||||
namespace: homelab-accessible-check
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: homelab-accessible-check
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: homelab-accessible-check
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: docker-config
|
||||
containers:
|
||||
- name: checker
|
||||
image: rg.fr-par.scw.cloud/averagemarcus-private/homelab-accessible-check:latest
|
||||
imagePullPolicy: Always
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: "homelab-accessible-check"
|
||||
resources:
|
||||
limits:
|
||||
memory: 50Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
@@ -35,6 +35,18 @@ data:
|
||||
cnsmunich-feedback: https://yay-or-nay.cluster.fun/feedback/20UETBI0
|
||||
containerdays25: https://speaking.marcusnoble.co.uk/HARSlE/the-future-of-kubernetes-admission-logic
|
||||
containerdays25-feedback: https://yay-or-nay.cluster.fun/feedback/F8P351QK
|
||||
cdl-2026: https://speaking.marcusnoble.co.uk/lMcEwR/pod-deep-dive-the-interesting-bits
|
||||
cdl-2026-feedback: https://yay-or-nay.cluster.fun/feedback/EMLARINI
|
||||
cdl-talk-2026: https://speaking.marcusnoble.co.uk/0rRvmv/debugging-your-conference-talk-practical-tips-to-resonate-with-your-audience
|
||||
cdl-talk-2026-feedback: https://yay-or-nay.cluster.fun/feedback/22TO05MQ
|
||||
technical-talking-blog-post: https://marcusnoble.co.uk/2025-04-30-my-tips-on-giving-technical-talks/
|
||||
kubecon-eu-26: https://speaking.marcusnoble.co.uk/zT471P/kube-oddities-the-quirks-that-keep-kubernetes-interesting
|
||||
cndro26: https://speaking.marcusnoble.co.uk/1OrBAe/kube-oddities-the-quirks-that-keep-kubernetes-interesting-marcus-noble-mark-sagi-kazar
|
||||
cdh26: https://speaking.marcusnoble.co.uk/dvat0w/kube-oddities-the-quirks-that-keep-kubernetes-interesting-marcus-noble-mark-sagi-kazar
|
||||
kcdsofia26: https://speaking.marcusnoble.co.uk/GFJgtL/kube-oddities-the-quirks-that-keep-kubernetes-interesting-marcus-noble-mark-sagi-kazar
|
||||
cndpoland26: https://speaking.marcusnoble.co.uk/sZ2Ulk/kube-oddities-the-quirks-that-keep-kubernetes-interesting-marcus-noble-mark-sagi-kazar
|
||||
kcduk2026: https://speaking.marcusnoble.co.uk/Xpj6t6/pod-deep-dive-the-interesting-bits
|
||||
kcduk2026-feedback: https://yay-or-nay.cluster.fun/feedback/BS01AM1M
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
@@ -59,6 +71,8 @@ metadata:
|
||||
namespace: link
|
||||
labels:
|
||||
app: link
|
||||
annotations:
|
||||
secret.reloader.stakater.com/reload: "urls-map"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
@@ -69,9 +83,10 @@ spec:
|
||||
labels:
|
||||
app: link
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/link:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/link:latest@sha256:11d3908c87c91c3e9b0ac64377a016f967eb96d92c5a478f61ac4d6e4b7128f9
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 5050
|
||||
@@ -91,11 +106,10 @@ metadata:
|
||||
namespace: link
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- go-get.link
|
||||
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/marcusnoble:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/marcusnoble:latest@sha256:258e639003301f9a41a796c74a963b624454de6dad2dd90f0a1eb745027cfc88
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
@@ -39,16 +39,16 @@ spec:
|
||||
memory: 50Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
# livenessProbe:
|
||||
# httpGet:
|
||||
# path: /healthz
|
||||
# port: web
|
||||
# initialDelaySeconds: 10
|
||||
# readinessProbe:
|
||||
# httpGet:
|
||||
# path: /healthz
|
||||
# port: web
|
||||
# initialDelaySeconds: 10
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: web
|
||||
initialDelaySeconds: 10
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: web
|
||||
initialDelaySeconds: 10
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: docker-config
|
||||
namespace: mastodon-digest
|
||||
annotations:
|
||||
kube-1password: i6ngbk5zf4k52xgwdwnfup5bby
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: .dockerconfigjson
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
data:
|
||||
.dockerconfigjson: e30=
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: mastodon-digest-auth
|
||||
namespace: mastodon-digest
|
||||
annotations:
|
||||
kube-1password: mr6spkkx7n3memkbute6ojaarm
|
||||
kube-1password/vault: Kubernetes
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: mastodon-digest
|
||||
namespace: mastodon-digest
|
||||
annotations:
|
||||
kube-1password: bfklz3yi3dn4e7xtsbttcvhata
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: config
|
||||
namespace: mastodon-digest
|
||||
labels:
|
||||
app: mastodon-digest
|
||||
data:
|
||||
config.json: |
|
||||
[
|
||||
{
|
||||
"timeline": "home",
|
||||
"hours": 12,
|
||||
"scorer": "ExtendedSimpleWeighted",
|
||||
"threshold": "lax",
|
||||
"output": "/usr/share/nginx/html/home/"
|
||||
},
|
||||
{
|
||||
"timeline": "federated",
|
||||
"hours": 12,
|
||||
"scorer": "ExtendedSimpleWeighted",
|
||||
"threshold": "lax",
|
||||
"output": "/usr/share/nginx/html/federated/"
|
||||
}
|
||||
]
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: index
|
||||
namespace: mastodon-digest
|
||||
labels:
|
||||
app: mastodon-digest
|
||||
data:
|
||||
index.html: |
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta chartset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Mastodon Digest</title>
|
||||
<style>
|
||||
body { background-color: #292c36; font-family: "Arial", sans-serif; }
|
||||
div#container { margin: auto; max-width: 640px; padding: 10px; text-align: center; margin: 0 auto; }
|
||||
.links { align: center; }
|
||||
h1 { color: white; }
|
||||
a.button { background: #595aff; color: #fff; line-height: 1.2; min-height: 38px; min-width: 88px; padding: 0 30px; border: 0; border-radius: 6px;; display: inline-flex; justify-content: center; align-items: center; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<h1>Mastodon Digest</h1>
|
||||
<section class="links">
|
||||
<a href="home/" class="button">Home</a>
|
||||
<a href="federated/" class="button">Federated</a>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mastodon-digest
|
||||
namespace: mastodon-digest
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: auth
|
||||
name: web
|
||||
selector:
|
||||
app: mastodon-digest
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mastodon-digest
|
||||
namespace: mastodon-digest
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mastodon-digest
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: mastodon-digest
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: docker-config
|
||||
containers:
|
||||
- args:
|
||||
- --cookie-secure=false
|
||||
- --provider=oidc
|
||||
- --provider-display-name=Auth0
|
||||
- --upstream=http://localhost:80
|
||||
- --http-address=$(HOST_IP):8000
|
||||
- --redirect-url=https://mastodon-digest.cluster.fun/oauth2/callback
|
||||
- --email-domain=marcusnoble.co.uk
|
||||
- --pass-basic-auth=false
|
||||
- --pass-access-token=false
|
||||
- --oidc-issuer-url=https://marcusnoble.eu.auth0.com/
|
||||
- --cookie-secret=KDGD6rrK6cBmryyZ4wcJ9xAUNW9AQNFT
|
||||
env:
|
||||
- name: HOST_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: status.podIP
|
||||
- name: OAUTH2_PROXY_CLIENT_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
key: username
|
||||
name: mastodon-digest-auth
|
||||
- name: OAUTH2_PROXY_CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
key: password
|
||||
name: mastodon-digest-auth
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
|
||||
name: oauth-proxy
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
protocol: TCP
|
||||
name: auth
|
||||
resources:
|
||||
limits:
|
||||
memory: 50Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
|
||||
- name: web
|
||||
image: nginx:stable
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
volumeMounts:
|
||||
- name: html
|
||||
mountPath: /usr/share/nginx/html
|
||||
- name: index
|
||||
mountPath: /usr/share/nginx/html/index.html
|
||||
subPath: index.html
|
||||
|
||||
- name: digest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus-private/mastodon-digest:latest
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: CONFIG_FILE
|
||||
value: /config.json
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: mastodon-digest
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /config.json
|
||||
subPath: config.json
|
||||
- name: html
|
||||
mountPath: /usr/share/nginx/html
|
||||
volumes:
|
||||
- name: html
|
||||
emptyDir: {}
|
||||
- name: config
|
||||
configMap:
|
||||
name: config
|
||||
- name: index
|
||||
configMap:
|
||||
name: index
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: mastodon-digest
|
||||
namespace: mastodon-digest
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- mastodon-digest.cluster.fun
|
||||
secretName: mastodon-digest-ingress
|
||||
rules:
|
||||
- host: mastodon-digest.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: mastodon-digest
|
||||
port:
|
||||
number: 80
|
||||
@@ -1,540 +0,0 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: matrix
|
||||
namespace: chat
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- matrix.cluster.fun
|
||||
secretName: matrix-ingress
|
||||
rules:
|
||||
- host: matrix.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /.well-known/matrix
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: well-known
|
||||
port:
|
||||
number: 80
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: matrix-synapse
|
||||
port:
|
||||
number: 80
|
||||
|
||||
---
|
||||
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: riot
|
||||
namespace: chat
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- chat.cluster.fun
|
||||
secretName: riot-ingress
|
||||
rules:
|
||||
- host: chat.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: matrix-riot
|
||||
port:
|
||||
number: 80
|
||||
|
||||
---
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: well-known
|
||||
namespace: chat
|
||||
annotations:
|
||||
configmap.reloader.stakater.com/reload: "well-known"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: well-known
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: well-known
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: nginx
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
volumeMounts:
|
||||
- name: well-known
|
||||
mountPath: /usr/share/nginx/html/.well-known/matrix
|
||||
resources:
|
||||
limits:
|
||||
memory: 15Mi
|
||||
requests:
|
||||
memory: 15Mi
|
||||
volumes:
|
||||
- name: well-known
|
||||
configMap:
|
||||
name: well-known
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: well-known
|
||||
namespace: chat
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 80
|
||||
name: web
|
||||
selector:
|
||||
app: well-known
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: well-known
|
||||
namespace: chat
|
||||
data:
|
||||
server: |-
|
||||
{
|
||||
"m.server": "matrix.cluster.fun:443"
|
||||
}
|
||||
client: |-
|
||||
{
|
||||
"m.homeserver": {
|
||||
"base_url": "https://matrix.cluster.fun"
|
||||
},
|
||||
"org.matrix.msc3575.proxy": {
|
||||
"url": "https://syncv3.matrix.cluster.fun"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
# Source: matrix/templates/riot/configmap.yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: matrix-riot-config
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: element
|
||||
data:
|
||||
config.json: |
|
||||
{
|
||||
"default_server_config": {
|
||||
"m.homeserver": {
|
||||
"base_url": "https://matrix.cluster.fun"
|
||||
}
|
||||
},
|
||||
"brand": "Element",
|
||||
"branding": {},
|
||||
"integrations_ui_url": "https://scalar.vector.im/",
|
||||
"integrations_rest_url": "https://scalar.vector.im/api",
|
||||
"integrations_widgets_urls": [
|
||||
"https://scalar.vector.im/_matrix/integrations/v1",
|
||||
"https://scalar.vector.im/api",
|
||||
"https://scalar-staging.vector.im/_matrix/integrations/v1",
|
||||
"https://scalar-staging.vector.im/api",
|
||||
"https://scalar-staging.riot.im/scalar/api"
|
||||
],
|
||||
"showLabsSettings": true,
|
||||
"features": {
|
||||
"feature_pinning": true,
|
||||
"feature_custom_status": "labs",
|
||||
"feature_state_counters": "labs",
|
||||
"feature_many_integration_managers": "labs",
|
||||
"feature_mjolnir": "labs",
|
||||
"feature_dm_verification": "labs",
|
||||
"feature_bridge_state": "labs",
|
||||
"feature_presence_in_room_list": true,
|
||||
"feature_custom_themes": "labs",
|
||||
"feature_new_spinner": "labs",
|
||||
"feature_jump_to_date": "labs",
|
||||
"feature_location_share_pin_drop": "labs",
|
||||
"feature_location_share_live": "labs",
|
||||
"feature_thread": true,
|
||||
"feature_video_rooms": true,
|
||||
"feature_favourite_messages": "labs"
|
||||
},
|
||||
"roomDirectory": {
|
||||
"servers": []
|
||||
},
|
||||
"permalinkPrefix": "https://chat.cluster.fun",
|
||||
"enable_presence_by_hs_url": {
|
||||
"https://matrix.org": false,
|
||||
"https://matrix-client.matrix.org": false
|
||||
},
|
||||
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=2IerXP2a5g1e7hxxBbzs"
|
||||
}
|
||||
nginx.conf: |
|
||||
worker_processes auto;
|
||||
|
||||
error_log /var/log/nginx/error.log warn;
|
||||
pid /var/run/pid/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
|
||||
sendfile on;
|
||||
|
||||
keepalive_timeout 65;
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
||||
default.conf: |
|
||||
server {
|
||||
listen 8080;
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
}
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root /usr/share/nginx/html;
|
||||
}
|
||||
}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: matrix-synapse-config
|
||||
namespace: chat
|
||||
annotations:
|
||||
kube-1password: wbj4oozwyx6m2zz5m42pgcmymy
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: homeserver.yaml
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: synapse
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: matrix-synapse-config
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: element
|
||||
data:
|
||||
matrix.cluster.fun.log.config: |
|
||||
version: 1
|
||||
|
||||
formatters:
|
||||
precise:
|
||||
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
|
||||
|
||||
filters:
|
||||
context:
|
||||
(): synapse.util.logcontext.LoggingContextFilter
|
||||
request: ""
|
||||
|
||||
handlers:
|
||||
console:
|
||||
class: logging.StreamHandler
|
||||
formatter: precise
|
||||
filters: [context]
|
||||
|
||||
loggers:
|
||||
synapse:
|
||||
level: WARNING
|
||||
synapse.storage.SQL:
|
||||
# beware: increasing this to DEBUG will make synapse log sensitive
|
||||
# information such as access tokens.
|
||||
level: WARNING
|
||||
|
||||
root:
|
||||
level: WARNING
|
||||
handlers: [console]
|
||||
---
|
||||
# Source: matrix/templates/riot/service.yaml
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: matrix-riot
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: element
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app.kubernetes.io/name: matrix-riot
|
||||
---
|
||||
# Source: matrix/templates/synapse/service.yaml
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: matrix-synapse
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: synapse
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/path: "/_synapse/metrics"
|
||||
prometheus.io/port: "9000"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
- port: 9000
|
||||
targetPort: metrics
|
||||
protocol: TCP
|
||||
name: metrics
|
||||
selector:
|
||||
app.kubernetes.io/name: matrix-synapse
|
||||
---
|
||||
# Source: matrix/templates/riot/deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: matrix-riot
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: element
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: matrix-riot
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: matrix-riot
|
||||
spec:
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
containers:
|
||||
- name: "riot"
|
||||
image: "vectorim/element-web:v1.11.109"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- mountPath: /app/config.json
|
||||
name: riot-config
|
||||
subPath: config.json
|
||||
readOnly: true
|
||||
- mountPath: /etc/nginx/nginx.conf
|
||||
name: riot-config
|
||||
subPath: nginx.conf
|
||||
readOnly: true
|
||||
- mountPath: /etc/nginx/conf.d/default.conf
|
||||
name: riot-config
|
||||
subPath: default.conf
|
||||
readOnly: true
|
||||
- mountPath: /var/cache/nginx
|
||||
name: ephemeral
|
||||
subPath: cache
|
||||
- mountPath: /var/run/pid
|
||||
name: ephemeral
|
||||
subPath: pid
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
volumes:
|
||||
- name: riot-config
|
||||
configMap:
|
||||
name: matrix-riot-config
|
||||
- name: ephemeral
|
||||
emptyDir: {}
|
||||
- name: tmp
|
||||
emptyDir: {}
|
||||
---
|
||||
# Source: matrix/templates/synapse/deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: matrix-synapse
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: synapse
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: matrix-synapse
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: matrix-synapse
|
||||
spec:
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
initContainers:
|
||||
- name: generate-signing-key
|
||||
image: "ghcr.io/element-hq/synapse:v1.136.0"
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: SYNAPSE_SERVER_NAME
|
||||
value: matrix.cluster.fun
|
||||
- name: SYNAPSE_REPORT_STATS
|
||||
value: "no"
|
||||
command: ["python"]
|
||||
args:
|
||||
- "-m"
|
||||
- "synapse.app.homeserver"
|
||||
- "--config-path"
|
||||
- "/data/homeserver.yaml"
|
||||
- "--keys-directory"
|
||||
- "/data/keys"
|
||||
- "--generate-keys"
|
||||
volumeMounts:
|
||||
- name: synapse-config-homeserver
|
||||
mountPath: /data/homeserver.yaml
|
||||
subPath: homeserver.yaml
|
||||
- name: synapse-config-logging
|
||||
mountPath: /data/matrix.cluster.fun.log.config
|
||||
subPath: matrix.cluster.fun.log.config
|
||||
- name: signing-key
|
||||
mountPath: /data/keys
|
||||
containers:
|
||||
- name: "synapse"
|
||||
image: "ghcr.io/element-hq/synapse:v1.136.0"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8008
|
||||
protocol: TCP
|
||||
- name: metrics
|
||||
containerPort: 9000
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: synapse-config-homeserver
|
||||
mountPath: /data/homeserver.yaml
|
||||
subPath: homeserver.yaml
|
||||
- name: synapse-config-logging
|
||||
mountPath: /data/matrix.cluster.fun.log.config
|
||||
subPath: matrix.cluster.fun.log.config
|
||||
- name: signing-key
|
||||
mountPath: /data/keys
|
||||
- name: user-media
|
||||
mountPath: /data/media_store
|
||||
- name: uploads
|
||||
mountPath: /data/uploads
|
||||
- name: tmp
|
||||
mountPath: /tmp
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /_matrix/static/
|
||||
port: http
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: /_matrix/static/
|
||||
port: http
|
||||
failureThreshold: 6
|
||||
periodSeconds: 5
|
||||
timeoutSeconds: 5
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /_matrix/static/
|
||||
port: http
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
volumes:
|
||||
- name: synapse-config-logging
|
||||
configMap:
|
||||
name: matrix-synapse-config
|
||||
- name: synapse-config-homeserver
|
||||
secret:
|
||||
secretName: matrix-synapse-config
|
||||
- name: signing-key
|
||||
persistentVolumeClaim:
|
||||
claimName: chat-matrix-signing-key
|
||||
- name: user-media
|
||||
persistentVolumeClaim:
|
||||
claimName: chat-matrix-user-media
|
||||
- name: uploads
|
||||
emptyDir: {}
|
||||
- name: tmp
|
||||
emptyDir: {}
|
||||
---
|
||||
@@ -1,119 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: matrix-sliding-sync
|
||||
namespace: chat
|
||||
annotations:
|
||||
kube-1password: 7kvyfcszfaavj2d7uvl4troagm
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: sliding-sync
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: sliding-sync
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: sliding-sync
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: sliding-sync
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: sliding-sync
|
||||
spec:
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
containers:
|
||||
- name: "sliding-sync"
|
||||
image: "ghcr.io/matrix-org/sliding-sync:v0.99.19"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8008
|
||||
protocol: TCP
|
||||
- name: metrics
|
||||
containerPort: 9090
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: SYNCV3_SERVER
|
||||
value: https://matrix.cluster.fun
|
||||
- name: SYNCV3_BINDADDR
|
||||
value: ":8008"
|
||||
- name: SYNCV3_PROM
|
||||
value: ":9090"
|
||||
- name: SYNCV3_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: matrix-sliding-sync
|
||||
key: SYNCV3_SECRET
|
||||
- name: SYNCV3_DB
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: matrix-sliding-sync
|
||||
key: SYNCV3_DB
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: sliding-sync
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: sliding-sync
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "9090"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: http
|
||||
name: web
|
||||
- port: 9090
|
||||
targetPort: metrics
|
||||
protocol: TCP
|
||||
name: metrics
|
||||
selector:
|
||||
app.kubernetes.io/name: sliding-sync
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: sliding-sync
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: sliding-sync
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- syncv3.matrix.cluster.fun
|
||||
secretName: sliding-sync-ingress
|
||||
rules:
|
||||
- host: syncv3.matrix.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: sliding-sync
|
||||
port:
|
||||
number: 80
|
||||
---
|
||||
@@ -0,0 +1,69 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mazanoke
|
||||
namespace: mazanoke
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: mazanoke
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mazanoke
|
||||
namespace: mazanoke
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mazanoke
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: mazanoke
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: ghcr.io/civilblur/mazanoke:v1.1.7@sha256:ca83cddd90cd1e4b43102884bf39025731a1c7569f3bbda9d6530de72528cbab
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
memory: 200Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: mazanoke
|
||||
namespace: mazanoke
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- image.cluster.fun
|
||||
secretName: mazanoke-ingress
|
||||
rules:
|
||||
- host: image.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: mazanoke
|
||||
port:
|
||||
number: 80
|
||||
|
||||
@@ -28,9 +28,10 @@ spec:
|
||||
labels:
|
||||
app: mealie
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: frontend
|
||||
image: ghcr.io/mealie-recipes/mealie:v3.1.2
|
||||
image: ghcr.io/mealie-recipes/mealie:v3.30.0@sha256:90f83da6f3ab0a421efc827118a556168573930105f13fa3321768f42163d784
|
||||
imagePullPolicy: Always
|
||||
envFrom:
|
||||
- secretRef:
|
||||
@@ -41,7 +42,7 @@ spec:
|
||||
- name: PGID
|
||||
value: "1000"
|
||||
- name: TOKEN_TIME
|
||||
value: "168"
|
||||
value: "720"
|
||||
- name: DB_ENGINE
|
||||
value: postgres
|
||||
- name: POSTGRES_DB
|
||||
@@ -68,12 +69,18 @@ spec:
|
||||
volumeMounts:
|
||||
- mountPath: /app/data
|
||||
name: data
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 375Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 550Mi
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: mealie
|
||||
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
@@ -91,7 +98,6 @@ spec:
|
||||
app: mealie
|
||||
---
|
||||
|
||||
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
|
||||
@@ -1,255 +0,0 @@
|
||||
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: kube-state-metrics
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
name: kube-state-metrics
|
||||
rules:
|
||||
- apiGroups: ["certificates.k8s.io"]
|
||||
resources:
|
||||
- certificatesigningrequests
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- configmaps
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["batch"]
|
||||
resources:
|
||||
- cronjobs
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["extensions", "apps"]
|
||||
resources:
|
||||
- daemonsets
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["extensions", "apps"]
|
||||
resources:
|
||||
- deployments
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- endpoints
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["autoscaling"]
|
||||
resources:
|
||||
- horizontalpodautoscalers
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["extensions", "networking.k8s.io"]
|
||||
resources:
|
||||
- ingresses
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["batch"]
|
||||
resources:
|
||||
- jobs
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- limitranges
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["admissionregistration.k8s.io"]
|
||||
resources:
|
||||
- mutatingwebhookconfigurations
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- namespaces
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["networking.k8s.io"]
|
||||
resources:
|
||||
- networkpolicies
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- nodes
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- persistentvolumeclaims
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- persistentvolumes
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["policy"]
|
||||
resources:
|
||||
- poddisruptionbudgets
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- pods
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["extensions", "apps"]
|
||||
resources:
|
||||
- replicasets
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- replicationcontrollers
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- resourcequotas
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- secrets
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- services
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["apps"]
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources:
|
||||
- storageclasses
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["admissionregistration.k8s.io"]
|
||||
resources:
|
||||
- validatingwebhookconfigurations
|
||||
verbs: ["list", "watch"]
|
||||
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources:
|
||||
- volumeattachments
|
||||
verbs: ["list", "watch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
name: kube-state-metrics
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: kube-state-metrics
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: kube-state-metrics
|
||||
namespace: monitoring
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: kube-state-metrics
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
annotations:
|
||||
prometheus.io/scrape: 'true'
|
||||
spec:
|
||||
type: "ClusterIP"
|
||||
ports:
|
||||
- name: "http"
|
||||
protocol: TCP
|
||||
port: 8080
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: kube-state-metrics
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
spec:
|
||||
serviceAccountName: kube-state-metrics
|
||||
securityContext:
|
||||
fsGroup: 65534
|
||||
runAsGroup: 65534
|
||||
runAsUser: 65534
|
||||
containers:
|
||||
- name: kube-state-metrics
|
||||
args:
|
||||
#- --resources=certificatesigningrequests
|
||||
- --resources=configmaps
|
||||
- --resources=cronjobs
|
||||
- --resources=daemonsets
|
||||
- --resources=deployments
|
||||
#- --resources=endpoints
|
||||
#- --resources=horizontalpodautoscalers
|
||||
- --resources=ingresses
|
||||
- --resources=jobs
|
||||
#- --resources=limitranges
|
||||
- --resources=mutatingwebhookconfigurations
|
||||
- --resources=namespaces
|
||||
#- --resources=networkpolicies
|
||||
- --resources=nodes
|
||||
- --resources=persistentvolumeclaims
|
||||
- --resources=persistentvolumes
|
||||
- --resources=poddisruptionbudgets
|
||||
- --resources=pods
|
||||
- --resources=replicasets
|
||||
#- --resources=replicationcontrollers
|
||||
#- --resources=resourcequotas
|
||||
- --resources=secrets
|
||||
- --resources=services
|
||||
- --resources=statefulsets
|
||||
- --resources=storageclasses
|
||||
- --resources=validatingwebhookconfigurations
|
||||
#- --resources=volumeattachments
|
||||
imagePullPolicy: IfNotPresent
|
||||
image: "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.16.0"
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8080
|
||||
initialDelaySeconds: 5
|
||||
timeoutSeconds: 5
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 8080
|
||||
initialDelaySeconds: 5
|
||||
timeoutSeconds: 5
|
||||
---
|
||||
@@ -1,64 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus-server
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
app.kubernetes.io/component: server
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
app.kubernetes.io/component: server
|
||||
name: prometheus-server
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
- nodes/proxy
|
||||
- nodes/metrics
|
||||
- services
|
||||
- endpoints
|
||||
- pods
|
||||
- ingresses
|
||||
- configmaps
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- "extensions"
|
||||
- "networking.k8s.io"
|
||||
resources:
|
||||
- ingresses/status
|
||||
- ingresses
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- nonResourceURLs:
|
||||
- "/metrics"
|
||||
verbs:
|
||||
- get
|
||||
---
|
||||
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: prometheus
|
||||
app.kubernetes.io/component: server
|
||||
name: prometheus-server
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: prometheus-server
|
||||
namespace: monitoring
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: prometheus-server
|
||||
---
|
||||
@@ -1,292 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: promtail
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: promtail
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
data:
|
||||
promtail.yaml: |
|
||||
client:
|
||||
backoff_config:
|
||||
max_period: 5m
|
||||
max_retries: 10
|
||||
min_period: 500ms
|
||||
batchsize: 1048576
|
||||
batchwait: 1s
|
||||
external_labels: {}
|
||||
timeout: 10s
|
||||
positions:
|
||||
filename: /run/promtail/positions.yaml
|
||||
server:
|
||||
http_listen_port: 3101
|
||||
clients:
|
||||
- url: http://loki-distributed.proxy-civo.svc:80/loki/api/v1/push
|
||||
external_labels:
|
||||
kubernetes_cluster: civo
|
||||
target_config:
|
||||
sync_period: 10s
|
||||
scrape_configs:
|
||||
- job_name: kubernetes-pods
|
||||
pipeline_stages:
|
||||
- docker: {}
|
||||
- cri: {}
|
||||
- match:
|
||||
selector: '{app="weave-net"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{filename=~".*konnectivity.*"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{name=~".*"} |~ ".*/healthz.*"'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{name=~".*"} |~ ".*/api/health.*"'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{name=~".*"} |~ ".*kube-probe/.*"'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="internal-proxy"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="non-auth-proxy"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="vpa"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="promtail"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="csi-node"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="victoria-metrics"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="git-sync"}'
|
||||
action: drop
|
||||
- match:
|
||||
selector: '{app="ingress-nginx"}'
|
||||
stages:
|
||||
- json:
|
||||
expressions:
|
||||
request_host: host
|
||||
request_path: path
|
||||
request_method: method
|
||||
response_status: status
|
||||
- drop:
|
||||
source: "request_path"
|
||||
value: "/healthz"
|
||||
- drop:
|
||||
source: "request_path"
|
||||
value: "/health"
|
||||
- labels:
|
||||
request_host:
|
||||
request_method:
|
||||
response_status:
|
||||
- match:
|
||||
selector: '{app="traefik"}'
|
||||
stages:
|
||||
- json:
|
||||
expressions:
|
||||
request_host: RequestHost
|
||||
request_path: RequestPath
|
||||
request_method: RequestMethod
|
||||
response_status: OriginStatus
|
||||
- drop:
|
||||
source: "request_path"
|
||||
value: "/healthz"
|
||||
- drop:
|
||||
source: "request_path"
|
||||
value: "/health"
|
||||
- drop:
|
||||
source: "request_path"
|
||||
value: "/ping"
|
||||
- labels:
|
||||
request_host:
|
||||
request_method:
|
||||
response_status:
|
||||
kubernetes_sd_configs:
|
||||
- role: pod
|
||||
relabel_configs:
|
||||
- source_labels:
|
||||
- __meta_kubernetes_pod_controller_name
|
||||
regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?
|
||||
action: replace
|
||||
target_label: __tmp_controller_name
|
||||
- source_labels:
|
||||
- __meta_kubernetes_pod_label_app_kubernetes_io_name
|
||||
- __meta_kubernetes_pod_label_app
|
||||
- __tmp_controller_name
|
||||
- __meta_kubernetes_pod_name
|
||||
regex: ^;*([^;]+)(;.*)?$
|
||||
action: replace
|
||||
target_label: app
|
||||
- source_labels:
|
||||
- __meta_kubernetes_pod_label_app_kubernetes_io_component
|
||||
- __meta_kubernetes_pod_label_component
|
||||
regex: ^;*([^;]+)(;.*)?$
|
||||
action: replace
|
||||
target_label: component
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_node_name
|
||||
target_label: node_name
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_namespace
|
||||
target_label: namespace
|
||||
- action: replace
|
||||
replacement: $1
|
||||
separator: /
|
||||
source_labels:
|
||||
- namespace
|
||||
- app
|
||||
target_label: job
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_name
|
||||
target_label: pod
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_container_name
|
||||
target_label: container
|
||||
- action: replace
|
||||
replacement: /var/log/pods/*$1/*.log
|
||||
separator: /
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_uid
|
||||
- __meta_kubernetes_pod_container_name
|
||||
target_label: __path__
|
||||
- action: replace
|
||||
replacement: /var/log/pods/*$1/*.log
|
||||
regex: true/(.*)
|
||||
separator: /
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_annotationpresent_kubernetes_io_config_hash
|
||||
- __meta_kubernetes_pod_annotation_kubernetes_io_config_hash
|
||||
- __meta_kubernetes_pod_container_name
|
||||
target_label: __path__
|
||||
- action: labelmap
|
||||
regex: __meta_kubernetes_pod_label_(.+)
|
||||
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: promtail-clusterrole
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
rules:
|
||||
- apiGroups: [""] # "" indicates the core API group
|
||||
resources:
|
||||
- nodes
|
||||
- nodes/proxy
|
||||
- services
|
||||
- endpoints
|
||||
- pods
|
||||
verbs: ["get", "watch", "list"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: promtail-clusterrolebinding
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: promtail
|
||||
namespace: monitoring
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: promtail-clusterrole
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: promtail
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
annotations:
|
||||
configmap.reloader.stakater.com/reload: "promtail"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: promtail
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: promtail
|
||||
annotations:
|
||||
prometheus.io/port: http-metrics
|
||||
prometheus.io/scrape: "true"
|
||||
spec:
|
||||
serviceAccountName: promtail
|
||||
containers:
|
||||
- name: promtail
|
||||
image: "grafana/promtail:2.9.15"
|
||||
imagePullPolicy: IfNotPresent
|
||||
args:
|
||||
- "-config.file=/etc/promtail/promtail.yaml"
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /etc/promtail
|
||||
- name: run
|
||||
mountPath: /run/promtail
|
||||
- mountPath: /var/lib/docker/containers
|
||||
name: docker
|
||||
readOnly: true
|
||||
- mountPath: /var/log/pods
|
||||
name: pods
|
||||
readOnly: true
|
||||
env:
|
||||
- name: HOSTNAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
ports:
|
||||
- containerPort: 3101
|
||||
name: http-metrics
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 0
|
||||
runAsUser: 0
|
||||
readinessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /ready
|
||||
port: http-metrics
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
tolerations:
|
||||
- effect: NoSchedule
|
||||
key: node-role.kubernetes.io/master
|
||||
operator: Exists
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: promtail
|
||||
- name: run
|
||||
hostPath:
|
||||
path: /run/promtail
|
||||
- hostPath:
|
||||
path: /var/lib/docker/containers
|
||||
name: docker
|
||||
- hostPath:
|
||||
path: /var/log/pods
|
||||
name: pods
|
||||
---
|
||||
@@ -1,163 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: vmagent
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: victoria-metrics
|
||||
app.kubernetes.io/component: agent
|
||||
data:
|
||||
prometheus.yml: |
|
||||
global:
|
||||
scrape_interval: 1m
|
||||
external_labels:
|
||||
source: civo
|
||||
agent: vmagent
|
||||
scrape_configs:
|
||||
- job_name: 'vmagent'
|
||||
static_configs:
|
||||
- targets: ['localhost:8429']
|
||||
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
job_name: kubernetes-nodes
|
||||
kubernetes_sd_configs:
|
||||
- role: node
|
||||
relabel_configs:
|
||||
- action: labelmap
|
||||
regex: __meta_kubernetes_node_label_(.+)
|
||||
- replacement: kubernetes.default.svc:443
|
||||
target_label: __address__
|
||||
- regex: (.+)
|
||||
replacement: /api/v1/nodes/$1/proxy/metrics
|
||||
source_labels:
|
||||
- __meta_kubernetes_node_name
|
||||
target_label: __metrics_path__
|
||||
scheme: https
|
||||
tls_config:
|
||||
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||
insecure_skip_verify: true
|
||||
- job_name: kubernetes-service-endpoints
|
||||
kubernetes_sd_configs:
|
||||
- role: endpoints
|
||||
relabel_configs:
|
||||
- action: keep
|
||||
regex: true
|
||||
source_labels:
|
||||
- __meta_kubernetes_service_annotation_prometheus_io_scrape
|
||||
- action: replace
|
||||
regex: (https?)
|
||||
source_labels:
|
||||
- __meta_kubernetes_service_annotation_prometheus_io_scheme
|
||||
target_label: __scheme__
|
||||
- action: replace
|
||||
regex: (.+)
|
||||
source_labels:
|
||||
- __meta_kubernetes_service_annotation_prometheus_io_path
|
||||
target_label: __metrics_path__
|
||||
- action: replace
|
||||
regex: ([^:]+)(?::\d+)?;(\d+)
|
||||
replacement: $1:$2
|
||||
source_labels:
|
||||
- __address__
|
||||
- __meta_kubernetes_service_annotation_prometheus_io_port
|
||||
target_label: __address__
|
||||
- action: labelmap
|
||||
regex: __meta_kubernetes_service_label_(.+)
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_namespace
|
||||
target_label: kubernetes_namespace
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_service_name
|
||||
target_label: kubernetes_name
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_endpoint_port_name
|
||||
target_label: kubernetes_endpoint_port_name
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_node_name
|
||||
target_label: kubernetes_node
|
||||
- job_name: kubernetes-pods
|
||||
kubernetes_sd_configs:
|
||||
- role: pod
|
||||
relabel_configs:
|
||||
- action: keep
|
||||
regex: true
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_annotation_prometheus_io_scrape
|
||||
- action: replace
|
||||
regex: (.+)
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_annotation_prometheus_io_path
|
||||
target_label: __metrics_path__
|
||||
- action: replace
|
||||
regex: ([^:]+)(?::\d+)?;(\d+)
|
||||
replacement: $1:$2
|
||||
source_labels:
|
||||
- __address__
|
||||
- __meta_kubernetes_pod_annotation_prometheus_io_port
|
||||
target_label: __address__
|
||||
- action: labelmap
|
||||
regex: __meta_kubernetes_pod_label_(.+)
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_namespace
|
||||
target_label: kubernetes_namespace
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_name
|
||||
target_label: kubernetes_pod_name
|
||||
- action: replace
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_container_port_name
|
||||
target_label: kubernetes_port_name
|
||||
- action: drop
|
||||
regex: Pending|Succeeded|Failed
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_phase
|
||||
|
||||
|
||||
---
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: vmagent
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: victoria-metrics
|
||||
app.kubernetes.io/component: agent
|
||||
annotations:
|
||||
configmap.reloader.stakater.com/reload: "vmagent"
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: victoria-metrics
|
||||
app.kubernetes.io/component: agent
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: victoria-metrics
|
||||
app.kubernetes.io/component: agent
|
||||
spec:
|
||||
serviceAccountName: prometheus-server
|
||||
containers:
|
||||
- name: vmagent
|
||||
image: "victoriametrics/vmagent:v1.124.0"
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
args:
|
||||
- -remoteWrite.url=http://vmcluster.proxy-civo.svc/insert/0/prometheus/
|
||||
- -remoteWrite.showURL
|
||||
- -promscrape.config=/config/prometheus.yml
|
||||
volumeMounts:
|
||||
- name: config-volume
|
||||
mountPath: /config
|
||||
volumes:
|
||||
- name: config-volume
|
||||
configMap:
|
||||
name: vmagent
|
||||
---
|
||||
@@ -0,0 +1,87 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app: cadvisor
|
||||
app.kubernetes.io/name: cadvisor
|
||||
name: cadvisor
|
||||
namespace: monitoring
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
annotations:
|
||||
seccomp.security.alpha.kubernetes.io/pod: docker/default
|
||||
labels:
|
||||
app: cadvisor
|
||||
app.kubernetes.io/name: cadvisor
|
||||
name: cadvisor
|
||||
namespace: monitoring
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: cadvisor
|
||||
app.kubernetes.io/name: cadvisor
|
||||
name: cadvisor
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: cadvisor
|
||||
app.kubernetes.io/name: cadvisor
|
||||
name: cadvisor
|
||||
annotations:
|
||||
scheduler.alpha.kubernetes.io/critical-pod: ''
|
||||
spec:
|
||||
priorityClassName: system-node-critical
|
||||
tolerations:
|
||||
- key: "CriticalAddonsOnly"
|
||||
operator: "Exists"
|
||||
automountServiceAccountToken: false
|
||||
containers:
|
||||
- image: ghcr.io/google/cadvisor:v0.60.6@sha256:b8e7d1093144fd088f425ff003d75a4aa405de075db78dae3bc563730b1bd07a
|
||||
name: cadvisor
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: http
|
||||
protocol: TCP
|
||||
resources:
|
||||
limits:
|
||||
cpu: 800m
|
||||
memory: 800Mi
|
||||
requests:
|
||||
cpu: 400m
|
||||
memory: 400Mi
|
||||
volumeMounts:
|
||||
- mountPath: /rootfs
|
||||
name: rootfs
|
||||
readOnly: true
|
||||
- mountPath: /var/run
|
||||
name: var-run
|
||||
readOnly: true
|
||||
- mountPath: /sys
|
||||
name: sys
|
||||
readOnly: true
|
||||
- mountPath: /var/lib/docker
|
||||
name: docker
|
||||
readOnly: true
|
||||
- mountPath: /dev/disk
|
||||
name: disk
|
||||
readOnly: true
|
||||
serviceAccountName: cadvisor
|
||||
terminationGracePeriodSeconds: 30
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: /
|
||||
name: rootfs
|
||||
- hostPath:
|
||||
path: /var/run
|
||||
name: var-run
|
||||
- hostPath:
|
||||
path: /sys
|
||||
name: sys
|
||||
- hostPath:
|
||||
path: /var/lib/docker
|
||||
name: docker
|
||||
- hostPath:
|
||||
path: /dev/disk
|
||||
name: disk
|
||||
@@ -0,0 +1,142 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
namespace: monitoring
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes","nodes/proxy", "nodes/stats", "pods"]
|
||||
verbs: ["get","list", "watch"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
namespace: monitoring
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "9100"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
ports:
|
||||
- name: metrics
|
||||
port: 9100
|
||||
protocol: TCP
|
||||
targetPort: metrics
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: k8s-ephemeral-storage-metrics
|
||||
namespace: monitoring
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
spec:
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: k8s-ephemeral-storage-metrics
|
||||
spec:
|
||||
serviceAccountName: k8s-ephemeral-storage-metrics
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: metrics
|
||||
image: ghcr.io/jmcgrath207/k8s-ephemeral-storage-metrics:1.21.3@sha256:8297aa4a92787ebda42827be98da6f7a77206f4c8d140858626c97c469997b67
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: metrics
|
||||
containerPort: 9100
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 10
|
||||
httpGet:
|
||||
path: /metrics
|
||||
port: 9100
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 30
|
||||
readinessProbe:
|
||||
failureThreshold: 10
|
||||
httpGet:
|
||||
path: /metrics
|
||||
port: 9100
|
||||
scheme: HTTP
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: false
|
||||
runAsNonRoot: true
|
||||
env:
|
||||
- name: DEPLOY_TYPE
|
||||
value: "Deployment"
|
||||
- name: SCRAPE_INTERVAL
|
||||
value: "15"
|
||||
- name: MAX_NODE_CONCURRENCY
|
||||
value: "10"
|
||||
- name: CLIENT_GO_QPS
|
||||
value: "5"
|
||||
- name: CLIENT_GO_BURST
|
||||
value: "10"
|
||||
- name: LOG_LEVEL
|
||||
value: "info"
|
||||
- name: EPHEMERAL_STORAGE_POD_USAGE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_NODE_AVAILABLE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_NODE_CAPACITY
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_NODE_PERCENTAGE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_CONTAINER_LIMIT_PERCENTAGE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_CONTAINER_VOLUME_USAGE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_CONTAINER_VOLUME_LIMITS_PERCENTAGE
|
||||
value: "true"
|
||||
- name: EPHEMERAL_STORAGE_INODES
|
||||
value: "true"
|
||||
@@ -201,6 +201,7 @@ spec:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
spec:
|
||||
priorityClassName: system-cluster-critical
|
||||
serviceAccountName: kube-state-metrics
|
||||
securityContext:
|
||||
fsGroup: 65534
|
||||
@@ -237,7 +238,7 @@ spec:
|
||||
- --resources=validatingwebhookconfigurations
|
||||
#- --resources=volumeattachments
|
||||
imagePullPolicy: IfNotPresent
|
||||
image: "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.16.0"
|
||||
image: "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.20.0@sha256:42cfe3723a5f058171c627537fb57a3ea0f26e4380fa18555a95cb1a1b4cfc5b"
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
livenessProbe:
|
||||
|
||||
@@ -51,10 +51,11 @@ spec:
|
||||
app.kubernetes.io/name: prometheus
|
||||
app.kubernetes.io/component: node-exporter
|
||||
spec:
|
||||
priorityClassName: system-node-critical
|
||||
serviceAccountName: prometheus-node-exporter
|
||||
containers:
|
||||
- name: prometheus-node-exporter
|
||||
image: "prom/node-exporter:v1.9.1"
|
||||
image: "prom/node-exporter:v1.12.1@sha256:1b4e4438faca4dd7e001dd445d161a4a2091b0fededa84093b3a8dfeae1f1be0"
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
args:
|
||||
- --path.procfs=/host/proc
|
||||
|
||||
@@ -212,10 +212,11 @@ spec:
|
||||
prometheus.io/port: http-metrics
|
||||
prometheus.io/scrape: "true"
|
||||
spec:
|
||||
priorityClassName: system-node-critical
|
||||
serviceAccountName: promtail
|
||||
containers:
|
||||
- name: promtail
|
||||
image: "grafana/promtail:2.9.15"
|
||||
image: "grafana/promtail:2.9.17@sha256:b28495fdab552b183428c5b5cebbf258231fc5f00be7724be2bc091ad21ac390"
|
||||
imagePullPolicy: IfNotPresent
|
||||
args:
|
||||
- "-config.file=/etc/promtail/promtail.yaml"
|
||||
|
||||
@@ -17,6 +17,11 @@ data:
|
||||
- job_name: 'vmagent'
|
||||
static_configs:
|
||||
- targets: ['localhost:8429']
|
||||
relabel_configs:
|
||||
- action: drop
|
||||
source_labels: [__name__]
|
||||
regex: "flag"
|
||||
|
||||
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
job_name: kubernetes-nodes
|
||||
kubernetes_sd_configs:
|
||||
@@ -36,6 +41,38 @@ data:
|
||||
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||
insecure_skip_verify: true
|
||||
|
||||
- job_name: cadvisor
|
||||
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
scheme: https
|
||||
tls_config:
|
||||
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||
insecure_skip_verify: true
|
||||
kubernetes_sd_configs:
|
||||
- role: node
|
||||
relabel_configs:
|
||||
- action: labelmap
|
||||
regex: __meta_kubernetes_node_label_(.+)
|
||||
- replacement: kubernetes.default.svc:443
|
||||
target_label: __address__
|
||||
- source_labels: [__meta_kubernetes_node_name]
|
||||
regex: (.+)
|
||||
target_label: __metrics_path__
|
||||
replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
|
||||
# Drop high cardinality labels
|
||||
- action: labeldrop
|
||||
regex: id
|
||||
# Drop unneeded labels
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: topology_jiva_openebs_io_nodeName
|
||||
|
||||
- job_name: kubernetes-service-endpoints
|
||||
kubernetes_sd_configs:
|
||||
- role: endpoints
|
||||
@@ -78,6 +115,21 @@ data:
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_node_name
|
||||
target_label: kubernetes_node
|
||||
# We don't care about the flag metrics from VM
|
||||
- action: drop
|
||||
source_labels: [__name__]
|
||||
regex: "flag"
|
||||
# Drop unneeded labels
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: topology_jiva_openebs_io_nodeName
|
||||
|
||||
- job_name: kubernetes-pods
|
||||
kubernetes_sd_configs:
|
||||
@@ -116,6 +168,17 @@ data:
|
||||
regex: Pending|Succeeded|Failed
|
||||
source_labels:
|
||||
- __meta_kubernetes_pod_phase
|
||||
# Drop unneeded labels
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: beta_kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_arch
|
||||
- action: labeldrop
|
||||
regex: kubernetes_io_os
|
||||
- action: labeldrop
|
||||
regex: topology_jiva_openebs_io_nodeName
|
||||
|
||||
- job_name: 'node-exporter'
|
||||
kubernetes_sd_configs:
|
||||
@@ -150,10 +213,11 @@ spec:
|
||||
app.kubernetes.io/name: victoria-metrics
|
||||
app.kubernetes.io/component: agent
|
||||
spec:
|
||||
priorityClassName: system-cluster-critical
|
||||
serviceAccountName: prometheus-server
|
||||
containers:
|
||||
- name: vmagent
|
||||
image: "victoriametrics/vmagent:v1.124.0"
|
||||
image: "victoriametrics/vmagent:v1.155.0@sha256:8e3c03905be15bba8312d4868e8ae6f9fc2fefee0a41d544472034249ca42bb4"
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
args:
|
||||
- -remoteWrite.url=http://vmcluster.auth-proxy.svc/insert/0/prometheus/
|
||||
|
||||
@@ -56,7 +56,9 @@ data:
|
||||
general.config.php: |-
|
||||
<?php
|
||||
$CONFIG = array (
|
||||
'overwriteprotocol' => 'https'
|
||||
'overwriteprotocol' => 'https',
|
||||
'loglevel' => 1,
|
||||
'log_rotate_size' => 100 * 1024 * 1024
|
||||
);
|
||||
.htaccess: |-
|
||||
# line below if for Apache 2.4
|
||||
@@ -201,9 +203,10 @@ spec:
|
||||
app.kubernetes.io/component: app
|
||||
nextcloud-nextcloud-redis-client: "true"
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: nextcloud
|
||||
image: "nextcloud:31.0.8-apache"
|
||||
image: "nextcloud:35.0.2-apache@sha256:786c102155d2717ba0f53a62b3fdd7a1354edc48e800b94dbe32294d9a5752a2"
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: SQLITE_DATABASE
|
||||
@@ -282,7 +285,102 @@ spec:
|
||||
periodSeconds: 10
|
||||
resources:
|
||||
requests:
|
||||
memory: 450Mi
|
||||
cpu: 1038m
|
||||
memory: 500M
|
||||
limits:
|
||||
cpu: 1200m
|
||||
memory: 765M
|
||||
volumeMounts:
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/
|
||||
subPath: root
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/html
|
||||
subPath: html
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/html/data
|
||||
subPath: data
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/html/config
|
||||
subPath: config
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/html/custom_apps
|
||||
subPath: custom_apps
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/tmp
|
||||
subPath: tmp
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/html/themes
|
||||
subPath: themes
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/general.config.php
|
||||
subPath: general.config.php
|
||||
- name: nextcloud-s3
|
||||
mountPath: /var/www/html/config/s3.config.php
|
||||
subPath: s3.config.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/.htaccess
|
||||
subPath: .htaccess
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/apache-pretty-urls.config.php
|
||||
subPath: apache-pretty-urls.config.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/apcu.config.php
|
||||
subPath: apcu.config.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/apps.config.php
|
||||
subPath: apps.config.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/autoconfig.php
|
||||
subPath: autoconfig.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/redis.config.php
|
||||
subPath: redis.config.php
|
||||
- name: nextcloud-config
|
||||
mountPath: /var/www/html/config/smtp.config.php
|
||||
subPath: smtp.config.php
|
||||
- name: cron
|
||||
image: "nextcloud:35.0.2-apache@sha256:786c102155d2717ba0f53a62b3fdd7a1354edc48e800b94dbe32294d9a5752a2"
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /cron.sh
|
||||
env:
|
||||
- name: SQLITE_DATABASE
|
||||
value: "nextcloud"
|
||||
- name: NEXTCLOUD_ADMIN_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud
|
||||
key: nextcloud-username
|
||||
- name: NEXTCLOUD_ADMIN_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud
|
||||
key: nextcloud-password
|
||||
- name: NEXTCLOUD_TRUSTED_DOMAINS
|
||||
value: nextcloud.cluster.fun
|
||||
- name: NEXTCLOUD_DATA_DIR
|
||||
value: "/var/www/html/data"
|
||||
- name: REDIS_HOST
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud-redis
|
||||
key: redis-host
|
||||
- name: REDIS_PORT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud-redis
|
||||
key: redis-port
|
||||
- name: REDIS_HOST_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud-redis
|
||||
key: redis-password
|
||||
- name: REDIS_DB_INDEX
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: nextcloud-nextcloud-redis
|
||||
key: redis-db-index
|
||||
volumeMounts:
|
||||
- name: nextcloud-data
|
||||
mountPath: /var/www/
|
||||
@@ -346,45 +444,6 @@ spec:
|
||||
securityContext:
|
||||
fsGroup: 33
|
||||
---
|
||||
# Source: nextcloud/templates/cronjob.yaml
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: nextcloud-nextcloud-cron
|
||||
labels:
|
||||
app.kubernetes.io/name: nextcloud
|
||||
app.kubernetes.io/instance: nextcloud-nextcloud
|
||||
annotations:
|
||||
{}
|
||||
spec:
|
||||
schedule: "*/5 * * * *"
|
||||
concurrencyPolicy: Forbid
|
||||
failedJobsHistoryLimit: 5
|
||||
successfulJobsHistoryLimit: 2
|
||||
jobTemplate:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: nextcloud
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: nextcloud
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
containers:
|
||||
- name: nextcloud
|
||||
image: "nextcloud:31.0.8-apache"
|
||||
imagePullPolicy: IfNotPresent
|
||||
command: [ "curl" ]
|
||||
args:
|
||||
- "--fail"
|
||||
- "-L"
|
||||
- "https://nextcloud.cluster.fun/cron.php"
|
||||
resources:
|
||||
requests:
|
||||
memory: 200Mi
|
||||
---
|
||||
# Source: nextcloud/templates/ingress.yaml
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
|
||||
@@ -325,6 +325,7 @@ subjects:
|
||||
---
|
||||
apiVersion: v1
|
||||
data:
|
||||
annotations-risk-level: Critical
|
||||
allow-snippet-annotations: "true"
|
||||
use-proxy-protocol: "true"
|
||||
log-format-upstream: '{"time": "$time_iso8601", "request_id": "$req_id", "remote_user": "$remote_user", "remote_addr_masked": "$remote_addr_masked", "bytes_sent": $bytes_sent, "request_time": $request_time, "status": $status, "host": "$host", "request_proto": "$server_protocol", "path": "$uri", "request_query": "$args", "request_length": $request_length, "duration": $request_time,"method": "$request_method", "http_referrer": "$http_referer", "http_user_agent": "$http_user_agent", "redirect_location": "$redirect_location" }'
|
||||
@@ -491,7 +492,7 @@ spec:
|
||||
fieldPath: metadata.namespace
|
||||
- name: LD_PRELOAD
|
||||
value: /usr/local/lib/libmimalloc.so
|
||||
image: registry.k8s.io/ingress-nginx/controller:v1.13.1@sha256:37e489b22ac77576576e52e474941cd7754238438847c1ee795ad6d59c02b12a
|
||||
image: registry.k8s.io/ingress-nginx/controller:v1.15.1@sha256:594ceea76b01c592858f803f9ff4d2cb40542cae2060410b2c95f75907d659e1
|
||||
imagePullPolicy: IfNotPresent
|
||||
lifecycle:
|
||||
preStop:
|
||||
@@ -532,7 +533,7 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 90Mi
|
||||
memory: 150Mi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: true
|
||||
capabilities:
|
||||
|
||||
@@ -57,7 +57,7 @@ spec:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
- name: update-native-modules
|
||||
image: nodered/node-red:4.1.0-18
|
||||
image: nodered/node-red:4.1.17-18@sha256:161239fa8c3ebc2e6c5c831eb536960d4bdec677c7117a738d89a106cc2755a6
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- bash
|
||||
@@ -73,11 +73,16 @@ spec:
|
||||
mountPath: /data
|
||||
containers:
|
||||
- name: web
|
||||
image: nodered/node-red:4.1.0-18
|
||||
image: nodered/node-red:4.1.17-18@sha256:161239fa8c3ebc2e6c5c831eb536960d4bdec677c7117a738d89a106cc2755a6
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 1880
|
||||
name: web
|
||||
resources:
|
||||
requests:
|
||||
memory: 200M
|
||||
limits:
|
||||
memory: 200M
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/opengraph-image-gen:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/opengraph-image-gen:latest@sha256:97aea61e4db1e6d441fdfecd28f614b1e5342bfacd3a5ca6021ffca5c03db833
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
@@ -47,11 +47,10 @@ metadata:
|
||||
namespace: opengraph
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- opengraph.cluster.fun
|
||||
|
||||
@@ -43,9 +43,10 @@ spec:
|
||||
labels:
|
||||
app.kubernetes.io/name: outline
|
||||
spec:
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: outline
|
||||
image: outlinewiki/outline:0.86.1
|
||||
image: outlinewiki/outline:1.12.0@sha256:25d6a2ced2f1f0cf03c09abd776d87ba31941ed96d3a99992aa84b3bd0afc074
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: ALLOWED_DOMAINS
|
||||
@@ -72,7 +73,9 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 8m
|
||||
memory: 800Mi
|
||||
memory: 900Mi
|
||||
limits:
|
||||
memory: 1489Mi
|
||||
volumeMounts:
|
||||
- mountPath: /opt/outline/.env
|
||||
subPath: .env
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: pairdrop
|
||||
namespace: pairdrop
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: pairdrop
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: pairdrop
|
||||
namespace: pairdrop
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: pairdrop
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: pairdrop
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: docker-config
|
||||
priorityClassName: low
|
||||
containers:
|
||||
- name: web
|
||||
image: ghcr.io/schlagmichdoch/pairdrop:v1.11.2@sha256:c4b30977264a76e335740089e693a52a0d0d616330dec7f93c7b96beef7b4a02
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: web
|
||||
env:
|
||||
- name: RATE_LIMIT
|
||||
value: "1"
|
||||
- name: DONATION_BUTTON_ACTIVE
|
||||
value: "false"
|
||||
- name: TWITTER_BUTTON_ACTIVE
|
||||
value: "false"
|
||||
- name: MASTODON_BUTTON_ACTIVE
|
||||
value: "false"
|
||||
- name: BLUESKY_BUTTON_ACTIVE
|
||||
value: "false"
|
||||
- name: PRIVACYPOLICY_BUTTON_ACTIVE
|
||||
value: "false"
|
||||
resources:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
memory: 100Mi
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: web
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: pairdrop
|
||||
namespace: pairdrop
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- drop.cluster.fun
|
||||
secretName: pairdrop-ingress
|
||||
rules:
|
||||
- host: drop.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: pairdrop
|
||||
port:
|
||||
number: 80
|
||||
@@ -0,0 +1,111 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: planning-poker
|
||||
namespace: planning-poker
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: planning-poker-data
|
||||
namespace: planning-poker
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: "1Gi"
|
||||
storageClassName: "sbs-default-retain"
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: planning-poker
|
||||
namespace: planning-poker
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: planning-poker
|
||||
namespace: planning-poker
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
annotations:
|
||||
secret.reloader.stakater.com/reload: "planning-poker"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
spec:
|
||||
serviceAccountName: planning-poker
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: planning-poker
|
||||
image: ghcr.io/axeleroy/self-host-planning-poker:1.2.1@sha256:0253f17c07f6c484b6fbef65867863541494e063355d39757ca27963404864d4
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 8000
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: web
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: web
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: planning-poker-data
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: planning-poker
|
||||
namespace: planning-poker
|
||||
labels:
|
||||
app.kubernetes.io/name: planning-poker
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- planning-poker.cluster.fun
|
||||
secretName: planning-poker-ingress
|
||||
rules:
|
||||
- host: "planning-poker.cluster.fun"
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: planning-poker
|
||||
port:
|
||||
number: 80
|
||||
@@ -0,0 +1,7 @@
|
||||
apiVersion: scheduling.k8s.io/v1
|
||||
kind: PriorityClass
|
||||
metadata:
|
||||
name: critical
|
||||
value: 1000
|
||||
globalDefault: false
|
||||
preemptionPolicy: PreemptLowerPriority
|
||||
@@ -0,0 +1,7 @@
|
||||
apiVersion: scheduling.k8s.io/v1
|
||||
kind: PriorityClass
|
||||
metadata:
|
||||
name: low
|
||||
value: 10
|
||||
globalDefault: false
|
||||
preemptionPolicy: Never
|
||||
@@ -0,0 +1,7 @@
|
||||
apiVersion: scheduling.k8s.io/v1
|
||||
kind: PriorityClass
|
||||
metadata:
|
||||
name: normal
|
||||
value: 100
|
||||
globalDefault: true
|
||||
preemptionPolicy: PreemptLowerPriority
|
||||
@@ -1,149 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: tailscale-auth
|
||||
namespace: proxy-civo
|
||||
annotations:
|
||||
kube-1password: 2cqycmsgv5r7vcyvjpblcl2l4y
|
||||
kube-1password/vault: Kubernetes
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: host-mappings
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: proxy
|
||||
data:
|
||||
mapping.json: |
|
||||
{
|
||||
"vmcluster.proxy-civo.svc": "vmcluster.cluster.local",
|
||||
"loki.proxy-civo.svc": "loki-write.cluster.local",
|
||||
"loki.proxy-civo.svc:80": "loki-write.cluster.local",
|
||||
"loki-distributed.proxy-civo.svc": "loki-loki.cluster.local",
|
||||
"loki-distributed.proxy-civo.svc:80": "loki-loki.cluster.local"
|
||||
}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: internal-proxy
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: internal-proxy
|
||||
annotations:
|
||||
configmap.reloader.stakater.com/reload: "host-mappings"
|
||||
secret.reloader.stakater.com/reload: "tailscale-auth"
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: internal-proxy
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
serviceAccountName: default
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig:
|
||||
nameservers:
|
||||
- 100.100.100.100
|
||||
containers:
|
||||
- name: proxy
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/proxy:latest
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: PROXY_DESTINATION
|
||||
value: talos.tail4dfb.ts.net
|
||||
- name: PORT
|
||||
value: "8080"
|
||||
- name: TS_AUTH_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: tailscale-auth
|
||||
key: password
|
||||
- name: TS_HOSTNAME
|
||||
value: proxy-civo-internal-proxy
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: host-mappings
|
||||
mountPath: /config/
|
||||
volumes:
|
||||
- name: host-mappings
|
||||
configMap:
|
||||
name: host-mappings
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: loki
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: internal-proxy
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: loki-distributed
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: internal-proxy
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: prometheus
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: internal-proxy
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: vmcluster
|
||||
namespace: proxy-civo
|
||||
labels:
|
||||
app: internal-proxy
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: internal-proxy
|
||||
type: ClusterIP
|
||||
---
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/qr:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/qr:latest@sha256:e98db60ab26d5769bc5b17384fcb10d98e71b353fc23d154d5049fd88bab00eb
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
@@ -47,11 +47,10 @@ metadata:
|
||||
namespace: qr
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- qr.cluster.fun
|
||||
|
||||
@@ -327,9 +327,10 @@ spec:
|
||||
weight: 1
|
||||
nodeAffinity:
|
||||
terminationGracePeriodSeconds: 30
|
||||
priorityClassName: critical
|
||||
containers:
|
||||
- name: redis
|
||||
image: docker.io/bitnamilegacy/redis:7.2.4-debian-11-r11
|
||||
image: docker.io/bitnamilegacy/redis:7.2.4-debian-11-r11@sha256:c81b0644726b22fa65669b427610701e86dceb0007438f5d75d271b3197a48bf
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
securityContext:
|
||||
runAsUser: 1001
|
||||
@@ -471,7 +472,7 @@ spec:
|
||||
terminationGracePeriodSeconds: 30
|
||||
containers:
|
||||
- name: redis
|
||||
image: docker.io/bitnamilegacy/redis:7.2.4-debian-11-r11
|
||||
image: docker.io/bitnamilegacy/redis:7.2.4-debian-11-r11@sha256:c81b0644726b22fa65669b427610701e86dceb0007438f5d75d271b3197a48bf
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
securityContext:
|
||||
runAsUser: 1001
|
||||
|
||||
@@ -25,6 +25,8 @@ data:
|
||||
POLLING_FREQUENCY: "15"
|
||||
BASE_URL: "https://miniflux.cluster.fun/"
|
||||
METRICS_COLLECTOR: "1"
|
||||
CLEANUP_ARCHIVE_READ_DAYS: "365"
|
||||
CLEANUP_ARCHIVE_UNREAD_DAYS: "365"
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
@@ -66,7 +68,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: ghcr.io/miniflux/miniflux:2.2.12
|
||||
image: ghcr.io/miniflux/miniflux:2.3.5@sha256:8fd6c3c434ecc3d4083306f83e03c0bb74c632e0f8378da5ead7e1773b0b89c9
|
||||
imagePullPolicy: IfNotPresent
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: docker-config
|
||||
namespace: social-to-grist
|
||||
annotations:
|
||||
kube-1password: i6ngbk5zf4k52xgwdwnfup5bby
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: .dockerconfigjson
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
data:
|
||||
.dockerconfigjson: e30=
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: social-to-grist-auth
|
||||
namespace: social-to-grist
|
||||
annotations:
|
||||
kube-1password: mr6spkkx7n3memkbute6ojaarm
|
||||
kube-1password/vault: Kubernetes
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: social-to-grist
|
||||
namespace: social-to-grist
|
||||
annotations:
|
||||
kube-1password: oa3ycnui3ji4lc665bifaao63q
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: social-to-grist
|
||||
namespace: social-to-grist
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: auth
|
||||
name: web
|
||||
selector:
|
||||
app: social-to-grist
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: social-to-grist
|
||||
namespace: social-to-grist
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: social-to-grist
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: social-to-grist
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: docker-config
|
||||
containers:
|
||||
- args:
|
||||
- --cookie-secure=false
|
||||
- --provider=oidc
|
||||
- --provider-display-name=Auth0
|
||||
- --upstream=http://localhost:8080
|
||||
- --http-address=$(HOST_IP):8000
|
||||
- --redirect-url=https://social-to-grist.cluster.fun/oauth2/callback
|
||||
- --email-domain=marcusnoble.co.uk
|
||||
- --pass-basic-auth=false
|
||||
- --pass-access-token=false
|
||||
- --oidc-issuer-url=https://marcusnoble.eu.auth0.com/
|
||||
- --cookie-secret=KDGD6rrK6cBmryyZ4wcJ9xAUNW9AQNFT
|
||||
env:
|
||||
- name: HOST_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: status.podIP
|
||||
- name: OAUTH2_PROXY_CLIENT_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
key: username
|
||||
name: social-to-grist-auth
|
||||
- name: OAUTH2_PROXY_CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
key: password
|
||||
name: social-to-grist-auth
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
|
||||
name: oauth-proxy
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
protocol: TCP
|
||||
name: auth
|
||||
resources:
|
||||
limits:
|
||||
memory: 50Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus-private/social-to-grist:latest
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: PORT
|
||||
value: "8080"
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: "social-to-grist"
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 50Mi
|
||||
requests:
|
||||
memory: 50Mi
|
||||
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: social-to-grist
|
||||
namespace: social-to-grist
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- social-to-grist.cluster.fun
|
||||
secretName: social-to-grist-ingress
|
||||
rules:
|
||||
- host: social-to-grist.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: social-to-grist
|
||||
port:
|
||||
number: 80
|
||||
@@ -92,7 +92,7 @@ spec:
|
||||
secretKeyRef:
|
||||
key: password
|
||||
name: social-to-rolodex-auth
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0
|
||||
image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.6@sha256:c3415e8660af553f5e18f5d90db050614c02493c0ac6260ac59442f6d9b12048
|
||||
name: oauth-proxy
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
@@ -129,11 +129,10 @@ metadata:
|
||||
namespace: social-to-rolodex
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- social-to-rolodex.cluster.fun
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: sre-agent
|
||||
namespace: default
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: sre-agent
|
||||
namespace: default
|
||||
annotations:
|
||||
kubernetes.io/service-account.name: sre-agent
|
||||
type: kubernetes.io/service-account-token
|
||||
|
||||
---
|
||||
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: sre-agent
|
||||
labels:
|
||||
app.kubernetes.io/name: sre-agent
|
||||
rules:
|
||||
# Node-level diagnostics
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes/proxy", "nodes/metrics", "nodes/stats"]
|
||||
verbs: ["get", "list"]
|
||||
|
||||
# Pod diagnostics
|
||||
- apiGroups: [""]
|
||||
resources: ["pods", "pods/log", "pods/status", "pods/ephemeralcontainers"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# Services, endpoints, networking
|
||||
- apiGroups: [""]
|
||||
resources: ["services", "endpoints", "endpointslices", "namespaces"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims", "persistentvolumes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["configmaps", "secrets"]
|
||||
verbs: ["get", "list"] # readable only, no modify/delete
|
||||
- apiGroups: [""]
|
||||
resources: ["resourcequotas", "limitranges"]
|
||||
verbs: ["get", "list"]
|
||||
|
||||
# Network policies
|
||||
- apiGroups: ["networking.k8s.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["discovery.k8s.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# Workloads
|
||||
- apiGroups: ["apps"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["apps"]
|
||||
resources: ["deployments/scale", "replicasets/scale"]
|
||||
verbs: ["get"]
|
||||
|
||||
# Jobs & cronjobs
|
||||
- apiGroups: ["batch"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["batch"]
|
||||
resources: ["jobs/log"]
|
||||
verbs: ["get", "list"]
|
||||
|
||||
# Autoscaling
|
||||
- apiGroups: ["autoscaling"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# RBAC visibility (diagnose who owns what)
|
||||
- apiGroups: ["rbac.authorization.k8s.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# Custom Resource Definitions (so we can inspect custom resources)
|
||||
- apiGroups: ["apiextensions.k8s.io"]
|
||||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# Priority classes
|
||||
- apiGroups: ["scheduling.k8s.io"]
|
||||
resources: ["priorityclasses"]
|
||||
verbs: ["get", "list"]
|
||||
|
||||
# Certificate rotation
|
||||
- apiGroups: ["certificates.k8s.io"]
|
||||
resources: ["certificatesigningrequests", "certificatesigningrequests/approval"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
# Metrics Server (if installed)
|
||||
- apiGroups: ["metrics.k8s.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list"]
|
||||
|
||||
# Admission controllers / pod security (diagnostic)
|
||||
- apiGroups: ["policy"]
|
||||
resources: ["*"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
|
||||
---
|
||||
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: sre-agent-binding
|
||||
labels:
|
||||
app.kubernetes.io/name: sre-agent
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: sre-agent
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: sre-agent
|
||||
namespace: default
|
||||
@@ -27,9 +27,10 @@ spec:
|
||||
labels:
|
||||
app: svg-to-dxf
|
||||
spec:
|
||||
priorityClassName: low
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/svg-to-dxf:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/svg-to-dxf:latest@sha256:7e74cd6569ed68d46b012ffbd672be9e4c6422b28fb13eb5d83b2c1dc85e9cb9
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
@@ -45,14 +46,11 @@ metadata:
|
||||
namespace: svg-to-dxf
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/buffering: |
|
||||
maxrequestbodybytes: 31457280
|
||||
memrequestbodybytes: 62914560
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- svg-to-dxf.cluster.fun
|
||||
|
||||
@@ -1,45 +1,3 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: talks
|
||||
namespace: talks
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: talks
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: talks
|
||||
namespace: talks
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: talks
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: talks
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/talks:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 20Mi
|
||||
requests:
|
||||
memory: 20Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
@@ -47,24 +5,13 @@ metadata:
|
||||
namespace: talks
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/permanent-redirect: https://speaking.marcusnoble.co.uk
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- talks.marcusnoble.co.uk
|
||||
secretName: talks-ingress
|
||||
rules:
|
||||
- host: talks.marcusnoble.co.uk
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: talks
|
||||
port:
|
||||
number: 80
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: tank
|
||||
namespace: tank
|
||||
annotations:
|
||||
kube-1password: g6xle67quzowvvekf6zukjbbm4
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: tank
|
||||
namespace: tank
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
selector:
|
||||
app: tank
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: tank
|
||||
namespace: tank
|
||||
labels:
|
||||
app: tank
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: tank
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: tank
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/tank:latest
|
||||
imagePullPolicy: Always
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: tank
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 10Mi
|
||||
requests:
|
||||
memory: 10Mi
|
||||
@@ -27,9 +27,10 @@ spec:
|
||||
labels:
|
||||
app: text-to-dxf
|
||||
spec:
|
||||
priorityClassName: low
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/text-to-dxf:latest
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/text-to-dxf:latest@sha256:f1ce90feec0dae575979c7fa83b855ced939efe23d749cc2615f5d43a08cacb0
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
@@ -45,11 +46,10 @@ metadata:
|
||||
namespace: text-to-dxf
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- text-to-dxf.cluster.fun
|
||||
|
||||
+14
-55
@@ -1,45 +1,3 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: til
|
||||
namespace: til
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: til
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: til
|
||||
namespace: til
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: til
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: til
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/til:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 20Mi
|
||||
requests:
|
||||
memory: 20Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
@@ -47,24 +5,25 @@ metadata:
|
||||
namespace: til
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
nginx.ingress.kubernetes.io/server-snippet: |
|
||||
rewrite ^/dont-reuse-keys/?$ https://marcusnoble.co.uk/2020-10-03-t-i-l-don-t-reuse-api-keys/ permanent;
|
||||
rewrite ^/favicons/?$ https://marcusnoble.co.uk/2020-11-10-t-i-l-how-to-get-the-favicon-of-any-site/ permanent;
|
||||
rewrite ^/getopts/?$ https://marcusnoble.co.uk/2021-08-04-t-i-l-cli-flag-handling-in-bash-using-getopts/ permanent;
|
||||
rewrite ^/go-named-return-values/?$ https://marcusnoble.co.uk/2020-10-05-t-i-l-named-returns-in-go-functions/ permanent;
|
||||
rewrite ^/golang-append/?$ https://marcusnoble.co.uk/2020-10-30-t-i-l-golang-s-append-mutates-the-provided-array/ permanent;
|
||||
rewrite ^/golang-split-by-space/?$ https://marcusnoble.co.uk/2020-09-18-t-i-l-split-on-spaces-in-go/ permanent;
|
||||
rewrite ^/kubectl-replace/?$ https://marcusnoble.co.uk/2020-09-25-t-i-l-kubectl-replace/ permanent;
|
||||
rewrite ^/kubernetes-label-length/?$ https://marcusnoble.co.uk/2021-04-20-t-i-l-kubernetes-label-length/ permanent;
|
||||
rewrite ^/tekton-multi-arch-builds/?$ https://marcusnoble.co.uk/2020-09-13-t-i-l-tekton-multi-arch-image-builds/ permanent;
|
||||
rewrite ^/yaml-key-spaces/?$ https://marcusnoble.co.uk/2021-05-11-t-i-l-yaml-keys-allow-for-spaces-in-them/ permanent;
|
||||
rewrite ^/yaml-multiline/?$ https://marcusnoble.co.uk/2020-09-17-t-i-l-yaml-multiline-values/ permanent;
|
||||
rewrite ^/?$ https://marcusnoble.co.uk/ permanent;
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- til.marcusnoble.co.uk
|
||||
secretName: til-ingress
|
||||
rules:
|
||||
- host: til.marcusnoble.co.uk
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: til
|
||||
port:
|
||||
number: 80
|
||||
|
||||
@@ -45,7 +45,7 @@ spec:
|
||||
- --entrypoints.websecure.http.tls=true
|
||||
- --entrypoints.web.http.redirections.entrypoint.to=websecure
|
||||
- --entrypoints.web.http.redirections.entrypoint.scheme=https
|
||||
image: rancher/mirrored-library-traefik:2.11.24
|
||||
image: rancher/mirrored-library-traefik:2.11.50@sha256:e4cf36c7f13f76ad750720a8b51e9d2458964961b50a0148a806d589b5cfa88b
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
failureThreshold: 3
|
||||
|
||||
@@ -1,32 +1,26 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: chat-matrix-user-media
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: synapse
|
||||
name: trek-data
|
||||
namespace: trek
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 12Gi
|
||||
storage: 2Gi
|
||||
storageClassName: sbs-default-retain
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: chat-matrix-signing-key
|
||||
namespace: chat
|
||||
labels:
|
||||
app.kubernetes.io/name: "matrix"
|
||||
component: synapse
|
||||
name: trek-uploads
|
||||
namespace: trek
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storage: 2Gi
|
||||
storageClassName: sbs-default-retain
|
||||
---
|
||||
@@ -0,0 +1,157 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: trek
|
||||
namespace: trek
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
annotations:
|
||||
kube-1password: irpjqi7ppvbvldfni7ywgorpgi
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: trek
|
||||
namespace: trek
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
annotations:
|
||||
reloader.stakater.com/match: "true"
|
||||
data:
|
||||
NODE_ENV: "production"
|
||||
PORT: "3000"
|
||||
TZ: "UTC"
|
||||
LOG_LEVEL: "info"
|
||||
DEFAULT_LANGUAGE: "en"
|
||||
ALLOWED_ORIGINS: "https://trek.cluster.fun"
|
||||
APP_URL: "https://trek.cluster.fun"
|
||||
FORCE_HTTPS: "false"
|
||||
COOKIE_SECURE: "true"
|
||||
|
||||
---
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: trek
|
||||
namespace: trek
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: trek
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
spec:
|
||||
containers:
|
||||
- name: trek
|
||||
image: mauriceboe/trek:5.1.1@sha256:7068cc86c0d4d5aa9b55aeffd03966f7458352bcb3e010721e3d7d6899ac60bd
|
||||
imagePullPolicy: IfNotPresent
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: trek
|
||||
- secretRef:
|
||||
name: trek
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: web
|
||||
volumeMounts:
|
||||
- mountPath: /app/data
|
||||
name: data
|
||||
- mountPath: /app/uploads
|
||||
name: uploads
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: 3000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: 3000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
resources:
|
||||
requests:
|
||||
cpu: 300m
|
||||
memory: 400Mi
|
||||
limits:
|
||||
cpu: 700m
|
||||
memory: 800Mi
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: trek-data
|
||||
- name: uploads
|
||||
persistentVolumeClaim:
|
||||
claimName: trek-uploads
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: trek
|
||||
namespace: trek
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: trek
|
||||
---
|
||||
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: trek
|
||||
namespace: trek
|
||||
labels:
|
||||
app: trek
|
||||
app.kubernetes.io/name: trek
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
nginx.ingress.kubernetes.io/client-body-buffer-size: 25m
|
||||
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
|
||||
nginx.ingress.kubernetes.io/proxy-next-upstream: "300"
|
||||
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: "300"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- trek.cluster.fun
|
||||
secretName: trek-ingress
|
||||
rules:
|
||||
- host: trek.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: trek
|
||||
port:
|
||||
name: web
|
||||
@@ -1,92 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: tweetsvg
|
||||
namespace: tweetsvg
|
||||
annotations:
|
||||
kube-1password: dmjtjxrcpqtmeddq5x7zikj37i
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: .env
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: tweetsvg
|
||||
namespace: tweetsvg
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 8080
|
||||
name: web
|
||||
selector:
|
||||
app: tweetsvg
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: tweetsvg
|
||||
namespace: tweetsvg
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: tweetsvg
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: tweetsvg
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/tweetsvg:latest
|
||||
imagePullPolicy: Always
|
||||
# env:
|
||||
# - name: DOTENV_DIR
|
||||
# value: /config/
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
memory: 100Mi
|
||||
volumeMounts:
|
||||
- name: dotenv
|
||||
mountPath: /app/.env
|
||||
subPath: .env
|
||||
volumes:
|
||||
- name: dotenv
|
||||
secret:
|
||||
secretName: tweetsvg
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: tweetsvg
|
||||
namespace: tweetsvg
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
kubernetes.io/ingress.class: traefik
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- tweet.cluster.fun
|
||||
secretName: tweetsvg-ingress
|
||||
rules:
|
||||
- host: tweet.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: tweetsvg
|
||||
port:
|
||||
number: 80
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: twitter-profile-pic
|
||||
namespace: twitter-profile-pic
|
||||
annotations:
|
||||
kube-1password: d2rt56v47q2wij47qgj27umrky
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-key: .env
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: twitter-profile-pic
|
||||
namespace: twitter-profile-pic
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 9090
|
||||
name: web
|
||||
selector:
|
||||
app: twitter-profile-pic
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: twitter-profile-pic
|
||||
namespace: twitter-profile-pic
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: twitter-profile-pic
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: twitter-profile-pic
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: rg.fr-par.scw.cloud/averagemarcus/twitter-profile-pic:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 9090
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
memory: 100Mi
|
||||
volumeMounts:
|
||||
- name: dotenv
|
||||
mountPath: /app/.env
|
||||
subPath: .env
|
||||
volumes:
|
||||
- name: dotenv
|
||||
secret:
|
||||
secretName: twitter-profile-pic
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: twitter-profile-pic-cluster-fun
|
||||
namespace: twitter-profile-pic
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- twitter-profile-pic.cluster.fun
|
||||
secretName: twitter-profile-pic-cluster-fun-ingress
|
||||
rules:
|
||||
- host: twitter-profile-pic.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: twitter-profile-pic
|
||||
port:
|
||||
number: 80
|
||||
@@ -0,0 +1,117 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: url-to-grist
|
||||
namespace: cloudnative-now
|
||||
annotations:
|
||||
kube-1password: bu4lczquzosu3yxhyrzbtepply
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
labels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: url-to-grist
|
||||
labels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: url-to-grist
|
||||
labels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
annotations:
|
||||
secret.reloader.stakater.com/reload: "url-to-grist"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
spec:
|
||||
containers:
|
||||
- name: url-to-grist
|
||||
image: ghcr.io/namelessplanet/url-to-grist:v1.6.1@sha256:7912e3340b071244d7b807759608c6bc6f8e563f548485379247ef1106a82be5
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: PORT
|
||||
value: "8080"
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: "url-to-grist"
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: web
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: web
|
||||
path: /healthz
|
||||
initialDelaySeconds: 1
|
||||
periodSeconds: 5
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
timeoutSeconds: 3
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
port: web
|
||||
path: /healthz
|
||||
initialDelaySeconds: 1
|
||||
periodSeconds: 5
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
timeoutSeconds: 3
|
||||
resources:
|
||||
limits:
|
||||
memory: 20Mi
|
||||
requests:
|
||||
memory: 20Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: url-to-grist
|
||||
namespace: cloudnative-now
|
||||
labels:
|
||||
app.kubernetes.io/name: url-to-grist
|
||||
app.kubernetes.io/part-of: cloudnative.now
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- "url-to-grist.cloudnative.now"
|
||||
secretName: "url-to-grist-ingress"
|
||||
rules:
|
||||
- host: "url-to-grist.cloudnative.now"
|
||||
http:
|
||||
paths:
|
||||
- path: "/"
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: url-to-grist
|
||||
port:
|
||||
name: web
|
||||
@@ -0,0 +1,69 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: vert
|
||||
namespace: vert
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: web
|
||||
name: web
|
||||
selector:
|
||||
app: vert
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: vert
|
||||
namespace: vert
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: vert
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: vert
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: ghcr.io/vert-sh/vert:sha-438f91a@sha256:c604d357e44dce6020391b6bd8d20e4f5d35e3778ecf58bbccbd8fdc6792eaf4
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
resources:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
memory: 200Mi
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: vert
|
||||
namespace: vert
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- vert.cluster.fun
|
||||
secretName: vert-ingress
|
||||
rules:
|
||||
- host: vert.cluster.fun
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: vert
|
||||
port:
|
||||
number: 80
|
||||
|
||||
@@ -1,204 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: wallabag
|
||||
namespace: wallabag
|
||||
annotations:
|
||||
kube-1password: 4yogl6yx6t4trrkq7o35tiyj6i
|
||||
kube-1password/vault: Kubernetes
|
||||
kube-1password/secret-text-parse: "true"
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: wallabag
|
||||
namespace: wallabag
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag
|
||||
annotations:
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app.kubernetes.io/name: wallabag
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: wallabag
|
||||
namespace: wallabag
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag-init
|
||||
spec:
|
||||
suspend: true
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag-init
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: db-init
|
||||
image: "wallabag/wallabag:latest"
|
||||
imagePullPolicy: IfNotPresent
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: wallabag
|
||||
env:
|
||||
- name: "SYMFONY__ENV__DATABASE_CHARSET"
|
||||
value: "utf8"
|
||||
- name: "SYMFONY__ENV__DATABASE_DRIVER"
|
||||
value: "pdo_pgsql"
|
||||
- name: "SYMFONY__ENV__DATABASE_NAME"
|
||||
value: "wallabag"
|
||||
- name: "SYMFONY__ENV__DATABASE_TABLE_PREFIX"
|
||||
value: "wallabag_"
|
||||
- name: "SYMFONY__ENV__DOMAIN_NAME"
|
||||
value: "https://wallabag.cluster.fun"
|
||||
- name: "SYMFONY__ENV__FOSUSER_REGISTRATION"
|
||||
value: "false"
|
||||
- name: "SYMFONY__ENV__LOCALE"
|
||||
value: "en"
|
||||
- name: "TZ"
|
||||
value: "UTC"
|
||||
command:
|
||||
- /var/www/wallabag/bin/console
|
||||
- wallabag:install
|
||||
- --env=prod
|
||||
- --no-interaction
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: wallabag
|
||||
namespace: wallabag
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag
|
||||
spec:
|
||||
revisionHistoryLimit: 3
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: wallabag
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag
|
||||
spec:
|
||||
initContainers:
|
||||
- name: db-migrate
|
||||
image: "wallabag/wallabag:2.6.13"
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /var/www/wallabag/bin/console
|
||||
- doctrine:migrations:migrate
|
||||
- --env=prod
|
||||
- --no-interaction
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: wallabag
|
||||
env:
|
||||
- name: "SYMFONY__ENV__DATABASE_CHARSET"
|
||||
value: "utf8"
|
||||
- name: "SYMFONY__ENV__DATABASE_DRIVER"
|
||||
value: "pdo_pgsql"
|
||||
- name: "SYMFONY__ENV__DATABASE_NAME"
|
||||
value: "wallabag"
|
||||
- name: "SYMFONY__ENV__DATABASE_TABLE_PREFIX"
|
||||
value: "wallabag_"
|
||||
- name: "SYMFONY__ENV__DOMAIN_NAME"
|
||||
value: "https://wallabag.cluster.fun"
|
||||
- name: "SYMFONY__ENV__FOSUSER_REGISTRATION"
|
||||
value: "false"
|
||||
- name: "SYMFONY__ENV__LOCALE"
|
||||
value: "en"
|
||||
- name: "TZ"
|
||||
value: "UTC"
|
||||
- name: "POPULATE_DATABASE"
|
||||
value: "false"
|
||||
containers:
|
||||
- name: wallabag
|
||||
image: "wallabag/wallabag:2.6.13"
|
||||
imagePullPolicy: IfNotPresent
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: wallabag
|
||||
env:
|
||||
- name: "SYMFONY__ENV__DATABASE_CHARSET"
|
||||
value: "utf8"
|
||||
- name: "SYMFONY__ENV__DATABASE_DRIVER"
|
||||
value: "pdo_pgsql"
|
||||
- name: "SYMFONY__ENV__DATABASE_NAME"
|
||||
value: "wallabag"
|
||||
- name: "SYMFONY__ENV__DATABASE_TABLE_PREFIX"
|
||||
value: "wallabag_"
|
||||
- name: "SYMFONY__ENV__DOMAIN_NAME"
|
||||
value: "https://wallabag.cluster.fun"
|
||||
- name: "SYMFONY__ENV__FOSUSER_REGISTRATION"
|
||||
value: "false"
|
||||
- name: "SYMFONY__ENV__LOCALE"
|
||||
value: "en"
|
||||
- name: "TZ"
|
||||
value: "UTC"
|
||||
- name: "POPULATE_DATABASE"
|
||||
value: "false"
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: 80
|
||||
initialDelaySeconds: 0
|
||||
failureThreshold: 3
|
||||
timeoutSeconds: 1
|
||||
periodSeconds: 10
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: 80
|
||||
initialDelaySeconds: 0
|
||||
failureThreshold: 3
|
||||
timeoutSeconds: 1
|
||||
periodSeconds: 10
|
||||
startupProbe:
|
||||
tcpSocket:
|
||||
port: 80
|
||||
initialDelaySeconds: 0
|
||||
failureThreshold: 30
|
||||
timeoutSeconds: 1
|
||||
periodSeconds: 5
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: wallabag
|
||||
namespace: wallabag
|
||||
labels:
|
||||
app.kubernetes.io/name: wallabag
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- "wallabag.cluster.fun"
|
||||
secretName: "wallabag-ingress"
|
||||
rules:
|
||||
- host: "wallabag.cluster.fun"
|
||||
http:
|
||||
paths:
|
||||
- path: "/"
|
||||
pathType: ImplementationSpecific
|
||||
backend:
|
||||
service:
|
||||
name: wallabag
|
||||
port:
|
||||
number: 80
|
||||
@@ -17,7 +17,7 @@ metadata:
|
||||
app: yay-or-nay
|
||||
app.kubernetes.io/name: yay-or-nay
|
||||
annotations:
|
||||
reloader.stakater.com/search: "true"
|
||||
secret.reloader.stakater.com/reload: "yay-or-nay"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
@@ -31,7 +31,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: yay-or-nay
|
||||
image: ghcr.io/mocdaniel/yay-or-nay:1.1.1
|
||||
image: ghcr.io/mocdaniel/yay-or-nay:1.2.1@sha256:3edb37642d749124e9e03a6dbaca9ae5d0a45dd9361a0dbcae1ad051faeb1743
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
@@ -77,6 +77,7 @@ metadata:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- hosts:
|
||||
- "yay-or-nay.cluster.fun"
|
||||
|
||||
+12
-2
@@ -8,7 +8,8 @@
|
||||
"rebaseWhen": "behind-base-branch",
|
||||
"extends": [
|
||||
"replacements:k8s-registry-move",
|
||||
"local>averagemarcus/renovate-config//source-urls"
|
||||
"local>averagemarcus/renovate-config//source-urls",
|
||||
"docker:pinDigests"
|
||||
],
|
||||
"ignorePaths": [
|
||||
"terraform"
|
||||
@@ -21,5 +22,14 @@
|
||||
},
|
||||
"kubernetes": {
|
||||
"fileMatch": ["manifests/.+\\.yaml$"]
|
||||
}
|
||||
},
|
||||
"argocd": {
|
||||
"managerFilePatterns": ["/manifests/_apps/.+\\.yaml$/"]
|
||||
},
|
||||
"packageRules": [
|
||||
{
|
||||
"matchCurrentValue": "/(latest|full)/",
|
||||
"pinDigests": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user