Compare commits
911 Commits
dev
...
8dfd64822c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8dfd64822c | ||
| 5508fe3610 | |||
| 69bfdc9852 | |||
| ac8b836748 | |||
| aabec35dd7 | |||
| ed1a465402 | |||
| 868ceddb22 | |||
| 4fdddee8e0 | |||
| 820e899359 | |||
| 16c41556c3 | |||
| fbaa3877a2 | |||
| 89a13d81f1 | |||
| 59a85a10f9 | |||
| d30a36c96e | |||
| 2be3d65620 | |||
| d0ef9e7586 | |||
| 06a0653eec | |||
| 2cd9be813e | |||
| e7b9086247 | |||
| 472f4064f5 | |||
| 687d890733 | |||
| 3575572a65 | |||
| 2cbc329a39 | |||
| 87b1b7dbc2 | |||
| d99920c95c | |||
| 44ded83012 | |||
| 471dcf907d | |||
| 782799f835 | |||
| 7e435f64b8 | |||
| 5efad19546 | |||
| c1b02bf142 | |||
| 8227cbd373 | |||
| 8d1c136ae7 | |||
| 5dd40718b4 | |||
| 1847fa2472 | |||
| b7bfd77883 | |||
| b98d61c5a3 | |||
|
|
418b365e2d | ||
|
|
e653d41331 | ||
|
|
10655e1ad7 | ||
| b3e86011b4 | |||
| f10021899c | |||
| b107d7a5fe | |||
|
|
02a2f4f7c9 | ||
|
|
4bc076a715 | ||
|
|
520a934cd8 | ||
|
|
430c2541e5 | ||
|
|
6f8db8ccdb | ||
|
|
9a6a16dcee | ||
|
|
d10f200c09 | ||
|
|
e0c303c38b | ||
|
|
7b188327c9 | ||
|
|
9715b9ac87 | ||
| 006094410c | |||
| 6a6bccda43 | |||
| 3233a8f769 | |||
| 69963d1c2f | |||
| 2be77594f0 | |||
| d4b0dd3c80 | |||
| 8940086c97 | |||
| b39863dee9 | |||
| b28c7ce8fd | |||
| c8fa9b77ad | |||
| ecd5ca5163 | |||
| 9ded36aa45 | |||
| 3b52a06603 | |||
| ac90414c06 | |||
| 7bcd121e3c | |||
| 0f038a8bb6 | |||
| b3032d2998 | |||
| 74ed1dca43 | |||
| 8fedb4fc9d | |||
| 6b69f85623 | |||
| 4d0a6cc470 | |||
| e3cd02fa7f | |||
| 17c2ada6a8 | |||
| d039f241f6 | |||
| 5ad297f15a | |||
| 46281b59a0 | |||
|
|
66a63be3a2 | ||
|
|
054ee57e6b | ||
|
|
799a8687ca | ||
|
|
b02f5d3727 | ||
|
|
0ef216e92f | ||
|
|
51006b03d1 | ||
|
|
643c89e794 | ||
|
|
29b8753182 | ||
|
|
841e26ba2a | ||
|
|
4d7c1779c3 | ||
| b0f6e8ead5 | |||
| 7c7890933b | |||
| 25664f4df4 | |||
| 6791096b3a | |||
| dcc3ae6aa3 | |||
| 6257d7a1d4 | |||
| 1d167cd62c | |||
| a6037a6cc1 | |||
| 5250e5ad15 | |||
| 355c881597 | |||
| 0d5a699615 | |||
| 0b87aa8630 | |||
| 1f78ec52d3 | |||
| ddd49cc031 | |||
| f31c0bf257 | |||
| 15db2e8d41 | |||
| 3020148e02 | |||
| ab6a5c96b4 | |||
| e9712ad8c6 | |||
| ea049a7ac2 | |||
| 1d3c524887 | |||
|
|
a7be2b0b74 | ||
| 19a8b05fae | |||
| 607e02496a | |||
| 5580b7dfd0 | |||
| bf76abaf83 | |||
| 124da56e0a | |||
| 8d86bd83e3 | |||
| e7f600bb80 | |||
| 0f30f72039 | |||
| febe9fbdf5 | |||
| 72903cb7cc | |||
| 6638751ee8 | |||
| d616df5b1b | |||
| 4dd69bac83 | |||
| 177e6740d5 | |||
| b0e955a8af | |||
| e8665c4379 | |||
| 5a936831f7 | |||
| 756744c379 | |||
| fe2f50f351 | |||
| ced106bf3a | |||
| c14346bb2e | |||
| c6fde4ad40 | |||
| da5f19f9d3 | |||
| 495ddce824 | |||
| 43ef21d99b | |||
| 49abd7fb28 | |||
| 0437fadc15 | |||
| d0f4780b6c | |||
| affd851017 | |||
| c016db260e | |||
| 5cb7ca72d8 | |||
| 7d0e2f4b22 | |||
| f9f1e101a9 | |||
| 977d652d8b | |||
| 302184d655 | |||
| 7b72bb16f7 | |||
| 95386b345a | |||
| cb64c2d05d | |||
| cbadf7ce19 | |||
| 39bf52cae3 | |||
| 362037c198 | |||
| af5f6e1257 | |||
| 0ae3c80a81 | |||
| 9b9f36859f | |||
| 5525c9bba5 | |||
| f4eaa739e9 | |||
| 37fd96179d | |||
|
|
17c3e5dddf | ||
| beef704102 | |||
| 4708a70a34 | |||
| 29661b9bf7 | |||
|
|
a8e7ac07c8 | ||
|
|
fe79c830cb | ||
| cd1abb4cec | |||
|
|
0a1d45d16a | ||
|
|
3acedbfdd2 | ||
|
|
6cbba2abec | ||
|
|
f8d47b89d9 | ||
|
|
72ce4db466 | ||
|
|
5e03a9e40e | ||
| cb821ae051 | |||
|
|
9e4f732d45 | ||
| 065b4787c8 | |||
| 8b498e971d | |||
| 96872dc7b0 | |||
| c5ec227c48 | |||
| 4ae919f070 | |||
| d88e58a5a1 | |||
| 4105842b31 | |||
| f083c707d5 | |||
| ee8c9571b2 | |||
| 4ca9d3150c | |||
| 49e48e7e45 | |||
| 643ec165fc | |||
| 72e6598aae | |||
| e2af26316f | |||
| cdd34130aa | |||
| 95be6528f2 | |||
| 5f3bd1c507 | |||
| 97375239af | |||
| 4ce97eca7a | |||
| 818123fee1 | |||
| bd7adf4065 | |||
| eedb7d8380 | |||
| d506b1964b | |||
| 5e0ce5c39c | |||
| 45af1f9be9 | |||
| 8c27fdce5f | |||
| bff82fd82f | |||
| 960a681b6f | |||
| e6c3dc4357 | |||
| 107dd520b3 | |||
| 263ed8d805 | |||
| 19a1c7ebd3 | |||
| e74142b072 | |||
| 16745c9f2b | |||
| 5d8f11b8ea | |||
| f4e0a20954 | |||
| 596420a053 | |||
| 235806871f | |||
| f81893afee | |||
| 36e8dde91d | |||
| 71340d6b3f | |||
| c5d12501ef | |||
| 3a5a9838b2 | |||
| 9f8dc8f8ed | |||
| 9514ffc44a | |||
| 04da18d4ee | |||
| de5dc93ecf | |||
| d781ccc052 | |||
| 137fbd4822 | |||
| 6ed5b70eaf | |||
| 13435c5f47 | |||
| bf3b202308 | |||
| f9fca17edb | |||
| 721d9be377 | |||
| 0690679d91 | |||
| abab7c70db | |||
| b43d205af3 | |||
| c8dd861c5d | |||
| d6f69b5857 | |||
| f99dbcc533 | |||
| bcc421445c | |||
|
|
ad8f5884e7 | ||
|
|
22d82b0082 | ||
| 16077f4523 | |||
|
|
d35c0757fb | ||
|
|
ab868d0c26 | ||
| d6162f7046 | |||
|
|
9a587d2f75 | ||
|
|
2d00ceda68 | ||
| c6b300f572 | |||
| 16e8514480 | |||
| 0812204655 | |||
|
|
821c206174 | ||
|
|
10168e7534 | ||
|
|
6a26e350d3 | ||
|
|
5c84b0bd26 | ||
| 4b0ef9a97e | |||
| 3ae74042c3 | |||
| 4312733b55 | |||
| b9d0ef311b | |||
| 0e6aad89dc | |||
| 7916ed8247 | |||
| 098186307b | |||
| 4a6bac7674 | |||
| 92c666bf9d | |||
| 9876b3659e | |||
| 84832c7455 | |||
| b293f708e9 | |||
| f40139702d | |||
| 2a823e7536 | |||
| d73325c1bc | |||
| c1594778b7 | |||
| 765a79aaad | |||
| bf7f3692b8 | |||
| 705f13289c | |||
| 18366175e9 | |||
| 03beda78e0 | |||
| a43c27d78a | |||
| 1baa082434 | |||
| 1463788a5e | |||
| a66bd5f10a | |||
| 49cba480ba | |||
| 7fdc34321f | |||
| 60053fb88a | |||
| 59734e07a5 | |||
| b33158e0fe | |||
| 9d0a172198 | |||
| 0e547f03ce | |||
| a271f17ad8 | |||
| 44fc423272 | |||
| 7845a8fbd1 | |||
| 8487172ee8 | |||
| c407e7789d | |||
| acfd02d2a2 | |||
| e7c75c9c82 | |||
| c6e52fd256 | |||
| 11b3a1b923 | |||
| 2729f7e4c2 | |||
| cb3f240a2c | |||
| 37ab76ac8e | |||
| 91c26911ce | |||
| 7260fea4c8 | |||
| 83195cc317 | |||
| f9edb8b4d2 | |||
| 980eab909d | |||
| 448c8b0ea3 | |||
| 408a8048e6 | |||
| 79256a5964 | |||
| 41d2d55807 | |||
| a6289a9055 | |||
| 6fe8eec8f9 | |||
| a950be662b | |||
| 4adc7323e3 | |||
| f58716f517 | |||
| babc384d17 | |||
| 42ba7594fb | |||
| a2b64f80b4 | |||
| 09e4a5013a | |||
| 5e3019d2f3 | |||
| 8a2cb45bc7 | |||
| ec9d97f401 | |||
| 74ec11d0fe | |||
| 2097a8dd3a | |||
| 5a8fa58e9b | |||
| 64b4d9b0b8 | |||
| 4ad72ea0d4 | |||
| dff580e991 | |||
| 392058905a | |||
| e292970da0 | |||
| 6dee8029aa | |||
| 88bc421ac1 | |||
| 9ce0fc4112 | |||
| 68f6027dac | |||
| e6022fd274 | |||
| fc2d721303 | |||
| 81fc69710b | |||
| 9e9e03fcb5 | |||
| a7d4e387e7 | |||
| dcc45cbba5 | |||
| 11d7183d7c | |||
| 6dcb807697 | |||
| 28ee277a90 | |||
| 4772ff1f3f | |||
| b879a85a16 | |||
| dd94e0ab86 | |||
| 53f91d61d1 | |||
| 5777d5066a | |||
| cec03c7f46 | |||
| 787d960250 | |||
| 48909154e8 | |||
| 3d2a2e37b9 | |||
| c6ee3c7b78 | |||
| 77557ea2bd | |||
| 81f2695095 | |||
| f26d1cd366 | |||
| a04e93ba9a | |||
| 3a90a6aca6 | |||
| c98b9c6859 | |||
| bea5f40cce | |||
| 69d486010c | |||
| 8283311536 | |||
| 5603924b25 | |||
| 6292d1730e | |||
| b42c981f39 | |||
| 4e3e7c558a | |||
| 6e0579cc0f | |||
| 494301a3cd | |||
| ee9c701c7c | |||
| a794c4660b | |||
| 5de76051a3 | |||
| e34ff55f1a | |||
| 98b90c4321 | |||
| 050a0b30e0 | |||
| 5269bc1e2c | |||
| c66c651402 | |||
| 0d71f86fc2 | |||
| 93a0074599 | |||
| cabd1ee225 | |||
| 53544a8ddc | |||
| 5ab36252cd | |||
| 7cd14dcd59 | |||
| cad3dcf473 | |||
| 8b83c6a6c5 | |||
| a5b1ff6dd8 | |||
| a9e4a97447 | |||
| be893ea040 | |||
| 1250df73df | |||
| 21dc6adcfb | |||
| fad9f96101 | |||
| d9e4945224 | |||
| a593d314e1 | |||
| 58ec1995df | |||
| 06be8dc6cc | |||
| 9b5f1a0fee | |||
| 4c02da8831 | |||
| 1d66e0f0db | |||
| db45c8e1de | |||
| 0e24910675 | |||
| 19b50efc81 | |||
| eacbe21387 | |||
| d3ee85912c | |||
| 51c63131f7 | |||
| 0b1aec8ea1 | |||
| 2904235356 | |||
| 4a2fcd11a0 | |||
| e542d2941e | |||
| d6563a7dbc | |||
| 95f07b9403 | |||
| 85bf89b4e8 | |||
| bd406e4ce1 | |||
| f172469d92 | |||
| c7763fbe48 | |||
| 79bff35307 | |||
| 7b2558d492 | |||
| f1580bfc60 | |||
| 0c32bafdd9 | |||
| 584ba8d8f0 | |||
| 59db1a9a9f | |||
| c52743df54 | |||
| c95b6fc3d2 | |||
| a970df0de1 | |||
| fcf1e095d7 | |||
| 3809150c22 | |||
| d5b9b82f47 | |||
| fa8d36f4b0 | |||
| 83ff1238ac | |||
| f248087e80 | |||
| cd8f0e32d7 | |||
| d9e448249e | |||
| 8949f640b7 | |||
| 9514e7c27c | |||
| 698daaab4c | |||
| b0a9deb35f | |||
| e5007648b6 | |||
| 5efe416248 | |||
| 22e9d5a08e | |||
| 336880a9b0 | |||
| 9addbbde4b | |||
| 6678b38ad9 | |||
| e4e0132735 | |||
| 48077bdce5 | |||
| 2fda7414f2 | |||
| cf1ffc1c97 | |||
| f0252b7791 | |||
| 6caf043848 | |||
| 07577ce836 | |||
| a88d9cf29c | |||
| 64d8e1d9ef | |||
| 65b6f1b63b | |||
| 57d47c8513 | |||
| b1e4fc4ee3 | |||
| ead660ccc9 | |||
| 296c837bde | |||
| 1e328b5644 | |||
| 6cd0785009 | |||
| 1160ba317a | |||
| 04e8cd9137 | |||
| 409d39dcc5 | |||
| c338eb860c | |||
| 0d72b08ff2 | |||
| 1366c2e6b1 | |||
| 2f7b994044 | |||
| 64c978a14f | |||
| f475828569 | |||
| 843f050195 | |||
| c24dcdfe2c | |||
| 28ddc5ccea | |||
| e3857454b7 | |||
| e6fa7ebb78 | |||
| 55341ba0d6 | |||
| e7c2605097 | |||
| b682553b27 | |||
| 47125c5d68 | |||
| c0b2f5ede3 | |||
| f1d96f60c1 | |||
| 78796fce97 | |||
| 32dd761dc4 | |||
| 144d9d547a | |||
| f7434b0810 | |||
| a24fc8a605 | |||
| e6c9a0b9ed | |||
| c6d963d635 | |||
| 399fadef3f | |||
| 9165bd44a9 | |||
| 093bf40127 | |||
| d217345a25 | |||
| 3b69fdcf8f | |||
| 513298f3be | |||
| 4c4f67525d | |||
| 39fae09f58 | |||
| 22aad9eb54 | |||
| 2450688ab8 | |||
| d73f626ae5 | |||
| 04e76a3e90 | |||
| 2e45f7b899 | |||
| 7f3961964d | |||
| 813e8a8eb3 | |||
| b2a369b479 | |||
| 0907c0fdc8 | |||
| a50b3ca1d4 | |||
| 9d45ebf641 | |||
| 961e332e71 | |||
| 8d63bc4ea9 | |||
| fa64786dcf | |||
| 3590ea3840 | |||
| ce6b64840e | |||
| f68327747a | |||
| 2df7ebbf4c | |||
| 1c63f8028a | |||
| 12f0ca2388 | |||
| a833b3f921 | |||
| ace5603daa | |||
| 0fede19fdf | |||
| 59c2db2c0f | |||
| 158ff3c97d | |||
| 700f186474 | |||
| b35fe6bc66 | |||
| 52382885b0 | |||
| 8452f0ee77 | |||
| 3cf69d0883 | |||
| 3c65f2e76a | |||
| 6ef8bee912 | |||
| 839f9d1d7e | |||
| 8f2086854d | |||
| 70a2b51314 | |||
| 5900798f5f | |||
| a81951925b | |||
| 5cccda199f | |||
| ab91170043 | |||
| b1f85151d8 | |||
| 44008f5f43 | |||
| 91e8082e00 | |||
| b743ca035a | |||
| 3392892b51 | |||
| 566f722c89 | |||
| 93725b3f55 | |||
| f6bd6425a1 | |||
| e2dabca525 | |||
| 77b5b9033e | |||
| 9a28ec8af2 | |||
| 26c56ff358 | |||
| 26c910fa68 | |||
| 0cffd50693 | |||
| 4f51496342 | |||
| 2bfdb75705 | |||
| 2ad04019a8 | |||
| 5635fe8a06 | |||
| bc56685869 | |||
| 8a7930b7c4 | |||
| 6e558c52b4 | |||
| 5bdee88d29 | |||
| 092ec28ea9 | |||
| 35d002cb3b | |||
| 90ebb30286 | |||
| 29bf3e7c92 | |||
| 6f2a3d014e | |||
| 25082c9e4d | |||
| 8f282427b7 | |||
| d06f96c3ad | |||
| 2ffacfd4b9 | |||
| 59d5fb98df | |||
| d6b3091454 | |||
| 2e798f2a06 | |||
| 36685f382d | |||
| e0f4cf206d | |||
| a314f60d38 | |||
| d180197086 | |||
| d724b929da | |||
| 53313df223 | |||
| d6427b326d | |||
| d39ab5d5a3 | |||
| 947835171c | |||
| f4f58bfedc | |||
| f9b1ae184d | |||
| d273f21505 | |||
| 041cf0933d | |||
| bdf93b5a06 | |||
| 3b65e94019 | |||
| fcc9cb0e63 | |||
| 9e44ebc46c | |||
| 2ba68c7507 | |||
| 06349d5f0e | |||
| b22eda0a0a | |||
| d0ea0ff250 | |||
| 58feb47a9d | |||
| 10087d55f7 | |||
| b6b17c5ced | |||
| 733b933a00 | |||
| 933cc9dadd | |||
| a92b9cda21 | |||
| ed3ecba7df | |||
| 2b9947223b | |||
| c57cfc7d5a | |||
| 61dcae2e97 | |||
| acbaf37e8a | |||
| 6344b58687 | |||
| 0742770dbe | |||
| 8b5342c168 | |||
| b199c8f6ed | |||
| a2706177c6 | |||
| 207cc5f7c8 | |||
| 9dbe6dc445 | |||
| b2ad83f1ba | |||
| 02c9ab3486 | |||
| 0a18126a39 | |||
| 3dc3dbbaba | |||
| 820147d04c | |||
| 529a38d2e5 | |||
| 990f93ff26 | |||
| 01904f7ca7 | |||
| a8040986d7 | |||
| 3e7d6961fc | |||
| ded9d4b18c | |||
| adb83da550 | |||
| 5a65a188be | |||
| 3b722331c9 | |||
| 4e497f0945 | |||
| bcb090a117 | |||
| e260f2c0c8 | |||
| 6a04c3dd85 | |||
| ff9ed9cb65 | |||
| eb94cf66d6 | |||
| a9b6632a15 | |||
| b9b5046e8b | |||
| b829e8303c | |||
| 8510dbe766 | |||
| e9426a2f77 | |||
| daa528630a | |||
| a15a57af34 | |||
| 7f75de1fe1 | |||
| ba79286ce6 | |||
| ed3d4941b3 | |||
| 1ee6edb43d | |||
| 5ad8140324 | |||
| 04d21b3909 | |||
| 49a46eba48 | |||
| de7c9b5c13 | |||
| 62097968d7 | |||
| cb70aecd1d | |||
| ee464ed40f | |||
| 29fbf7ec7b | |||
| dc075d4247 | |||
| 3c8bd3ffd0 | |||
| b549c9cfb2 | |||
| 701f6d1f96 | |||
| 2af0e7a3ae | |||
| fc2d1e8a1a | |||
| d53bb7b37c | |||
| 8f97c4cd33 | |||
| 354a9c63a9 | |||
| 0e5aa931f6 | |||
| 94554fe6fa | |||
| 628793d5df | |||
| 7443e025e0 | |||
| 0859efa0c7 | |||
| e20429f6a7 | |||
| 7b65ae0599 | |||
| 95bfaf4a70 | |||
| 37fdb0a1ac | |||
| ca44e683f6 | |||
| 96f65d5322 | |||
| d182b00e75 | |||
| 004d2d5155 | |||
| 156a75c0a0 | |||
| 4645e52f2a | |||
| 4084517dd7 | |||
| 1da4a9e23b | |||
| 48dca828a9 | |||
| 5c2169d138 | |||
| 7b5b1b8aa1 | |||
| 0dab6f4f33 | |||
| e14f7ac627 | |||
| 53c4949927 | |||
| dade7fd152 | |||
| c3fd5e1894 | |||
| 1de9ef55e2 | |||
| 4ee9c3da06 | |||
| 3e4a682e7b | |||
| a66cdf40e3 | |||
| 6cd37b4bd0 | |||
| c91fe325af | |||
| 848096364f | |||
| a891c0ab20 | |||
| 2f202e9993 | |||
| fad26e6e13 | |||
| 7a56cca0ee | |||
| b05b5345ed | |||
| b94d180811 | |||
| 80316602d5 | |||
| 4a0b91f737 | |||
| bd45075112 | |||
| 664bd5b324 | |||
| 7d6c60117a | |||
| fa66a33b41 | |||
| fa6ca7c7b1 | |||
| d550eba84d | |||
| 5d5fbd7fac | |||
| 9003f7f475 | |||
| 1641178875 | |||
| 03befcb0f8 | |||
| 1019a69c77 | |||
| aabd349d60 | |||
| 786c034ef6 | |||
| 435533502b | |||
| 4f74f8d575 | |||
| 5ad335cc1e | |||
| a6f6f38769 | |||
| 23edb4e2cc | |||
| 7f774c7dbd | |||
| f3d914e308 | |||
| 14da96a2a9 | |||
| f87e727b40 | |||
| 31437ce7bf | |||
| 6830296715 | |||
| 0ee046914a | |||
| 27cadcf8ce | |||
| 60c66fa3f3 | |||
| f7f3719a74 | |||
| 0642f11a1a | |||
| 5a0a17b33f | |||
| e4a429d720 | |||
| 2fda03d34e | |||
| 64396cd6e0 | |||
| 8eb26560e0 | |||
| 13e648043e | |||
| d48a2c406e | |||
| 32bb9882e2 | |||
| 080cd1b3c1 | |||
| d69480189b | |||
| 4483c0a657 | |||
| edbfe65ce1 | |||
| 7cae2987a4 | |||
| f885ed4329 | |||
| d8ea4a907f | |||
| ad18535ce7 | |||
| f978937455 | |||
| 142254c94a | |||
| 81ed14c3ee | |||
| 950d5f7950 | |||
| 23356d2d3e | |||
| 2de99e6812 | |||
| 058d4c943f | |||
| 7a3567144f | |||
| 9276abe7cc | |||
| c5077c097d | |||
| cdd9419cff | |||
| f1333aa0ee | |||
| f9096df658 | |||
| 09d140bb64 | |||
| 91001c230e | |||
| 4087eb7aaf | |||
| 37640bd420 | |||
| 7588fa3279 | |||
| 08ca20b874 | |||
| 547ef2ffbc | |||
| b4f701c084 | |||
| a47fe24d51 | |||
| 881de48183 | |||
| 61eb2cb68e | |||
| e17ffa9f3f | |||
| b50e31d42d | |||
| 622114aace | |||
| 2c8321d9b1 | |||
| 985a291936 | |||
| 1490ef6c5e | |||
| b45a04349e | |||
| 685dcde9c3 | |||
| d18d64f0eb | |||
| c3110978c7 | |||
| 03d69a40a0 | |||
| a398e63650 | |||
| 5acce59cd1 | |||
| 9899459652 | |||
| 1c4624104a | |||
| 709def73de | |||
| f0fd21ec86 | |||
| 7a6313f716 | |||
| 7dc22c2051 | |||
| b3c020d810 | |||
| ba19811491 | |||
| c956f88f43 | |||
| 8e65ceca52 | |||
| 535a47a8f2 | |||
| a9789b1221 | |||
| 87dd7d3da0 | |||
| 82ad8815f2 | |||
| 5089d01c06 | |||
| f8f5f27cb0 | |||
| 4c2e87944c | |||
| b6fa1079b6 | |||
| f5ceac3ec1 | |||
| 1966f141dc | |||
| f8d0229580 | |||
| e36610cd49 | |||
| 0c27dd360c | |||
|
|
e7c28dde45 | ||
|
|
41cc7889af | ||
|
|
f8899caf78 | ||
|
|
b47edf477b | ||
| 54a82177f2 | |||
| f3684f197c | |||
| 5f693d0020 | |||
| 14a659df5b | |||
| 46724e763c | |||
| 33c5d25271 | |||
| 99006a8900 | |||
| a42b3e785d | |||
| c39f20e371 | |||
| dc324a2d8b | |||
| 2d4d3773b7 | |||
| 54e12aa8c1 | |||
| 47d4e5015e | |||
| e60030016e | |||
| 6645dd77f6 | |||
| f1f8a9e837 | |||
| 47214c5a93 | |||
| a1b05d6f8a | |||
| 8ca00e2715 | |||
| 7cbe7932f1 | |||
| 97d73b36c4 | |||
| 679742ab45 | |||
| 9b1680cfc8 | |||
| dd3ca7c9a4 | |||
| 4a67df78b3 | |||
| dde4eac238 | |||
| f9987ac705 | |||
| 6705352a10 | |||
| 599e86e1a9 | |||
| 4826c5beb6 | |||
| 1284e2ec60 | |||
| 7f6e182084 | |||
| a565952e0c | |||
| f64bdfbedd | |||
| e6a8aa74b4 | |||
| b1c45f939b | |||
| 3bfec1450f | |||
| d5224c0c7f | |||
| 4e37bfb8dc | |||
| 45ae3523b9 | |||
| 1151680f65 | |||
| 1aefb8163b | |||
| e935822058 | |||
| 49b23b1788 | |||
| bd2def6d46 | |||
| 10fcd43274 | |||
| 126c6e6f45 | |||
| 10ce90a460 | |||
| c3cd2c0b8b | |||
| 8b74b2efb6 | |||
| eecf949f86 | |||
| 2b951b2814 | |||
| a1293abaf6 | |||
| 5781c6ddda | |||
| 42fc48bb27 | |||
| 0f908a1460 | |||
| 1febc6915e | |||
| a99e0649dd | |||
| d28f17120b | |||
| 44d099ad9e | |||
| 5c866c2eb7 | |||
| 216cece298 | |||
| f16da3d3a8 | |||
| f12b7aa532 | |||
| 8ec254f59c | |||
| 33fd621ec8 | |||
| 89b8364fe5 | |||
| 52038a7585 | |||
| 885ab5e3d7 | |||
| 7843ae7c29 | |||
| e2d1e01708 | |||
| e8cafed885 | |||
| 62b7efad89 | |||
| 47ddf2fd28 | |||
| 31b689d5fe | |||
| 5ef03e6dbe | |||
| 38bb3538a3 | |||
| 8c77e53669 | |||
| 44aac27362 | |||
| 0f4048072d | |||
| b6f0c41d5d | |||
| 3259cd6f37 | |||
| 418162a9e0 | |||
| de022ea46b | |||
| a50214eafc | |||
| be2ee6274a | |||
| 1fbe3dbc95 | |||
| f8a13c4bff | |||
| c9d77c5eec | |||
| 3457eba0a2 | |||
| 738d19edfa | |||
| 23d397e5d4 | |||
| 10bfb6fd54 | |||
| 0ff6377bd6 | |||
| 8d92151ad3 | |||
| 3f74860c28 | |||
| f12af0f92f | |||
| 86a5af321d | |||
| 4a1e4f980d | |||
| bf6c021d8b | |||
| 0abc90d9cd | |||
| e2cabee7dd | |||
| 1f2fd56d89 | |||
| 785a256258 | |||
| 26c3a919c6 | |||
| 280298cc0a | |||
| f5b4c58367 | |||
| 0a3f3d99d7 | |||
| 21405024f7 | |||
| 61110282d5 | |||
| 5765f9b5d7 | |||
| f70c55dcf2 | |||
| b2212a6608 | |||
| 5e5a7b3803 | |||
| b1272fc052 | |||
| c2298c51b1 | |||
| 40e98020bb | |||
| 30331572e5 | |||
| ef367a7d10 |
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.idea
|
||||||
|
infra/terraform/.terraform
|
||||||
|
infra/terraform/.terraform.lock.hcl
|
||||||
34
.gitlab/.gitlab-ci.yml
Normal file
34
.gitlab/.gitlab-ci.yml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
stages:
|
||||||
|
- triggers
|
||||||
|
|
||||||
|
build_dmz:
|
||||||
|
stage: triggers
|
||||||
|
trigger:
|
||||||
|
include: infra/.gitlab/.gitlab-ci.yml
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
|
||||||
|
build_infra:
|
||||||
|
stage: triggers
|
||||||
|
trigger:
|
||||||
|
include: infra/.gitlab/.gitlab-ci.yml
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "infra/terraform/*.tf"
|
||||||
|
|
||||||
|
build_dev:
|
||||||
|
stage: triggers
|
||||||
|
trigger:
|
||||||
|
include: dev/.gitlab/.gitlab-ci.yml
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
|
||||||
|
build_prd:
|
||||||
|
stage: triggers
|
||||||
|
trigger:
|
||||||
|
include: prd/.gitlab/.gitlab-ci.yml
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "prd/terraform/*.tf"
|
||||||
4
Untitled
Normal file
4
Untitled
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
VAULT_HELM_SECRET_NAME=$(kubectl get secrets -n vault --output=json | jq -r '.items[].metadata | select(.name|startswith("vault-token-")).name')
|
||||||
|
TOKEN_REVIEW_JWT=$(kubectl get secret $VAULT_HELM_SECRET_NAME -n vault --output='go-template={{ .data.token }}' | base64 --decode)
|
||||||
|
KUBE_CA_CERT=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode)
|
||||||
|
KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
|
||||||
5
ansible/base.yaml
Normal file
5
ansible/base.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
- hosts: all
|
||||||
|
gather_facts: yes
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- base
|
||||||
2
ansible/newcluster.yaml
Normal file
2
ansible/newcluster.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
argocd login --insecure
|
||||||
|
argocd cluster add default --name prd --yes --kubeconfig ~/Documents/config-prd
|
||||||
1
ansible/roles/base/files/01proxy
Normal file
1
ansible/roles/base/files/01proxy
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Acquire::http::Proxy "http://192.168.21.200:3142";
|
||||||
4
ansible/roles/base/files/10periodic
Normal file
4
ansible/roles/base/files/10periodic
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
APT::Periodic::Update-Package-Lists "1";
|
||||||
|
APT::Periodic::Download-Upgradeable-Packages "1";
|
||||||
|
APT::Periodic::AutocleanInterval "7";
|
||||||
|
APT::Periodic::Unattended-Upgrade "1";
|
||||||
2
ansible/roles/base/files/authorized_keys_user
Normal file
2
ansible/roles/base/files/authorized_keys_user
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIGilcndatMrXg06VxtNKuIo3scoyyXbYX8Z7cOjeA102AAAABHNzaDo= desktop-arch-09-08-2025-yubikey
|
||||||
|
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAINsbNSZ5Wr+50Ahz+IeZxt6F7gZ6wm1J8uKXQLbdbKFaAAAABHNzaDo= desktop-arch-09-08-2025-yubikeyNano
|
||||||
4
ansible/roles/base/files/issue
Normal file
4
ansible/roles/base/files/issue
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Use of this system is restricted to authorized users only, and all use is subjected to an acceptable use policy.
|
||||||
|
|
||||||
|
IF YOU ARE NOT AUTHORIZED TO USE THIS SYSTEM, DISCONNECT NOW.
|
||||||
|
|
||||||
4
ansible/roles/base/files/motd
Normal file
4
ansible/roles/base/files/motd
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
THIS SYSTEM IS FOR AUTHORIZED USE ONLY
|
||||||
|
|
||||||
|
All activities are logged and monitored.
|
||||||
|
|
||||||
95
ansible/roles/base/files/sshd_config_secured
Normal file
95
ansible/roles/base/files/sshd_config_secured
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
# Package generated configuration file
|
||||||
|
# See the sshd_config(5) manpage for details
|
||||||
|
|
||||||
|
# What ports, IPs and protocols we listen for
|
||||||
|
Port 22
|
||||||
|
# Use these options to restrict which interfaces/protocols sshd will bind to
|
||||||
|
#ListenAddress ::
|
||||||
|
#ListenAddress 0.0.0.0
|
||||||
|
Protocol 2
|
||||||
|
# HostKeys for protocol version 2
|
||||||
|
HostKey /etc/ssh/ssh_host_rsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_dsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_ecdsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_ed25519_key
|
||||||
|
#Privilege Separation is turned on for security
|
||||||
|
UsePrivilegeSeparation yes
|
||||||
|
|
||||||
|
# Lifetime and size of ephemeral version 1 server key
|
||||||
|
KeyRegenerationInterval 3600
|
||||||
|
ServerKeyBits 1024
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
SyslogFacility AUTH
|
||||||
|
LogLevel INFO
|
||||||
|
|
||||||
|
# Authentication:
|
||||||
|
LoginGraceTime 120
|
||||||
|
PermitRootLogin no
|
||||||
|
StrictModes yes
|
||||||
|
|
||||||
|
RSAAuthentication yes
|
||||||
|
PubkeyAuthentication yes
|
||||||
|
#AuthorizedKeysFile %h/.ssh/authorized_keys
|
||||||
|
|
||||||
|
# Don't read the user's ~/.rhosts and ~/.shosts files
|
||||||
|
IgnoreRhosts yes
|
||||||
|
# For this to work you will also need host keys in /etc/ssh_known_hosts
|
||||||
|
RhostsRSAAuthentication no
|
||||||
|
# similar for protocol version 2
|
||||||
|
HostbasedAuthentication no
|
||||||
|
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
|
||||||
|
#IgnoreUserKnownHosts yes
|
||||||
|
|
||||||
|
# To enable empty passwords, change to yes (NOT RECOMMENDED)
|
||||||
|
PermitEmptyPasswords no
|
||||||
|
|
||||||
|
# Change to yes to enable challenge-response passwords (beware issues with
|
||||||
|
# some PAM modules and threads)
|
||||||
|
ChallengeResponseAuthentication no
|
||||||
|
|
||||||
|
# Change to no to disable tunnelled clear text passwords
|
||||||
|
PasswordAuthentication no
|
||||||
|
|
||||||
|
# Kerberos options
|
||||||
|
#KerberosAuthentication no
|
||||||
|
#KerberosGetAFSToken no
|
||||||
|
#KerberosOrLocalPasswd yes
|
||||||
|
#KerberosTicketCleanup yes
|
||||||
|
|
||||||
|
# GSSAPI options
|
||||||
|
#GSSAPIAuthentication no
|
||||||
|
#GSSAPICleanupCredentials yes
|
||||||
|
|
||||||
|
X11Forwarding no
|
||||||
|
X11DisplayOffset 10
|
||||||
|
PrintMotd no
|
||||||
|
PrintLastLog yes
|
||||||
|
TCPKeepAlive yes
|
||||||
|
#UseLogin no
|
||||||
|
|
||||||
|
#MaxStartups 10:30:60
|
||||||
|
#Banner /etc/issue.net
|
||||||
|
|
||||||
|
# Allow client to pass locale environment variables
|
||||||
|
AcceptEnv LANG LC_*
|
||||||
|
|
||||||
|
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||||
|
|
||||||
|
# Set this to 'yes' to enable PAM authentication, account processing,
|
||||||
|
# and session processing. If this is enabled, PAM authentication will
|
||||||
|
# be allowed through the ChallengeResponseAuthentication and
|
||||||
|
# PasswordAuthentication. Depending on your PAM configuration,
|
||||||
|
# PAM authentication via ChallengeResponseAuthentication may bypass
|
||||||
|
# the setting of "PermitRootLogin without-password".
|
||||||
|
# If you just want the PAM account and session checks to run without
|
||||||
|
# PAM authentication, then enable this but set PasswordAuthentication
|
||||||
|
# and ChallengeResponseAuthentication to 'no'.
|
||||||
|
UsePAM yes
|
||||||
|
|
||||||
|
ClientAliveInterval 300
|
||||||
|
|
||||||
|
#enable remote powershell
|
||||||
|
#Subsystem powershell /usr/bin/pwsh -sshs -NoLogo
|
||||||
|
|
||||||
|
|
||||||
155
ansible/roles/base/tasks/main.yaml
Normal file
155
ansible/roles/base/tasks/main.yaml
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
- name: Copy apt proxy
|
||||||
|
copy:
|
||||||
|
src: files/01proxy
|
||||||
|
dest: /etc/apt/apt.conf.d/01proxy
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
force: yes
|
||||||
|
when:
|
||||||
|
- ansible_os_family == "Debian"
|
||||||
|
- inventory_hostname not in hosts_deny
|
||||||
|
|
||||||
|
- name: Update packages
|
||||||
|
apt:
|
||||||
|
name: '*'
|
||||||
|
state: latest
|
||||||
|
update_cache: yes
|
||||||
|
only_upgrade: yes
|
||||||
|
retries: 300
|
||||||
|
delay: 10
|
||||||
|
|
||||||
|
- name: Remove packages not needed anymore
|
||||||
|
apt:
|
||||||
|
autoremove: yes
|
||||||
|
retries: 300
|
||||||
|
delay: 10
|
||||||
|
|
||||||
|
- name: Install required packages Debian
|
||||||
|
apt:
|
||||||
|
state: latest
|
||||||
|
pkg: "{{ item }}"
|
||||||
|
with_items: "{{ required_packages }}"
|
||||||
|
retries: 300
|
||||||
|
delay: 10
|
||||||
|
|
||||||
|
- name: Create user account
|
||||||
|
user:
|
||||||
|
name: "user"
|
||||||
|
shell: /bin/bash
|
||||||
|
state: present
|
||||||
|
createhome: yes
|
||||||
|
|
||||||
|
- name: ensure ssh folder exists for user
|
||||||
|
file:
|
||||||
|
path: /home/user/.ssh
|
||||||
|
owner: user
|
||||||
|
group: user
|
||||||
|
mode: "0700"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Deploy SSH Key (user)
|
||||||
|
copy:
|
||||||
|
dest: /home/user/.ssh/authorized_keys
|
||||||
|
src: files/authorized_keys_user
|
||||||
|
owner: user
|
||||||
|
group: user
|
||||||
|
force: true
|
||||||
|
|
||||||
|
- name: Remove Root SSH Configuration
|
||||||
|
file:
|
||||||
|
path: /root/.ssh
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Copy Secured SSHD Configuration
|
||||||
|
copy:
|
||||||
|
src: files/sshd_config_secured
|
||||||
|
dest: /etc/ssh/sshd_config
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
|
- name: Copy Secured SSHD Configuration
|
||||||
|
copy:
|
||||||
|
src: files/sshd_config_secured_redhat
|
||||||
|
dest: /etc/ssh/sshd_config
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when: ansible_os_family == "RedHat"
|
||||||
|
|
||||||
|
- name: Restart SSHD
|
||||||
|
systemd:
|
||||||
|
name: sshd
|
||||||
|
daemon_reload: yes
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy unattended-upgrades file
|
||||||
|
copy:
|
||||||
|
src: files/10periodic
|
||||||
|
dest: /etc/apt/apt.conf.d/10periodic
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
force: yes
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
|
- name: Remove undesirable packages
|
||||||
|
package:
|
||||||
|
name: "{{ unnecessary_software }}"
|
||||||
|
state: absent
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
|
- name: Stop and disable unnecessary services
|
||||||
|
service:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: stopped
|
||||||
|
enabled: no
|
||||||
|
with_items: "{{ unnecessary_services }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- name: Set a message of the day
|
||||||
|
copy:
|
||||||
|
dest: /etc/motd
|
||||||
|
src: files/motd
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Set a login banner
|
||||||
|
copy:
|
||||||
|
dest: "{{ item }}"
|
||||||
|
src: files/issue
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
with_items:
|
||||||
|
- /etc/issue
|
||||||
|
- /etc/issue.net
|
||||||
|
|
||||||
|
- name: set timezone
|
||||||
|
shell: timedatectl set-timezone America/Chicago
|
||||||
|
|
||||||
|
- name: Enable cockpit
|
||||||
|
systemd:
|
||||||
|
name: cockpit
|
||||||
|
daemon_reload: yes
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: change password
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: "user"
|
||||||
|
state: present
|
||||||
|
password: "{{ lookup('ansible.builtin.env', 'USER_PASSWORD') | password_hash('sha512') }}"
|
||||||
|
|
||||||
|
- name: add user to sudoers
|
||||||
|
community.general.sudoers:
|
||||||
|
name: user
|
||||||
|
state: present
|
||||||
|
user: user
|
||||||
|
commands: ALL
|
||||||
17
ansible/roles/base/vars/main.yaml
Normal file
17
ansible/roles/base/vars/main.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
required_packages:
|
||||||
|
- ufw
|
||||||
|
- qemu-guest-agent
|
||||||
|
- fail2ban
|
||||||
|
- unattended-upgrades
|
||||||
|
- cockpit
|
||||||
|
- nfs-common
|
||||||
|
- open-iscsi
|
||||||
|
|
||||||
|
unnecessary_services:
|
||||||
|
- postfix
|
||||||
|
- telnet
|
||||||
|
|
||||||
|
unnecessary_software:
|
||||||
|
- tcpdump
|
||||||
|
- nmap-ncat
|
||||||
|
- wpa_supplicant
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: gitlab-runner
|
|
||||||
namespace: argocd
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
|
||||||
targetRevision: main
|
|
||||||
path: gitlab-runner
|
|
||||||
destination:
|
|
||||||
namespace: gitlab-runner
|
|
||||||
name: in-cluster
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
||||||
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: kubeclarity
|
|
||||||
namespace: argocd
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
|
||||||
targetRevision: main
|
|
||||||
path: kubeclarity
|
|
||||||
destination:
|
|
||||||
namespace: kubeclarity
|
|
||||||
name: in-cluster
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: open-webui
|
|
||||||
namespace: argocd
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
|
||||||
targetRevision: main
|
|
||||||
path: open-webui
|
|
||||||
destination:
|
|
||||||
namespace: open-webui
|
|
||||||
name: in-cluster
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
syncOptions:
|
|
||||||
- CreateNamespace=true
|
|
||||||
95
dev/.gitlab/.gitlab-ci.yml
Normal file
95
dev/.gitlab/.gitlab-ci.yml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
stages:
|
||||||
|
- plan
|
||||||
|
- apply
|
||||||
|
- destroy
|
||||||
|
|
||||||
|
variables:
|
||||||
|
WORKDIR: $CI_PROJECT_DIR/dev/terraform
|
||||||
|
GITLAB_TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/dev
|
||||||
|
|
||||||
|
image:
|
||||||
|
name: registry.durp.info/opentofu/opentofu:latest
|
||||||
|
entrypoint: [""]
|
||||||
|
|
||||||
|
.tf-init:
|
||||||
|
before_script:
|
||||||
|
- cd $WORKDIR
|
||||||
|
- tofu init
|
||||||
|
-reconfigure
|
||||||
|
-backend-config="address=${GITLAB_TF_ADDRESS}"
|
||||||
|
-backend-config="lock_address=${GITLAB_TF_ADDRESS}/lock"
|
||||||
|
-backend-config="unlock_address=${GITLAB_TF_ADDRESS}/lock"
|
||||||
|
-backend-config="username=gitlab-ci-token"
|
||||||
|
-backend-config="password=${CI_JOB_TOKEN}"
|
||||||
|
-backend-config="lock_method=POST"
|
||||||
|
-backend-config="unlock_method=DELETE"
|
||||||
|
-backend-config="retry_wait_min=5"
|
||||||
|
|
||||||
|
format:
|
||||||
|
stage: .pre
|
||||||
|
allow_failure: false
|
||||||
|
script:
|
||||||
|
- cd $WORKDIR
|
||||||
|
- tofu fmt -diff -check -write=false
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
|
||||||
|
validate:
|
||||||
|
stage: .pre
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu validate
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
|
||||||
|
plan-dev-infrastructure:
|
||||||
|
stage: plan
|
||||||
|
variables:
|
||||||
|
PLAN: plan.tfplan
|
||||||
|
JSON_PLAN_FILE: tfplan.json
|
||||||
|
ENVIRONMENT_NAME: dev
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- apk add --update curl jq
|
||||||
|
- alias convert_report="jq -r '([.resource_changes[].change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
|
||||||
|
- tofu plan -out=$PLAN $ARGUMENTS
|
||||||
|
- tofu show --json $PLAN | jq -r '([.resource_changes[].change.actions?]|flatten)|{"create":(map(select(.=="create"))|length),"update":(map(select(.=="update"))|length),"delete":(map(select(.=="delete"))|length)}' > $JSON_PLAN_FILE
|
||||||
|
artifacts:
|
||||||
|
reports:
|
||||||
|
terraform: $WORKDIR/$JSON_PLAN_FILE
|
||||||
|
needs: ["validate","format"]
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
|
||||||
|
apply-dev-infrastructure:
|
||||||
|
stage: apply
|
||||||
|
variables:
|
||||||
|
ENVIRONMENT_NAME: dev
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu apply -auto-approve $ARGUMENTS
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
when: manual
|
||||||
|
needs: ["plan-dev-infrastructure"]
|
||||||
|
|
||||||
|
destroy-dev-infrastructure:
|
||||||
|
stage: destroy
|
||||||
|
variables:
|
||||||
|
ENVIRONMENT_NAME: dev
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu destroy -auto-approve $ARGUMENTS
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dev/terraform/*.tf"
|
||||||
|
when: manual
|
||||||
|
needs: ["plan-dev-infrastructure"]
|
||||||
@@ -8,4 +8,4 @@ appVersion: 0.0.1
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: cert-manager
|
- name: cert-manager
|
||||||
repository: https://charts.jetstack.io
|
repository: https://charts.jetstack.io
|
||||||
version: 1.*.*
|
version: v1.17.2
|
||||||
16
dev/cert-manager/templates/issuer.yaml
Normal file
16
dev/cert-manager/templates/issuer.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: issuer
|
||||||
|
secrets:
|
||||||
|
- name: issuer-token-lmzpj
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: issuer-token-lmzpj
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/service-account.name: issuer
|
||||||
|
type: kubernetes.io/service-account-token
|
||||||
35
dev/cert-manager/templates/letsencrypt.yaml
Normal file
35
dev/cert-manager/templates/letsencrypt.yaml
Normal file
File diff suppressed because one or more lines are too long
22
dev/cert-manager/templates/secretvault.yaml
Normal file
22
dev/cert-manager/templates/secretvault.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
data:
|
||||||
|
- secretKey: cloudflare-api-token-secret
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cert-manager
|
||||||
|
property: cloudflare-api-token-secret
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
26
dev/cert-manager/values.yaml
Normal file
26
dev/cert-manager/values.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
cert-manager:
|
||||||
|
crds:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
registry: registry.internal.durp.info
|
||||||
|
repository: jetstack/cert-manager-controller
|
||||||
|
pullPolicy: Always
|
||||||
|
replicaCount: 3
|
||||||
|
extraArgs:
|
||||||
|
- --dns01-recursive-nameservers=1.1.1.1:53,1.0.0.1:53
|
||||||
|
- --dns01-recursive-nameservers-only
|
||||||
|
podDnsPolicy: None
|
||||||
|
podDnsConfig:
|
||||||
|
nameservers:
|
||||||
|
- "1.1.1.1"
|
||||||
|
- "1.0.0.1"
|
||||||
|
webhook:
|
||||||
|
image:
|
||||||
|
registry: registry.internal.durp.info
|
||||||
|
repository: jetstack/cert-manager-webhook
|
||||||
|
pullPolicy: Always
|
||||||
|
cainjector:
|
||||||
|
image:
|
||||||
|
registry: registry.internal.durp.info
|
||||||
|
repository: jetstack/cert-manager-cainjector
|
||||||
|
pullPolicy: Always
|
||||||
@@ -9,4 +9,4 @@ appVersion: 0.0.1
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: external-dns
|
- name: external-dns
|
||||||
repository: https://charts.bitnami.com/bitnami
|
repository: https://charts.bitnami.com/bitnami
|
||||||
version: 6.20.3
|
version: 8.9.2
|
||||||
30
dev/external-dns/templates/secrets.yaml
Normal file
30
dev/external-dns/templates/secrets.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: external-dns-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: external-dns
|
||||||
|
data:
|
||||||
|
- secretKey: cloudflare_api_email
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_email
|
||||||
|
- secretKey: cloudflare_api_key
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_key
|
||||||
|
- secretKey: cloudflare_api_token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_token
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
18
dev/external-dns/values.yaml
Normal file
18
dev/external-dns/values.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
external-dns:
|
||||||
|
global:
|
||||||
|
imageRegistry: "registry.durp.info"
|
||||||
|
|
||||||
|
image:
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
txtPrefix: "dmz-"
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- service
|
||||||
|
|
||||||
|
provider: cloudflare
|
||||||
|
cloudflare:
|
||||||
|
secretName : "external-dns"
|
||||||
|
proxied: false
|
||||||
|
|
||||||
|
policy: sync
|
||||||
11
dev/external-secrets/Chart.yaml
Normal file
11
dev/external-secrets/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: external-secrets
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: external-secrets
|
||||||
|
repository: https://charts.external-secrets.io
|
||||||
|
version: 0.17.0
|
||||||
81
dev/external-secrets/templates/ca.yaml
Normal file
81
dev/external-secrets/templates/ca.yaml
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
vault.pem: |
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEszCCA5ugAwIBAgIUZEzzxqEuYiKHkL1df+Cb22NRRJMwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzIyMzQ0MloXDTM1MDEy
|
||||||
|
MTExMTU1NVowIDEeMBwGA1UEAxMVdmF1bHQuaW5mcmEuZHVycC5pbmZvMIIBIjAN
|
||||||
|
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkZM0ue4bMcmmATs+kGYSpR2hLUzq
|
||||||
|
scGIwCtqmaKCMbd1xhmgjnIR3zvSRptLR2GVGvc1ti6qby0jXYvcqbxkHvay00zW
|
||||||
|
2zYN+M2m4lXpuWzg1t6NEoO6XGAsGj2v0vcVktPPU9uj0rGUVGWWfsvjoXqQFg5I
|
||||||
|
jdxsxK9SvMvw2XtE3FgKxpzCyw94InIHlcPwFTO+3ZdKStZlMbUDIkmszLBrWFcr
|
||||||
|
XOsPDfLxqMy0Ck//LKIt8djh3254FHB1GG5+kI+JSW1o+tUcL2NymvIINwm/2acS
|
||||||
|
1uTm+j9W7iEXav0pJNmm+/dzSskc3Y0ftM0h2HCXgitBIaEZnUVneNHOLwIDAQAB
|
||||||
|
o4IB7zCCAeswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||||
|
BBYEFCaQ2q7j7LyBGETEZ5qaJAdlISKCMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2
|
||||||
|
dfBMWVYeWrQ2MIH0BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6
|
||||||
|
Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFo
|
||||||
|
dHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3Nw
|
||||||
|
MDEGCCsGAQUFBzAChiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtp
|
||||||
|
L2NhMDsGCCsGAQUFBzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVy
|
||||||
|
cC5pbmZvL3YxL3BraS9jYTAgBgNVHREEGTAXghV2YXVsdC5pbmZyYS5kdXJwLmlu
|
||||||
|
Zm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAx
|
||||||
|
L3YxL3BraS9jcmwwNqA0oDKGMGh0dHBzOi8vcm9vdC12YXVsdC5pbnRlcm5hbC5k
|
||||||
|
dXJwLmluZm8vdjEvcGtpL2NybDANBgkqhkiG9w0BAQsFAAOCAQEAuJ+lplY/+A5L
|
||||||
|
5LzkljbKDTy3U6PLv1LtxqVCOFGiJXBnXMjtVW07bBEUadzFRNW8GHQ3w5QzOG6k
|
||||||
|
/vE/TrrJho7l05J/uc+BUrPSNjefLmQV6hn4jrP86PR0vzRfbSqKKBIID9M7+zi6
|
||||||
|
GFvHlVkSHsQyMQp7JOoax9KVzW2Y+OIgw7Lgw2tP122WCt2SIF0QenoZHsoW0guj
|
||||||
|
tzTJRmJDjn6XeJ7L3FPkf37H6ub0Jg3zBGr6eorEFfYZNN5CXezjqMFBpRdq4UIo
|
||||||
|
1M3A7o3uyZFcFsp/vGDcMBkwaCsBV9idu/HwkvGaTUNI285ilBORPD0bMZnACq/9
|
||||||
|
+Q/cdsO5lg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEmzCCA4OgAwIBAgIUQwCAs82sgSuiaVbjANHScO2DSfAwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMjEyNVoXDTM1MDEy
|
||||||
|
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEAn9fjGRqqFsqguz56X6cXZwEMtD9wElwSFCb4Fc8YTzlH
|
||||||
|
4fV13QwXKESLE/Q+7bw4y4FJQ8BiGNbxxbQOOgWhfGGlQyFa1lfhJtYLfqRN5C2/
|
||||||
|
S7nr0YxDB9duc4OAExVL6Pr4/Koc+vDZY03l7RzwnF2AOM9DjFTASw01TphCQjRk
|
||||||
|
U+upiN2TUhUPejV/gMR+zXM6pn98UBKG1dNubS0HzAMwAEXAPm141NDyWUCPT9+3
|
||||||
|
6P03Ka8mUTx3X49OCtvJEGEQbtlnTFQaOSkP1yLW+XRMHw3sQaV2PWXu5fInbEpZ
|
||||||
|
+SuzmgLOXtmQNmHLav9q1qeTVkpBGPWvfh2Vh1JJhQIDAQABo4IB4zCCAd8wDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJaP17f1Zw0V
|
||||||
|
55Ks9Uf0USVWl0BPMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2dfBMWVYeWrQ2MIH0
|
||||||
|
BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6Ly8xOTIuMTY4LjIw
|
||||||
|
LjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFodHRwczovL3Jvb3Qt
|
||||||
|
dmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3NwMDEGCCsGAQUFBzAC
|
||||||
|
hiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtpL2NhMDsGCCsGAQUF
|
||||||
|
BzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3Br
|
||||||
|
aS9jYTAUBgNVHREEDTALgglkdXJwLmluZm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0
|
||||||
|
cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9jcmwwNqA0oDKGMGh0dHBz
|
||||||
|
Oi8vcm9vdC12YXVsdC5pbnRlcm5hbC5kdXJwLmluZm8vdjEvcGtpL2NybDANBgkq
|
||||||
|
hkiG9w0BAQsFAAOCAQEAiqAZ4zNIEkCWcvpDRq0VyJuk59sVtJr5X4FscHQ179nE
|
||||||
|
QbbvMe+EBDFS6XQml1Elj8jiPa/D5O9Oc6Iisnm5+weZKwApz/lQ+XVkWLCoEplB
|
||||||
|
ZZ9fcWVCbMLt0xlt8qn5z/mYKfbCT7ZCqDO+prQZt+ADJcQbiknfroAAqEbNKxwN
|
||||||
|
Y9uUyOWNF3SxJEch4w2dtX+IEVmxeZnhMy8OuP0SQKl8aW40ugiG0ZD5yTBBfOD9
|
||||||
|
zsrGSU/iSatn0b7bevBhaL96hz1/rNR1cL+4/albX2hrr8Rv3/SB2DLtNQlQW0ls
|
||||||
|
AfhXAqP5zL+Ytgf1Of/pVdgnhxrYUY7RKCSGY5Hagw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDLzCCAhegAwIBAgIUNHdvOzam2HPVdwXpMHUy4wl8ZRYwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMTUyNVoXDTM1MDEy
|
||||||
|
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEA8XDTVEtRI3+k4yuvqVqfIiLRQJcXbmhfVtAeYk+5j9Ox
|
||||||
|
p1w9YHdnPLqLFrD1PzadjqYeAp/fwlEFfs6lqwoTS8S9vhaFqcgB57nVMb77dTBb
|
||||||
|
/08XHXOU6FPRjdFKm5QMpS7tn1XacPMy/o0bKqRREQeiuFDGVRyuF5PUgvWc1dvJ
|
||||||
|
l27JvvgYktgjfpNS4DlCxg4lGXT5abvaKf2hnr65egaIo/yRWN9wnvAzRiY7oci7
|
||||||
|
GA1oKz87Yc1tfL2gcynrwccOOCF/eUKesJR1I6GXNkN/a1fcr+Ld9Z9NhHBtO+vE
|
||||||
|
N8DsZY+kG7DE3M4BCCTFUzllcYHjaW4HaF9vZW+PYwIDAQABo3kwdzAOBgNVHQ8B
|
||||||
|
Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7WMLIaSkU75CJHZ1
|
||||||
|
8ExZVh5atDYwHwYDVR0jBBgwFoAU7WMLIaSkU75CJHZ18ExZVh5atDYwFAYDVR0R
|
||||||
|
BA0wC4IJZHVycC5pbmZvMA0GCSqGSIb3DQEBCwUAA4IBAQAS/qUI/1Yv07xUTK5k
|
||||||
|
r93kC7GSPpmpkXIsfjChAl93sebN143fu70NUP74jjCc0Wkb8hRofGg10E+/24r1
|
||||||
|
AI0KsLhzKzfIASxUVQAn8RTptLruaaPLboSA4MUZ8IB5y8Vy8E3/KtD0gD80j64Y
|
||||||
|
rm9XGHA0HTJHbPUTb/Rux2g0E7WtiyWSWH8mqzbegU8IrkM3eVT4+ylBE7YkfWDD
|
||||||
|
dw44sB71tfmDKpzWg6XQ6YMh0YfnyG1fYCj9LhuecNY9Uuo6cjDaAvkzMewWwqDx
|
||||||
|
Q2Ekas98Di6itCP8vET+gBDjeCc+XR6Hx6vzWmxlZhwDuxEKL1a2/DabUxJyMNzv
|
||||||
|
55Fn
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: ca-pemstore
|
||||||
94
dev/external-secrets/values.yaml
Normal file
94
dev/external-secrets/values.yaml
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
external-secrets:
|
||||||
|
replicaCount: 3
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
leaderElect: true
|
||||||
|
|
||||||
|
installCRDs: true
|
||||||
|
crds:
|
||||||
|
createClusterExternalSecret: true
|
||||||
|
createClusterSecretStore: true
|
||||||
|
createClusterGenerator: true
|
||||||
|
createPushSecret: true
|
||||||
|
conversion:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
limits:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
|
||||||
|
webhook:
|
||||||
|
create: false
|
||||||
|
failurePolicy: Ignore
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
limits:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
|
||||||
|
certController:
|
||||||
|
create: false
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
limits:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
12
dev/metallb-system/Chart.yaml
Normal file
12
dev/metallb-system/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: metallb-system
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: metallb
|
||||||
|
repository: https://metallb.github.io/metallb
|
||||||
|
version: 0.15.2
|
||||||
17
dev/metallb-system/templates/config.yaml
Normal file
17
dev/metallb-system/templates/config.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: metallb.io/v1beta1
|
||||||
|
kind: IPAddressPool
|
||||||
|
metadata:
|
||||||
|
name: cheap
|
||||||
|
spec:
|
||||||
|
addresses:
|
||||||
|
- 192.168.10.130-192.168.10.140
|
||||||
|
---
|
||||||
|
apiVersion: metallb.io/v1beta1
|
||||||
|
kind: L2Advertisement
|
||||||
|
metadata:
|
||||||
|
name: pool
|
||||||
|
namespace: metallb-system
|
||||||
|
spec:
|
||||||
|
ipAddressPools:
|
||||||
|
- cheap
|
||||||
|
|
||||||
115
dev/terraform/k3s.tf
Normal file
115
dev/terraform/k3s.tf
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
resource "proxmox_vm_qemu" "k3smaster" {
|
||||||
|
count = local.k3smaster.count
|
||||||
|
ciuser = "administrator"
|
||||||
|
vmid = "${local.vlan}${local.k3smaster.ip[count.index]}"
|
||||||
|
name = local.k3smaster.name[count.index]
|
||||||
|
target_node = local.k3smaster.node[count.index]
|
||||||
|
clone = local.template
|
||||||
|
tags = local.k3smaster.tags
|
||||||
|
qemu_os = "l26"
|
||||||
|
full_clone = true
|
||||||
|
os_type = "cloud-init"
|
||||||
|
agent = 1
|
||||||
|
cores = local.k3smaster.cores
|
||||||
|
sockets = 1
|
||||||
|
cpu_type = "host"
|
||||||
|
memory = local.k3smaster.memory
|
||||||
|
scsihw = "virtio-scsi-pci"
|
||||||
|
#bootdisk = "scsi0"
|
||||||
|
boot = "order=virtio0"
|
||||||
|
onboot = true
|
||||||
|
sshkeys = local.sshkeys
|
||||||
|
vga {
|
||||||
|
type = "serial0"
|
||||||
|
}
|
||||||
|
serial {
|
||||||
|
id = 0
|
||||||
|
type = "socket"
|
||||||
|
}
|
||||||
|
disks {
|
||||||
|
ide {
|
||||||
|
ide2 {
|
||||||
|
cloudinit {
|
||||||
|
storage = local.k3smaster.storage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtio {
|
||||||
|
virtio0 {
|
||||||
|
disk {
|
||||||
|
size = local.k3smaster.drive
|
||||||
|
format = local.format
|
||||||
|
storage = local.k3smaster.storage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
network {
|
||||||
|
id = 0
|
||||||
|
model = "virtio"
|
||||||
|
bridge = "vmbr0"
|
||||||
|
tag = local.vlan
|
||||||
|
}
|
||||||
|
#Cloud Init Settings
|
||||||
|
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3smaster.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
|
||||||
|
searchdomain = "durp.loc"
|
||||||
|
nameserver = local.dnsserver
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_vm_qemu" "k3sserver" {
|
||||||
|
count = local.k3sserver.count
|
||||||
|
ciuser = "administrator"
|
||||||
|
vmid = "${local.vlan}${local.k3sserver.ip[count.index]}"
|
||||||
|
name = local.k3sserver.name[count.index]
|
||||||
|
target_node = local.k3sserver.node[count.index]
|
||||||
|
clone = local.template
|
||||||
|
tags = local.k3sserver.tags
|
||||||
|
qemu_os = "l26"
|
||||||
|
full_clone = true
|
||||||
|
os_type = "cloud-init"
|
||||||
|
agent = 1
|
||||||
|
cores = local.k3sserver.cores
|
||||||
|
sockets = 1
|
||||||
|
cpu_type = "host"
|
||||||
|
memory = local.k3sserver.memory
|
||||||
|
scsihw = "virtio-scsi-pci"
|
||||||
|
#bootdisk = "scsi0"
|
||||||
|
boot = "order=virtio0"
|
||||||
|
onboot = true
|
||||||
|
sshkeys = local.sshkeys
|
||||||
|
vga {
|
||||||
|
type = "serial0"
|
||||||
|
}
|
||||||
|
serial {
|
||||||
|
id = 0
|
||||||
|
type = "socket"
|
||||||
|
}
|
||||||
|
disks {
|
||||||
|
ide {
|
||||||
|
ide2 {
|
||||||
|
cloudinit {
|
||||||
|
storage = local.k3sserver.storage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtio {
|
||||||
|
virtio0 {
|
||||||
|
disk {
|
||||||
|
size = local.k3sserver.drive
|
||||||
|
format = local.format
|
||||||
|
storage = local.k3sserver.storage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
network {
|
||||||
|
id = 0
|
||||||
|
model = "virtio"
|
||||||
|
bridge = "vmbr0"
|
||||||
|
tag = local.vlan
|
||||||
|
}
|
||||||
|
#Cloud Init Settings
|
||||||
|
ipconfig0 = "ip=192.168.${local.vlan}.${local.k3sserver.ip[count.index]}/24,gw=192.168.${local.vlan}.1"
|
||||||
|
searchdomain = "durp.loc"
|
||||||
|
nameserver = local.dnsserver
|
||||||
|
}
|
||||||
48
dev/terraform/main.tf
Normal file
48
dev/terraform/main.tf
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
terraform {
|
||||||
|
backend "http" {}
|
||||||
|
required_providers {
|
||||||
|
proxmox = {
|
||||||
|
source = "Telmate/proxmox"
|
||||||
|
version = "3.0.1-rc9"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "proxmox" {
|
||||||
|
pm_parallel = 1
|
||||||
|
pm_tls_insecure = true
|
||||||
|
pm_api_url = var.pm_api_url
|
||||||
|
pm_user = var.pm_user
|
||||||
|
pm_password = var.pm_password
|
||||||
|
pm_debug = false
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
sshkeys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEphzWgwUZnvL6E5luKLt3WO0HK7Kh63arSMoNl5gmjzXyhG1DDW0OKfoIl0T+JZw/ZjQ7iii6tmSLFRk6nuYCldqe5GVcFxvTzX4/xGEioAyG0IiUGKy6s+9xzO8QXF0EtSNPH0nfHNKcCjgwWAzM+Lt6gW0Vqs+aU5ICuDiEchmvYPz+rBaVldJVTG7m3ogKJ2aIF7HU/pCPp5l0E9gMOw7s0ABijuc3KXLEWCYgL39jIST6pFH9ceRLmu8Xy5zXHAkkEEauY/e6ld0hlzLadiUD7zYJMdDcm0oRvenYcUlaUl9gS0569IpfsJsjCejuqOxCKzTHPJDOT0f9TbIqPXkGq3s9oEJGpQW+Z8g41BqRpjBCdBk+yv39bzKxlwlumDwqgx1WP8xxKavAWYNqNRG7sBhoWwtxYEOhKXoLNjBaeDRnO5OY5AQJvONWpuByyz0R/gTh4bOFVD+Y8WWlKbT4zfhnN70XvapRsbZiaGhJBPwByAMGg6XxSbC6xtbyligVGCEjCXbTLkeKq1w0DuItY+FBGO3J2k90OiciTVSeyiVz9J/Y03UB0gHdsMCoVNrj+9QWfrTLDhM7D5YrXUt5nj2LQTcbtf49zoQXWxUhozlg42E/FJU/Yla7y55qWizAEVyP2/Ks/PHrF679k59HNd2IJ/aicA9QnmWtLQ== ansible"
|
||||||
|
template = "Debian12-Template"
|
||||||
|
format = "raw"
|
||||||
|
dnsserver = "192.168.10.1"
|
||||||
|
vlan = 10
|
||||||
|
k3smaster = {
|
||||||
|
tags = "k3s_dev"
|
||||||
|
count = 3
|
||||||
|
name = ["master01-dev", "master02-dev", "master03-dev"]
|
||||||
|
cores = 2
|
||||||
|
memory = "4096"
|
||||||
|
drive = 20
|
||||||
|
storage = "cache-domains"
|
||||||
|
node = ["mothership", "overlord", "vanguard"]
|
||||||
|
ip = ["11", "12", "13"]
|
||||||
|
}
|
||||||
|
k3sserver = {
|
||||||
|
tags = "k3s_dev"
|
||||||
|
count = 3
|
||||||
|
name = ["node01-dev", "node02-dev", "node03-dev"]
|
||||||
|
cores = 4
|
||||||
|
memory = "8192"
|
||||||
|
drive = 120
|
||||||
|
storage = "cache-domains"
|
||||||
|
node = ["mothership", "overlord", "vanguard"]
|
||||||
|
ip = ["21", "22", "23"]
|
||||||
|
}
|
||||||
|
}
|
||||||
14
dev/terraform/variables.tf
Normal file
14
dev/terraform/variables.tf
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
variable "pm_api_url" {
|
||||||
|
description = "API URL to Proxmox provider"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "pm_password" {
|
||||||
|
description = "Passowrd to Proxmox provider"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "pm_user" {
|
||||||
|
description = "Username to Proxmox provider"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
@@ -8,4 +8,4 @@ appVersion: 0.0.1
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: traefik
|
- name: traefik
|
||||||
repository: https://traefik.github.io/charts
|
repository: https://traefik.github.io/charts
|
||||||
version: 22.1.0
|
version: 34.5.0
|
||||||
58
dev/traefik/values.yaml
Normal file
58
dev/traefik/values.yaml
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
traefik:
|
||||||
|
image:
|
||||||
|
# registry: registry.durp.info
|
||||||
|
# repository: traefik
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
providers:
|
||||||
|
kubernetesCRD:
|
||||||
|
allowCrossNamespace: true
|
||||||
|
allowExternalNameServices: true
|
||||||
|
allowEmptyServices: false
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
replicas: 3
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
|
||||||
|
# volumes:
|
||||||
|
# - name: traefik-configmap
|
||||||
|
# mountPath: "/config"
|
||||||
|
# type: configMap
|
||||||
|
|
||||||
|
ingressRoute:
|
||||||
|
dashboard:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
additionalArguments:
|
||||||
|
# - "--providers.file.filename=/config/config.yml"
|
||||||
|
- "--serversTransport.insecureSkipVerify=true"
|
||||||
|
- "--log.level=DEBUG"
|
||||||
|
- --experimental.plugins.jwt.moduleName=github.com/traefik-plugins/traefik-jwt-plugin
|
||||||
|
- --experimental.plugins.jwt.version=v0.7.0
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: true
|
||||||
|
minReplicas: 3
|
||||||
|
maxReplicas: 10
|
||||||
|
metrics:
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: 80
|
||||||
|
behavior:
|
||||||
|
scaleDown:
|
||||||
|
stabilizationWindowSeconds: 300
|
||||||
|
policies:
|
||||||
|
- type: Pods
|
||||||
|
value: 1
|
||||||
|
periodSeconds: 60
|
||||||
|
|
||||||
|
# -- [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for `traefik` container.
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "100m"
|
||||||
|
memory: "512Mi"
|
||||||
|
limits:
|
||||||
|
memory: "512Mi"
|
||||||
@@ -8,5 +8,5 @@ appVersion: 0.0.1
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: vault
|
- name: vault
|
||||||
repository: https://helm.releases.hashicorp.com
|
repository: https://helm.releases.hashicorp.com
|
||||||
version: 0.27.0
|
version: 0.30.0
|
||||||
|
|
||||||
23
dev/vault/templates/secret-store.yaml
Normal file
23
dev/vault/templates/secret-store.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
spec:
|
||||||
|
provider:
|
||||||
|
vault:
|
||||||
|
server: "https://vault.infra.durp.info"
|
||||||
|
path: "kv"
|
||||||
|
version: "v2"
|
||||||
|
auth:
|
||||||
|
kubernetes:
|
||||||
|
mountPath: "dmz-cluster"
|
||||||
|
role: "external-secrets"
|
||||||
|
serviceAccountRef:
|
||||||
|
name: "vault"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
13
dev/vault/values.yaml
Normal file
13
dev/vault/values.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
vault:
|
||||||
|
global:
|
||||||
|
enabled: true
|
||||||
|
tlsDisable: false
|
||||||
|
externalVaultAddr: "https://vault.infra.durp.info"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 256Mi
|
||||||
|
cpu: 250m
|
||||||
|
limits:
|
||||||
|
memory: 256Mi
|
||||||
|
cpu: 250m
|
||||||
|
|
||||||
95
dmz/.gitlab/.gitlab-ci.yml
Normal file
95
dmz/.gitlab/.gitlab-ci.yml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
stages:
|
||||||
|
- plan
|
||||||
|
- apply
|
||||||
|
- destroy
|
||||||
|
|
||||||
|
variables:
|
||||||
|
WORKDIR: $CI_PROJECT_DIR/dmz/terraform
|
||||||
|
GITLAB_TF_ADDRESS: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/dmz
|
||||||
|
|
||||||
|
image:
|
||||||
|
name: registry.durp.info/opentofu/opentofu:latest
|
||||||
|
entrypoint: [""]
|
||||||
|
|
||||||
|
.tf-init:
|
||||||
|
before_script:
|
||||||
|
- cd $WORKDIR
|
||||||
|
- tofu init
|
||||||
|
-reconfigure
|
||||||
|
-backend-config="address=${GITLAB_TF_ADDRESS}"
|
||||||
|
-backend-config="lock_address=${GITLAB_TF_ADDRESS}/lock"
|
||||||
|
-backend-config="unlock_address=${GITLAB_TF_ADDRESS}/lock"
|
||||||
|
-backend-config="username=gitlab-ci-token"
|
||||||
|
-backend-config="password=${CI_JOB_TOKEN}"
|
||||||
|
-backend-config="lock_method=POST"
|
||||||
|
-backend-config="unlock_method=DELETE"
|
||||||
|
-backend-config="retry_wait_min=5"
|
||||||
|
|
||||||
|
format:
|
||||||
|
stage: .pre
|
||||||
|
allow_failure: false
|
||||||
|
script:
|
||||||
|
- cd $WORKDIR
|
||||||
|
- tofu fmt -diff -check -write=false
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
|
||||||
|
validate:
|
||||||
|
stage: .pre
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu validate
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
|
||||||
|
plan-dmz-infrastructure:
|
||||||
|
stage: plan
|
||||||
|
variables:
|
||||||
|
PLAN: plan.tfplan
|
||||||
|
JSON_PLAN_FILE: tfplan.json
|
||||||
|
ENVIRONMENT_NAME: dmz
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- apk add --update curl jq
|
||||||
|
- alias convert_report="jq -r '([.resource_changes[].change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
|
||||||
|
- tofu plan -out=$PLAN $ARGUMENTS
|
||||||
|
- tofu show --json $PLAN | jq -r '([.resource_changes[].change.actions?]|flatten)|{"create":(map(select(.=="create"))|length),"update":(map(select(.=="update"))|length),"delete":(map(select(.=="delete"))|length)}' > $JSON_PLAN_FILE
|
||||||
|
artifacts:
|
||||||
|
reports:
|
||||||
|
terraform: $WORKDIR/$JSON_PLAN_FILE
|
||||||
|
needs: ["validate","format"]
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
|
||||||
|
apply-dmz-infrastructure:
|
||||||
|
stage: apply
|
||||||
|
variables:
|
||||||
|
ENVIRONMENT_NAME: dmz
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu apply -auto-approve $ARGUMENTS
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
when: manual
|
||||||
|
needs: ["plan-dmz-infrastructure"]
|
||||||
|
|
||||||
|
destroy-dmz-infrastructure:
|
||||||
|
stage: destroy
|
||||||
|
variables:
|
||||||
|
ENVIRONMENT_NAME: dmz
|
||||||
|
allow_failure: false
|
||||||
|
extends: .tf-init
|
||||||
|
script:
|
||||||
|
- tofu destroy -auto-approve $ARGUMENTS
|
||||||
|
rules:
|
||||||
|
- changes:
|
||||||
|
- "dmz/terraform/*.tf"
|
||||||
|
when: manual
|
||||||
|
needs: ["plan-dmz-infrastructure"]
|
||||||
12
dmz/authentik/Chart.yaml
Normal file
12
dmz/authentik/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: authentik
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: authentik-remote-cluster
|
||||||
|
repository: https://charts.goauthentik.io
|
||||||
|
version: 2.1.0
|
||||||
@@ -1,4 +1,18 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: authentik-tls
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
secretName: authentik-tls
|
||||||
|
commonName: "authentik.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "authentik.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: authentik-ingress
|
name: authentik-ingress
|
||||||
@@ -6,31 +20,15 @@ spec:
|
|||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
routes:
|
routes:
|
||||||
- match: Host(`authentik.durp.info`) && PathPrefix(`/`)
|
- match: Host(`authentik.durp.info`) && PathPrefix(`/`)
|
||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: authentik-server
|
- name: infra-cluster
|
||||||
port: 80
|
port: 443
|
||||||
tls:
|
tls:
|
||||||
secretName: authentik-tls
|
secretName: authentik-tls
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
apiVersion: cert-manager.io/v1
|
|
||||||
kind: Certificate
|
|
||||||
metadata:
|
|
||||||
name: authentik-tls
|
|
||||||
spec:
|
|
||||||
secretName: authentik-tls
|
|
||||||
issuerRef:
|
|
||||||
name: letsencrypt-production
|
|
||||||
kind: ClusterIssuer
|
|
||||||
commonName: "authentik.durp.info"
|
|
||||||
dnsNames:
|
|
||||||
- "authentik.durp.info"
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
@@ -40,3 +38,25 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
type: ExternalName
|
type: ExternalName
|
||||||
externalName: durp.info
|
externalName: durp.info
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: infra-cluster
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.12.130
|
||||||
|
ports:
|
||||||
|
- port: 443
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: infra-cluster
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 443
|
||||||
|
targetPort: 443
|
||||||
30
dmz/authentik/values.yaml
Normal file
30
dmz/authentik/values.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
authentik-remote-cluster:
|
||||||
|
# -- Provide a name in place of `authentik`. Prefer using global.nameOverride if possible
|
||||||
|
nameOverride: ""
|
||||||
|
# -- String to fully override `"authentik.fullname"`. Prefer using global.fullnameOverride if possible
|
||||||
|
fullnameOverride: ""
|
||||||
|
# -- Override the Kubernetes version, which is used to evaluate certain manifests
|
||||||
|
kubeVersionOverride: ""
|
||||||
|
|
||||||
|
## Globally shared configuration for authentik components.
|
||||||
|
global:
|
||||||
|
# -- Provide a name in place of `authentik`
|
||||||
|
nameOverride: ""
|
||||||
|
# -- String to fully override `"authentik.fullname"`
|
||||||
|
fullnameOverride: ""
|
||||||
|
# -- A custom namespace to override the default namespace for the deployed resources.
|
||||||
|
namespaceOverride: ""
|
||||||
|
# -- Common labels for all resources.
|
||||||
|
additionalLabels: {}
|
||||||
|
# app: authentik
|
||||||
|
|
||||||
|
# -- Annotations to apply to all resources
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
serviceAccountSecret:
|
||||||
|
# -- Create a secret with the service account credentials
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
clusterRole:
|
||||||
|
# -- Create a clusterole in addition to a namespaced role.
|
||||||
|
enabled: true
|
||||||
11
dmz/cert-manager/Chart.yaml
Normal file
11
dmz/cert-manager/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: cert-manager
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: cert-manager
|
||||||
|
repository: https://charts.jetstack.io
|
||||||
|
version: v1.17.2
|
||||||
16
dmz/cert-manager/templates/issuer.yaml
Normal file
16
dmz/cert-manager/templates/issuer.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: issuer
|
||||||
|
secrets:
|
||||||
|
- name: issuer-token-lmzpj
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: issuer-token-lmzpj
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/service-account.name: issuer
|
||||||
|
type: kubernetes.io/service-account-token
|
||||||
35
dmz/cert-manager/templates/letsencrypt.yaml
Normal file
35
dmz/cert-manager/templates/letsencrypt.yaml
Normal file
File diff suppressed because one or more lines are too long
22
dmz/cert-manager/templates/secretvault.yaml
Normal file
22
dmz/cert-manager/templates/secretvault.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: cloudflare-api-token-secret
|
||||||
|
data:
|
||||||
|
- secretKey: cloudflare-api-token-secret
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cert-manager
|
||||||
|
property: cloudflare-api-token-secret
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
31
dmz/cert-manager/values.yaml
Normal file
31
dmz/cert-manager/values.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
cert-manager:
|
||||||
|
crds:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
registry: registry.durp.info
|
||||||
|
repository: jetstack/cert-manager-controller
|
||||||
|
pullPolicy: Always
|
||||||
|
replicaCount: 3
|
||||||
|
extraArgs:
|
||||||
|
- --dns01-recursive-nameservers=1.1.1.1:53,1.0.0.1:53
|
||||||
|
- --dns01-recursive-nameservers-only
|
||||||
|
podDnsPolicy: None
|
||||||
|
podDnsConfig:
|
||||||
|
nameservers:
|
||||||
|
- "1.1.1.1"
|
||||||
|
- "1.0.0.1"
|
||||||
|
webhook:
|
||||||
|
image:
|
||||||
|
registry: registry.durp.info
|
||||||
|
repository: jetstack/cert-manager-webhook
|
||||||
|
pullPolicy: Always
|
||||||
|
cainjector:
|
||||||
|
image:
|
||||||
|
registry: registry.durp.info
|
||||||
|
repository: jetstack/cert-manager-cainjector
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
hostAliases:
|
||||||
|
- ip: 192.168.12.130
|
||||||
|
hostnames:
|
||||||
|
- vault.infra.durp.info
|
||||||
11
dmz/crowdsec/Chart.yaml
Normal file
11
dmz/crowdsec/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: crowdsec
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: crowdsec
|
||||||
|
repository: https://crowdsecurity.github.io/helm-charts
|
||||||
|
version: 0.19.4
|
||||||
29
dmz/crowdsec/templates/secrets.yaml
Normal file
29
dmz/crowdsec/templates/secrets.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: enroll-key
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: enroll-key
|
||||||
|
data:
|
||||||
|
- secretKey: ENROLL_INSTANCE_NAME
|
||||||
|
remoteRef:
|
||||||
|
key: kv/crowdsec/dmz-enroll
|
||||||
|
property: ENROLL_INSTANCE_NAME
|
||||||
|
- secretKey: ENROLL_KEY
|
||||||
|
remoteRef:
|
||||||
|
key: kv/crowdsec/dmz-enroll
|
||||||
|
property: ENROLL_KEY
|
||||||
|
- secretKey: ENROLL_TAGS
|
||||||
|
remoteRef:
|
||||||
|
key: kv/crowdsec/dmz-enroll
|
||||||
|
property: ENROLL_TAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
24
dmz/crowdsec/values.yaml
Normal file
24
dmz/crowdsec/values.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
crowdsec:
|
||||||
|
#
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/crowdsecurity/crowdsec
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
# for raw logs format: json or cri (docker|containerd)
|
||||||
|
container_runtime: containerd
|
||||||
|
agent:
|
||||||
|
# Specify each pod whose logs you want to process
|
||||||
|
acquisition:
|
||||||
|
# The namespace where the pod is located
|
||||||
|
- namespace: traefik
|
||||||
|
# The pod name
|
||||||
|
podName: traefik-*
|
||||||
|
# as in crowdsec configuration, we need to specify the program name to find a matching parser
|
||||||
|
program: traefik
|
||||||
|
env:
|
||||||
|
- name: COLLECTIONS
|
||||||
|
value: "crowdsecurity/traefik"
|
||||||
|
lapi:
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: enroll-key
|
||||||
12
dmz/external-dns/Chart.yaml
Normal file
12
dmz/external-dns/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
apiVersion: v2
|
||||||
|
name: external-dns
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: external-dns
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
version: 8.9.2
|
||||||
30
dmz/external-dns/templates/secrets.yaml
Normal file
30
dmz/external-dns/templates/secrets.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: external-dns-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: external-dns
|
||||||
|
data:
|
||||||
|
- secretKey: cloudflare_api_email
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_email
|
||||||
|
- secretKey: cloudflare_api_key
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_key
|
||||||
|
- secretKey: cloudflare_api_token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/cloudflare
|
||||||
|
property: cloudflare_api_token
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
20
dmz/external-dns/values.yaml
Normal file
20
dmz/external-dns/values.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
external-dns:
|
||||||
|
global:
|
||||||
|
imageRegistry: "registry.durp.info"
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
|
||||||
|
image:
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
txtPrefix: "dmz-"
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- service
|
||||||
|
|
||||||
|
provider: cloudflare
|
||||||
|
cloudflare:
|
||||||
|
secretName: "external-dns"
|
||||||
|
proxied: false
|
||||||
|
|
||||||
|
policy: sync
|
||||||
11
dmz/external-secrets/Chart.yaml
Normal file
11
dmz/external-secrets/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: external-secrets
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: external-secrets
|
||||||
|
repository: https://charts.external-secrets.io
|
||||||
|
version: 0.17.0
|
||||||
81
dmz/external-secrets/templates/ca.yaml
Normal file
81
dmz/external-secrets/templates/ca.yaml
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
vault.pem: |
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEszCCA5ugAwIBAgIUZEzzxqEuYiKHkL1df+Cb22NRRJMwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzIyMzQ0MloXDTM1MDEy
|
||||||
|
MTExMTU1NVowIDEeMBwGA1UEAxMVdmF1bHQuaW5mcmEuZHVycC5pbmZvMIIBIjAN
|
||||||
|
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkZM0ue4bMcmmATs+kGYSpR2hLUzq
|
||||||
|
scGIwCtqmaKCMbd1xhmgjnIR3zvSRptLR2GVGvc1ti6qby0jXYvcqbxkHvay00zW
|
||||||
|
2zYN+M2m4lXpuWzg1t6NEoO6XGAsGj2v0vcVktPPU9uj0rGUVGWWfsvjoXqQFg5I
|
||||||
|
jdxsxK9SvMvw2XtE3FgKxpzCyw94InIHlcPwFTO+3ZdKStZlMbUDIkmszLBrWFcr
|
||||||
|
XOsPDfLxqMy0Ck//LKIt8djh3254FHB1GG5+kI+JSW1o+tUcL2NymvIINwm/2acS
|
||||||
|
1uTm+j9W7iEXav0pJNmm+/dzSskc3Y0ftM0h2HCXgitBIaEZnUVneNHOLwIDAQAB
|
||||||
|
o4IB7zCCAeswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||||
|
BBYEFCaQ2q7j7LyBGETEZ5qaJAdlISKCMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2
|
||||||
|
dfBMWVYeWrQ2MIH0BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6
|
||||||
|
Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFo
|
||||||
|
dHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3Nw
|
||||||
|
MDEGCCsGAQUFBzAChiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtp
|
||||||
|
L2NhMDsGCCsGAQUFBzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVy
|
||||||
|
cC5pbmZvL3YxL3BraS9jYTAgBgNVHREEGTAXghV2YXVsdC5pbmZyYS5kdXJwLmlu
|
||||||
|
Zm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAx
|
||||||
|
L3YxL3BraS9jcmwwNqA0oDKGMGh0dHBzOi8vcm9vdC12YXVsdC5pbnRlcm5hbC5k
|
||||||
|
dXJwLmluZm8vdjEvcGtpL2NybDANBgkqhkiG9w0BAQsFAAOCAQEAuJ+lplY/+A5L
|
||||||
|
5LzkljbKDTy3U6PLv1LtxqVCOFGiJXBnXMjtVW07bBEUadzFRNW8GHQ3w5QzOG6k
|
||||||
|
/vE/TrrJho7l05J/uc+BUrPSNjefLmQV6hn4jrP86PR0vzRfbSqKKBIID9M7+zi6
|
||||||
|
GFvHlVkSHsQyMQp7JOoax9KVzW2Y+OIgw7Lgw2tP122WCt2SIF0QenoZHsoW0guj
|
||||||
|
tzTJRmJDjn6XeJ7L3FPkf37H6ub0Jg3zBGr6eorEFfYZNN5CXezjqMFBpRdq4UIo
|
||||||
|
1M3A7o3uyZFcFsp/vGDcMBkwaCsBV9idu/HwkvGaTUNI285ilBORPD0bMZnACq/9
|
||||||
|
+Q/cdsO5lg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEmzCCA4OgAwIBAgIUQwCAs82sgSuiaVbjANHScO2DSfAwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMjEyNVoXDTM1MDEy
|
||||||
|
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEAn9fjGRqqFsqguz56X6cXZwEMtD9wElwSFCb4Fc8YTzlH
|
||||||
|
4fV13QwXKESLE/Q+7bw4y4FJQ8BiGNbxxbQOOgWhfGGlQyFa1lfhJtYLfqRN5C2/
|
||||||
|
S7nr0YxDB9duc4OAExVL6Pr4/Koc+vDZY03l7RzwnF2AOM9DjFTASw01TphCQjRk
|
||||||
|
U+upiN2TUhUPejV/gMR+zXM6pn98UBKG1dNubS0HzAMwAEXAPm141NDyWUCPT9+3
|
||||||
|
6P03Ka8mUTx3X49OCtvJEGEQbtlnTFQaOSkP1yLW+XRMHw3sQaV2PWXu5fInbEpZ
|
||||||
|
+SuzmgLOXtmQNmHLav9q1qeTVkpBGPWvfh2Vh1JJhQIDAQABo4IB4zCCAd8wDgYD
|
||||||
|
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJaP17f1Zw0V
|
||||||
|
55Ks9Uf0USVWl0BPMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2dfBMWVYeWrQ2MIH0
|
||||||
|
BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6Ly8xOTIuMTY4LjIw
|
||||||
|
LjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFodHRwczovL3Jvb3Qt
|
||||||
|
dmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3NwMDEGCCsGAQUFBzAC
|
||||||
|
hiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtpL2NhMDsGCCsGAQUF
|
||||||
|
BzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3Br
|
||||||
|
aS9jYTAUBgNVHREEDTALgglkdXJwLmluZm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0
|
||||||
|
cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9jcmwwNqA0oDKGMGh0dHBz
|
||||||
|
Oi8vcm9vdC12YXVsdC5pbnRlcm5hbC5kdXJwLmluZm8vdjEvcGtpL2NybDANBgkq
|
||||||
|
hkiG9w0BAQsFAAOCAQEAiqAZ4zNIEkCWcvpDRq0VyJuk59sVtJr5X4FscHQ179nE
|
||||||
|
QbbvMe+EBDFS6XQml1Elj8jiPa/D5O9Oc6Iisnm5+weZKwApz/lQ+XVkWLCoEplB
|
||||||
|
ZZ9fcWVCbMLt0xlt8qn5z/mYKfbCT7ZCqDO+prQZt+ADJcQbiknfroAAqEbNKxwN
|
||||||
|
Y9uUyOWNF3SxJEch4w2dtX+IEVmxeZnhMy8OuP0SQKl8aW40ugiG0ZD5yTBBfOD9
|
||||||
|
zsrGSU/iSatn0b7bevBhaL96hz1/rNR1cL+4/albX2hrr8Rv3/SB2DLtNQlQW0ls
|
||||||
|
AfhXAqP5zL+Ytgf1Of/pVdgnhxrYUY7RKCSGY5Hagw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDLzCCAhegAwIBAgIUNHdvOzam2HPVdwXpMHUy4wl8ZRYwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMTUyNVoXDTM1MDEy
|
||||||
|
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEA8XDTVEtRI3+k4yuvqVqfIiLRQJcXbmhfVtAeYk+5j9Ox
|
||||||
|
p1w9YHdnPLqLFrD1PzadjqYeAp/fwlEFfs6lqwoTS8S9vhaFqcgB57nVMb77dTBb
|
||||||
|
/08XHXOU6FPRjdFKm5QMpS7tn1XacPMy/o0bKqRREQeiuFDGVRyuF5PUgvWc1dvJ
|
||||||
|
l27JvvgYktgjfpNS4DlCxg4lGXT5abvaKf2hnr65egaIo/yRWN9wnvAzRiY7oci7
|
||||||
|
GA1oKz87Yc1tfL2gcynrwccOOCF/eUKesJR1I6GXNkN/a1fcr+Ld9Z9NhHBtO+vE
|
||||||
|
N8DsZY+kG7DE3M4BCCTFUzllcYHjaW4HaF9vZW+PYwIDAQABo3kwdzAOBgNVHQ8B
|
||||||
|
Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7WMLIaSkU75CJHZ1
|
||||||
|
8ExZVh5atDYwHwYDVR0jBBgwFoAU7WMLIaSkU75CJHZ18ExZVh5atDYwFAYDVR0R
|
||||||
|
BA0wC4IJZHVycC5pbmZvMA0GCSqGSIb3DQEBCwUAA4IBAQAS/qUI/1Yv07xUTK5k
|
||||||
|
r93kC7GSPpmpkXIsfjChAl93sebN143fu70NUP74jjCc0Wkb8hRofGg10E+/24r1
|
||||||
|
AI0KsLhzKzfIASxUVQAn8RTptLruaaPLboSA4MUZ8IB5y8Vy8E3/KtD0gD80j64Y
|
||||||
|
rm9XGHA0HTJHbPUTb/Rux2g0E7WtiyWSWH8mqzbegU8IrkM3eVT4+ylBE7YkfWDD
|
||||||
|
dw44sB71tfmDKpzWg6XQ6YMh0YfnyG1fYCj9LhuecNY9Uuo6cjDaAvkzMewWwqDx
|
||||||
|
Q2Ekas98Di6itCP8vET+gBDjeCc+XR6Hx6vzWmxlZhwDuxEKL1a2/DabUxJyMNzv
|
||||||
|
55Fn
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: ca-pemstore
|
||||||
100
dmz/external-secrets/values.yaml
Normal file
100
dmz/external-secrets/values.yaml
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
external-secrets:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
replicaCount: 1
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
leaderElect: false
|
||||||
|
|
||||||
|
installCRDs: true
|
||||||
|
crds:
|
||||||
|
createClusterExternalSecret: true
|
||||||
|
createClusterSecretStore: true
|
||||||
|
createClusterGenerator: true
|
||||||
|
createPushSecret: true
|
||||||
|
conversion:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
|
|
||||||
|
# resources:
|
||||||
|
# requests:
|
||||||
|
# memory: 32Mi
|
||||||
|
# cpu: 10m
|
||||||
|
# limits:
|
||||||
|
# memory: 32Mi
|
||||||
|
# cpu: 10m
|
||||||
|
|
||||||
|
webhook:
|
||||||
|
create: false
|
||||||
|
failurePolicy: Ignore
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
|
|
||||||
|
# resources:
|
||||||
|
# requests:
|
||||||
|
# memory: 32Mi
|
||||||
|
# cpu: 10m
|
||||||
|
# limits:
|
||||||
|
# memory: 32Mi
|
||||||
|
# cpu: 10m
|
||||||
|
|
||||||
|
certController:
|
||||||
|
create: false
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: registry.durp.info/external-secrets/external-secrets
|
||||||
|
pullPolicy: Always
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
limits:
|
||||||
|
memory: 32Mi
|
||||||
|
cpu: 10m
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: ca-pemstore
|
||||||
|
configMap:
|
||||||
|
name: ca-pemstore
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: ca-pemstore
|
||||||
|
mountPath: /etc/ssl/certs/vault.pem
|
||||||
|
subPath: vault.pem
|
||||||
|
readOnly: true
|
||||||
15
dmz/gitlab-runner/Chart.yaml
Normal file
15
dmz/gitlab-runner/Chart.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: gitlab-runner
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: gitlab-runner
|
||||||
|
repository: https://charts.gitlab.io/
|
||||||
|
version: 0.77.2
|
||||||
|
- name: gitlab-runner
|
||||||
|
repository: https://charts.gitlab.io/
|
||||||
|
version: 0.77.2
|
||||||
|
alias: personal
|
||||||
48
dmz/gitlab-runner/templates/secrets.yaml
Normal file
48
dmz/gitlab-runner/templates/secrets.yaml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: gitlab-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: gitlab-secret
|
||||||
|
data:
|
||||||
|
- secretKey: runner-registration-token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/gitlab/runner
|
||||||
|
property: runner-registration-token
|
||||||
|
- secretKey: runner-token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/gitlab/runner
|
||||||
|
property: runner-token
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: gitlab-secret-personal
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: gitlab-secret-personal
|
||||||
|
data:
|
||||||
|
- secretKey: runner-token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/gitlab/runner
|
||||||
|
property: personal-runner-token
|
||||||
|
- secretKey: runner-registration-token
|
||||||
|
remoteRef:
|
||||||
|
key: kv/gitlab/runner
|
||||||
|
property: personal-runner-token
|
||||||
143
dmz/gitlab-runner/values.yaml
Normal file
143
dmz/gitlab-runner/values.yaml
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
gitlab-runner:
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: registry.durp.info
|
||||||
|
image: gitlab-org/gitlab-runner
|
||||||
|
|
||||||
|
imagePullPolicy: Always
|
||||||
|
gitlabUrl: https://gitlab.com/
|
||||||
|
unregisterRunner: false
|
||||||
|
terminationGracePeriodSeconds: 3600
|
||||||
|
concurrent: 10
|
||||||
|
checkInterval: 30
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
create: true
|
||||||
|
rules: []
|
||||||
|
clusterWideAccess: false
|
||||||
|
podSecurityPolicy:
|
||||||
|
enabled: false
|
||||||
|
resourceNames:
|
||||||
|
- gitlab-runner
|
||||||
|
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
runners:
|
||||||
|
config: |
|
||||||
|
[[runners]]
|
||||||
|
[runners.kubernetes]
|
||||||
|
namespace = "{{.Release.Namespace}}"
|
||||||
|
image = "ubuntu:22.04"
|
||||||
|
privileged = true
|
||||||
|
|
||||||
|
executor: kubernetes
|
||||||
|
name: "k3s"
|
||||||
|
runUntagged: true
|
||||||
|
privileged: true
|
||||||
|
secret: gitlab-secret
|
||||||
|
#builds:
|
||||||
|
#cpuLimit: 200m
|
||||||
|
#cpuLimitOverwriteMaxAllowed: 400m
|
||||||
|
#memoryLimit: 256Mi
|
||||||
|
#memoryLimitOverwriteMaxAllowed: 512Mi
|
||||||
|
#cpuRequests: 100m
|
||||||
|
#cpuRequestsOverwriteMaxAllowed: 200m
|
||||||
|
#memoryRequests: 128Mi
|
||||||
|
#memoryRequestsOverwriteMaxAllowed: 256Mi
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
privileged: false
|
||||||
|
capabilities:
|
||||||
|
drop: ["ALL"]
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 100
|
||||||
|
fsGroup: 65533
|
||||||
|
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2Gi
|
||||||
|
requests:
|
||||||
|
memory: 128Mi
|
||||||
|
cpu: 500m
|
||||||
|
|
||||||
|
personal:
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: registry.durp.info
|
||||||
|
image: gitlab-org/gitlab-runner
|
||||||
|
|
||||||
|
imagePullPolicy: Always
|
||||||
|
gitlabUrl: https://gitlab.com/
|
||||||
|
unregisterRunner: false
|
||||||
|
terminationGracePeriodSeconds: 3600
|
||||||
|
concurrent: 10
|
||||||
|
checkInterval: 30
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
create: true
|
||||||
|
rules: []
|
||||||
|
clusterWideAccess: false
|
||||||
|
podSecurityPolicy:
|
||||||
|
enabled: false
|
||||||
|
resourceNames:
|
||||||
|
- gitlab-runner
|
||||||
|
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
runners:
|
||||||
|
config: |
|
||||||
|
[[runners]]
|
||||||
|
[runners.kubernetes]
|
||||||
|
namespace = "{{.Release.Namespace}}"
|
||||||
|
image = "ubuntu:22.04"
|
||||||
|
privileged = true
|
||||||
|
|
||||||
|
executor: kubernetes
|
||||||
|
name: "k3s"
|
||||||
|
runUntagged: true
|
||||||
|
privileged: true
|
||||||
|
secret: gitlab-secret-personal
|
||||||
|
#builds:
|
||||||
|
#cpuLimit: 200m
|
||||||
|
#cpuLimitOverwriteMaxAllowed: 400m
|
||||||
|
#memoryLimit: 256Mi
|
||||||
|
#memoryLimitOverwriteMaxAllowed: 512Mi
|
||||||
|
#cpuRequests: 100m
|
||||||
|
#cpuRequestsOverwriteMaxAllowed: 200m
|
||||||
|
#memoryRequests: 128Mi
|
||||||
|
#memoryRequestsOverwriteMaxAllowed: 256Mi
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
privileged: false
|
||||||
|
capabilities:
|
||||||
|
drop: ["ALL"]
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 100
|
||||||
|
fsGroup: 65533
|
||||||
|
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2Gi
|
||||||
|
requests:
|
||||||
|
memory: 128Mi
|
||||||
|
cpu: 500m
|
||||||
40
dmz/internalproxy/templates/authentik.yaml
Normal file
40
dmz/internalproxy/templates/authentik.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#apiVersion: traefik.io/v1alpha1
|
||||||
|
#kind: IngressRoute
|
||||||
|
#metadata:
|
||||||
|
# name: authentik-ingress
|
||||||
|
#spec:
|
||||||
|
# entryPoints:
|
||||||
|
# - websecure
|
||||||
|
# routes:
|
||||||
|
# - match: Host(`authentik.durp.info`) && PathPrefix(`/`)
|
||||||
|
# kind: Rule
|
||||||
|
# services:
|
||||||
|
# - name: infra-cluster
|
||||||
|
# port: 443
|
||||||
|
# tls:
|
||||||
|
# secretName: authentik-tls
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#apiVersion: cert-manager.io/v1
|
||||||
|
#kind: Certificate
|
||||||
|
#metadata:
|
||||||
|
# name: authentik-tls
|
||||||
|
#spec:
|
||||||
|
# issuerRef:
|
||||||
|
# name: letsencrypt-production
|
||||||
|
# kind: ClusterIssuer
|
||||||
|
# secretName: authentik-tls
|
||||||
|
# commonName: "authentik.durp.info"
|
||||||
|
# dnsNames:
|
||||||
|
# - "authentik.durp.info"
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#kind: Service
|
||||||
|
#apiVersion: v1
|
||||||
|
#metadata:
|
||||||
|
# name: authentik-external-dns
|
||||||
|
# annotations:
|
||||||
|
# external-dns.alpha.kubernetes.io/hostname: authentik.durp.info
|
||||||
|
#spec:
|
||||||
|
# type: ExternalName
|
||||||
|
# externalName: durp.info
|
||||||
42
dmz/internalproxy/templates/bitwarden.yaml
Normal file
42
dmz/internalproxy/templates/bitwarden.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`bitwarden.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: infra-cluster
|
||||||
|
port: 443
|
||||||
|
tls:
|
||||||
|
secretName: bitwarden-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-tls
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
secretName: bitwarden-tls
|
||||||
|
commonName: "bitwarden.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "bitwarden.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: bitwarden.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
64
dmz/internalproxy/templates/duplicati.yaml
Normal file
64
dmz/internalproxy/templates/duplicati.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: duplicati
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8200
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8200
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: duplicati
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8200
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: duplicati-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`duplicati.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: duplicati
|
||||||
|
port: 8200
|
||||||
|
tls:
|
||||||
|
secretName: duplicati-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: duplicati-tls
|
||||||
|
spec:
|
||||||
|
secretName: duplicati-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "duplicati.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "duplicati.internal.durp.info"
|
||||||
45
dmz/internalproxy/templates/endpoints.yaml
Normal file
45
dmz/internalproxy/templates/endpoints.yaml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: master-cluster
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.130
|
||||||
|
ports:
|
||||||
|
- port: 443
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: master-cluster
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 443
|
||||||
|
targetPort: 443
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: infra-cluster
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.12.130
|
||||||
|
ports:
|
||||||
|
- port: 443
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: infra-cluster
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 443
|
||||||
|
targetPort: 443
|
||||||
72
dmz/internalproxy/templates/gitea.yaml
Normal file
72
dmz/internalproxy/templates/gitea.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: gitea
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: gitea
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: gitea-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`gitea.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: gitea
|
||||||
|
port: 3000
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: gitea-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: gitea-tls
|
||||||
|
spec:
|
||||||
|
secretName: gitea-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "gitea.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "gitea.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: gitea-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: gitea.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
68
dmz/internalproxy/templates/gitlab.yaml
Normal file
68
dmz/internalproxy/templates/gitlab.yaml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: gitlab
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9080
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9080
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: gitlab
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9080
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: gitlab-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`gitlab.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: gitlab
|
||||||
|
port: 9080
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: gitlab-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: gitlab-tls
|
||||||
|
spec:
|
||||||
|
secretName: gitlab-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "gitlab.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "gitlab.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: gitlab-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: gitlab.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
40
dmz/internalproxy/templates/grafana.yaml
Normal file
40
dmz/internalproxy/templates/grafana.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: grafana-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`grafana.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: infra-cluster
|
||||||
|
port: 443
|
||||||
|
tls:
|
||||||
|
secretName: grafana-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: grafana-tls
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
secretName: grafana-tls
|
||||||
|
commonName: "grafana.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "grafana.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: grafana-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: grafana.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
74
dmz/internalproxy/templates/invidious.yaml
Normal file
74
dmz/internalproxy/templates/invidious.yaml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: invidious
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: invidious
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: invidious-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`invidious.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: invidious
|
||||||
|
port: 3000
|
||||||
|
tls:
|
||||||
|
secretName: invidious-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: invidious-tls
|
||||||
|
spec:
|
||||||
|
secretName: invidious-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "invidious.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "invidious.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: invidious-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: invidious.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
72
dmz/internalproxy/templates/kasm.yaml
Normal file
72
dmz/internalproxy/templates/kasm.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: kasm
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: kasm
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: kasm-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`kasm.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: kasm
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: kasm-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: kasm-tls
|
||||||
|
spec:
|
||||||
|
secretName: kasm-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "kasm.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "kasm.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: kasm-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: kasm.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
45
dmz/internalproxy/templates/kuma.yaml
Normal file
45
dmz/internalproxy/templates/kuma.yaml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: kuma-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`kuma.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
services:
|
||||||
|
- name: master-cluster
|
||||||
|
port: 443
|
||||||
|
tls:
|
||||||
|
secretName: kuma-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: kuma-tls
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
secretName: kuma-tls
|
||||||
|
commonName: "kuma.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "kuma.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: kuma-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: kuma.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
71
dmz/internalproxy/templates/litellm.yaml
Normal file
71
dmz/internalproxy/templates/litellm.yaml
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: litellm
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 4000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 4000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: litellm
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 4000
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: litellm-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`litellm.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: litellm
|
||||||
|
port: 4000
|
||||||
|
tls:
|
||||||
|
secretName: litellm-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: litellm-tls
|
||||||
|
spec:
|
||||||
|
secretName: litellm-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "litellm.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "litellm.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: litellm-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: litellm.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
63
dmz/internalproxy/templates/minio.yaml
Normal file
63
dmz/internalproxy/templates/minio.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: minio
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9769
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9769
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: minio
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9769
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: minio-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`minio.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: minio
|
||||||
|
port: 9769
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: minio-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: minio-tls
|
||||||
|
spec:
|
||||||
|
secretName: minio-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "minio.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "minio.internal.durp.info"
|
||||||
72
dmz/internalproxy/templates/n8n.yaml
Normal file
72
dmz/internalproxy/templates/n8n.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: n8n
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 5678
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 5678
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: n8n
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 5678
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: n8n-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`n8n.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: n8n
|
||||||
|
port: 5678
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: n8n-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: n8n-tls
|
||||||
|
spec:
|
||||||
|
secretName: n8n-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "n8n.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "n8n.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: n8n-dns
|
||||||
|
annotations:
|
||||||
|
dns.alpha.kubernetes.io/hostname: n8n.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
@@ -1,25 +1,13 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: guac-external-dns
|
|
||||||
annotations:
|
|
||||||
external-dns.alpha.kubernetes.io/hostname: guac.durp.info
|
|
||||||
spec:
|
|
||||||
type: ExternalName
|
|
||||||
externalName: durp.info
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: guac
|
name: nexus
|
||||||
spec:
|
spec:
|
||||||
ports:
|
ports:
|
||||||
- name: app
|
- name: app
|
||||||
port: 8082
|
port: 8081
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: 8082
|
targetPort: 8081
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
|
|
||||||
@@ -28,44 +16,56 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Endpoints
|
kind: Endpoints
|
||||||
metadata:
|
metadata:
|
||||||
name: guac
|
name: nexus
|
||||||
subsets:
|
subsets:
|
||||||
- addresses:
|
- addresses:
|
||||||
- ip: 192.168.20.253
|
- ip: 192.168.20.200
|
||||||
ports:
|
ports:
|
||||||
- name: app
|
- name: app
|
||||||
port: 8082
|
port: 8081
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: guac-ingress
|
name: nexus-ingress
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
routes:
|
routes:
|
||||||
- match: Host(`guac.durp.info`) && PathPrefix(`/`)
|
- match: Host(`nexus.durp.info`) && PathPrefix(`/`)
|
||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: guac
|
- name: nexus
|
||||||
port: 8082
|
port: 8081
|
||||||
tls:
|
tls:
|
||||||
secretName: guac-tls
|
secretName: nexus-tls
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
apiVersion: cert-manager.io/v1
|
apiVersion: cert-manager.io/v1
|
||||||
kind: Certificate
|
kind: Certificate
|
||||||
metadata:
|
metadata:
|
||||||
name: guac-tls
|
name: nexus-tls
|
||||||
spec:
|
spec:
|
||||||
secretName: guac-tls
|
secretName: nexus-tls
|
||||||
issuerRef:
|
issuerRef:
|
||||||
name: letsencrypt-production
|
name: letsencrypt-production
|
||||||
kind: ClusterIssuer
|
kind: ClusterIssuer
|
||||||
commonName: "guac.durp.info"
|
commonName: "nexus.durp.info"
|
||||||
dnsNames:
|
dnsNames:
|
||||||
- "guac.durp.info"
|
- "nexus.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: nexus-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: nexus.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
40
dmz/internalproxy/templates/octopus.yaml
Normal file
40
dmz/internalproxy/templates/octopus.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: octopus-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`octopus.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: infra-cluster
|
||||||
|
port: 443
|
||||||
|
tls:
|
||||||
|
secretName: octopus-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: octopus-tls
|
||||||
|
spec:
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
secretName: octopus-tls
|
||||||
|
commonName: "octopus.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "octopus.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: octopus-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: octopus.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
102
dmz/internalproxy/templates/ollama.yaml
Normal file
102
dmz/internalproxy/templates/ollama.yaml
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: ollama-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: ollama-secret
|
||||||
|
data:
|
||||||
|
- secretKey: users
|
||||||
|
remoteRef:
|
||||||
|
key: kv/ollama
|
||||||
|
property: users
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: ollama-basic-auth
|
||||||
|
spec:
|
||||||
|
basicAuth:
|
||||||
|
headerField: x-api-key
|
||||||
|
secret: ollama-secret
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: ollama
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 11435
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 11435
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: ollama
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 11435
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: ollama-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`ollama.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: ollama-basic-auth
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: ollama
|
||||||
|
port: 11435
|
||||||
|
tls:
|
||||||
|
secretName: ollama-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: ollama-tls
|
||||||
|
spec:
|
||||||
|
secretName: ollama-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "ollama.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "ollama.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: ollama-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: ollama.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
72
dmz/internalproxy/templates/open-webui.yaml
Normal file
72
dmz/internalproxy/templates/open-webui.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8089
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8089
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8089
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: open-webui-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`open-webui.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: open-webui
|
||||||
|
port: 8089
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: open-webui-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: open-webui-tls
|
||||||
|
spec:
|
||||||
|
secretName: open-webui-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "open-webui.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "open-webui.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: open-webui-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: open-webui.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
72
dmz/internalproxy/templates/plex.yaml
Normal file
72
dmz/internalproxy/templates/plex.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: plex
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 32400
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 32400
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: plex
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 32400
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: plex-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`plex.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: plex
|
||||||
|
port: 32400
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: plex-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: plex-tls
|
||||||
|
spec:
|
||||||
|
secretName: plex-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "plex.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "plex.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: plex-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: plex.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
63
dmz/internalproxy/templates/portainer.yaml
Normal file
63
dmz/internalproxy/templates/portainer.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: portainer
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: portainer
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: portainer-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`portainer.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
#middlewares:
|
||||||
|
#- name: whitelist
|
||||||
|
# namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: portainer
|
||||||
|
port: 9443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: portainer-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: portainer-tls
|
||||||
|
spec:
|
||||||
|
secretName: portainer-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "portainer.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "portainer.internal.durp.info"
|
||||||
63
dmz/internalproxy/templates/proxmox.yaml
Normal file
63
dmz/internalproxy/templates/proxmox.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: proxmox
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8006
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8006
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: proxmox
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.254
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8006
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: proxmox-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`proxmox.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: proxmox
|
||||||
|
port: 8006
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: proxmox-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: proxmox-tls
|
||||||
|
spec:
|
||||||
|
secretName: proxmox-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "proxmox.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "proxmox.internal.durp.info"
|
||||||
74
dmz/internalproxy/templates/redlib.yaml
Normal file
74
dmz/internalproxy/templates/redlib.yaml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: Service
|
||||||
|
#metadata:
|
||||||
|
# name: redlib
|
||||||
|
#spec:
|
||||||
|
# ports:
|
||||||
|
# - name: app
|
||||||
|
# port: 8082
|
||||||
|
# protocol: TCP
|
||||||
|
# targetPort: 8082
|
||||||
|
# clusterIP: None
|
||||||
|
# type: ClusterIP
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: v1
|
||||||
|
#kind: Endpoints
|
||||||
|
#metadata:
|
||||||
|
# name: redlib
|
||||||
|
#subsets:
|
||||||
|
#- addresses:
|
||||||
|
# - ip: 192.168.21.200
|
||||||
|
# ports:
|
||||||
|
# - name: app
|
||||||
|
# port: 8082
|
||||||
|
# protocol: TCP
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: traefik.io/v1alpha1
|
||||||
|
#kind: IngressRoute
|
||||||
|
#metadata:
|
||||||
|
# name: redlib-ingress
|
||||||
|
#spec:
|
||||||
|
# entryPoints:
|
||||||
|
# - websecure
|
||||||
|
# routes:
|
||||||
|
# - match: Host(`redlib.durp.info`) && PathPrefix(`/`)
|
||||||
|
# middlewares:
|
||||||
|
# - name: authentik-proxy-provider
|
||||||
|
# namespace: traefik
|
||||||
|
# kind: Rule
|
||||||
|
# services:
|
||||||
|
# - name: redlib
|
||||||
|
# port: 8082
|
||||||
|
# tls:
|
||||||
|
# secretName: redlib-tls
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: cert-manager.io/v1
|
||||||
|
#kind: Certificate
|
||||||
|
#metadata:
|
||||||
|
# name: redlib-tls
|
||||||
|
#spec:
|
||||||
|
# secretName: redlib-tls
|
||||||
|
# issuerRef:
|
||||||
|
# name: letsencrypt-production
|
||||||
|
# kind: ClusterIssuer
|
||||||
|
# commonName: "redlib.durp.info"
|
||||||
|
# dnsNames:
|
||||||
|
# - "redlib.durp.info"
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#kind: Service
|
||||||
|
#apiVersion: v1
|
||||||
|
#metadata:
|
||||||
|
# name: redlib-external-dns
|
||||||
|
# annotations:
|
||||||
|
# external-dns.alpha.kubernetes.io/hostname: redlib.durp.info
|
||||||
|
#spec:
|
||||||
|
# type: ExternalName
|
||||||
|
# externalName: durp.info
|
||||||
70
dmz/internalproxy/templates/registry.yaml
Normal file
70
dmz/internalproxy/templates/registry.yaml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: registry
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 5000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 5000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: registry
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 5000
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: registry-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`registry.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
services:
|
||||||
|
- name: registry
|
||||||
|
port: 5000
|
||||||
|
tls:
|
||||||
|
secretName: registry-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: registry-tls
|
||||||
|
spec:
|
||||||
|
secretName: registry-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "registry.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "registry.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
#kind: Service
|
||||||
|
#apiVersion: v1
|
||||||
|
#metadata:
|
||||||
|
# name: registry-external-dns
|
||||||
|
# annotations:
|
||||||
|
# external-dns.alpha.kubernetes.io/hostname: registry.durp.info
|
||||||
|
#spec:
|
||||||
|
# type: ExternalName
|
||||||
|
# externalName: durp.info
|
||||||
63
dmz/internalproxy/templates/root-vault.yaml
Normal file
63
dmz/internalproxy/templates/root-vault.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: root-vault
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8201
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8201
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: root-vault
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8201
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: root-vault-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`root-vault.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: root-vault
|
||||||
|
port: 8201
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: root-vault-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: root-vault-tls
|
||||||
|
spec:
|
||||||
|
secretName: root-vault-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "root-vault.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "root-vault.internal.durp.info"
|
||||||
109
dmz/internalproxy/templates/s3.yaml
Normal file
109
dmz/internalproxy/templates/s3.yaml
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: s3
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9768
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9768
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: s3
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9768
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: s3-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`s3.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: s3
|
||||||
|
port: 9768
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: s3-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: s3-tls
|
||||||
|
spec:
|
||||||
|
secretName: s3-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "s3.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "s3.internal.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: s3-ingress-external
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`s3.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: s3
|
||||||
|
port: 9768
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: s3-external-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: s3-external-tls
|
||||||
|
spec:
|
||||||
|
secretName: s3-external-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "s3.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "s3.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: s3-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: s3.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
64
dmz/internalproxy/templates/semaphore.yaml
Normal file
64
dmz/internalproxy/templates/semaphore.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: semaphore
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3001
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3001
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: semaphore
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3001
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: semaphore-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`semaphore.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: semaphore
|
||||||
|
port: 3001
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: semaphore-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: semaphore-tls
|
||||||
|
spec:
|
||||||
|
secretName: semaphore-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "semaphore.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "semaphore.internal.durp.info"
|
||||||
4
dmz/internalproxy/templates/serviceaccount.yaml
Normal file
4
dmz/internalproxy/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
76
dmz/internalproxy/templates/smokeping.yaml
Normal file
76
dmz/internalproxy/templates/smokeping.yaml
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: smokeping
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 81
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 81
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: smokeping
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 81
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: smokeping-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`smokeping.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: smokeping
|
||||||
|
port: 81
|
||||||
|
tls:
|
||||||
|
secretName: smokeping-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: smokeping-tls
|
||||||
|
spec:
|
||||||
|
secretName: smokeping-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "smokeping.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "smokeping.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: smokeping-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: smokeping.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
74
dmz/internalproxy/templates/speedtest.yaml
Normal file
74
dmz/internalproxy/templates/speedtest.yaml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: Service
|
||||||
|
#metadata:
|
||||||
|
# name: speedtest
|
||||||
|
#spec:
|
||||||
|
# ports:
|
||||||
|
# - name: app
|
||||||
|
# port: 6580
|
||||||
|
# protocol: TCP
|
||||||
|
# targetPort: 6580
|
||||||
|
# clusterIP: None
|
||||||
|
# type: ClusterIP
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: v1
|
||||||
|
#kind: Endpoints
|
||||||
|
#metadata:
|
||||||
|
# name: speedtest
|
||||||
|
#subsets:
|
||||||
|
#- addresses:
|
||||||
|
# - ip: 192.168.21.200
|
||||||
|
# ports:
|
||||||
|
# - name: app
|
||||||
|
# port: 6580
|
||||||
|
# protocol: TCP
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: traefik.io/v1alpha1
|
||||||
|
#kind: IngressRoute
|
||||||
|
#metadata:
|
||||||
|
# name: speedtest-ingress
|
||||||
|
#spec:
|
||||||
|
# entryPoints:
|
||||||
|
# - websecure
|
||||||
|
# routes:
|
||||||
|
# - match: Host(`speedtest.durp.info`) && PathPrefix(`/`)
|
||||||
|
# kind: Rule
|
||||||
|
# middlewares:
|
||||||
|
# - name: authentik-proxy-provider
|
||||||
|
# namespace: traefik
|
||||||
|
# services:
|
||||||
|
# - name: speedtest
|
||||||
|
# port: 6580
|
||||||
|
# tls:
|
||||||
|
# secretName: speedtest-tls
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: cert-manager.io/v1
|
||||||
|
#kind: Certificate
|
||||||
|
#metadata:
|
||||||
|
# name: speedtest-tls
|
||||||
|
#spec:
|
||||||
|
# secretName: speedtest-tls
|
||||||
|
# issuerRef:
|
||||||
|
# name: letsencrypt-production
|
||||||
|
# kind: ClusterIssuer
|
||||||
|
# commonName: "speedtest.durp.info"
|
||||||
|
# dnsNames:
|
||||||
|
# - "speedtest.durp.info"
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#kind: Service
|
||||||
|
#apiVersion: v1
|
||||||
|
#metadata:
|
||||||
|
# name: speedtest-external-dns
|
||||||
|
# annotations:
|
||||||
|
# external-dns.alpha.kubernetes.io/hostname: speedtest.durp.info
|
||||||
|
#spec:
|
||||||
|
# type: ExternalName
|
||||||
|
# externalName: durp.info
|
||||||
67
dmz/internalproxy/templates/tdarr.yaml
Normal file
67
dmz/internalproxy/templates/tdarr.yaml
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tdarr
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8267
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8267
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: tdarr
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8267
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: tdarr-ingress
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-production
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`tdarr.internal.durp.info`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: tdarr
|
||||||
|
port: 8267
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: tdarr-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: tdarr-tls
|
||||||
|
spec:
|
||||||
|
secretName: tdarr-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "tdarr.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "tdarr.internal.durp.info"
|
||||||
63
dmz/internalproxy/templates/unifi.yaml
Normal file
63
dmz/internalproxy/templates/unifi.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: unifi
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: unifi
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.98.1
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: unifi-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`unifi.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: unifi
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: unifi-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: unifi-tls
|
||||||
|
spec:
|
||||||
|
secretName: unifi-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "unifi.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "unifi.internal.durp.info"
|
||||||
64
dmz/internalproxy/templates/unraid.yaml
Normal file
64
dmz/internalproxy/templates/unraid.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: unraid
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: unraid
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.200
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: unraid-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`unraid.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: unraid
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: unraid-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: unraid-tls
|
||||||
|
spec:
|
||||||
|
secretName: unraid-tls
|
||||||
|
issuerRef:
|
||||||
|
name: vault-issuer
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "unraid.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "unraid.internal.durp.info"
|
||||||
17
dmz/istio-system/Chart.yaml
Normal file
17
dmz/istio-system/Chart.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: istio-system
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: base
|
||||||
|
repository: https://istio-release.storage.googleapis.com/charts
|
||||||
|
version: 1.26.2
|
||||||
|
- name: istiod
|
||||||
|
repository: https://istio-release.storage.googleapis.com/charts
|
||||||
|
version: 1.26.2
|
||||||
|
- name: gateway
|
||||||
|
repository: https://istio-release.storage.googleapis.com/charts
|
||||||
|
version: 1.26.2
|
||||||
14
dmz/istio-system/templates/annotate.yaml
Normal file
14
dmz/istio-system/templates/annotate.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: Namespace
|
||||||
|
#metadata:
|
||||||
|
# annotations:
|
||||||
|
# topology.istio.io/controlPlaneClusters: cluster1
|
||||||
|
# labels:
|
||||||
|
# kubernetes.io/metadata.name: istio-system
|
||||||
|
# name: istio-system
|
||||||
|
#spec:
|
||||||
|
# finalizers:
|
||||||
|
# - kubernetes
|
||||||
|
#status:
|
||||||
|
# phase: Active
|
||||||
|
#
|
||||||
16
dmz/istio-system/templates/expose.yaml
Normal file
16
dmz/istio-system/templates/expose.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: networking.istio.io/v1
|
||||||
|
kind: Gateway
|
||||||
|
metadata:
|
||||||
|
name: cross-network-gateway
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
istio: eastwestgateway
|
||||||
|
servers:
|
||||||
|
- port:
|
||||||
|
number: 15443
|
||||||
|
name: tls
|
||||||
|
protocol: TLS
|
||||||
|
tls:
|
||||||
|
mode: AUTO_PASSTHROUGH
|
||||||
|
hosts:
|
||||||
|
- "*.local"
|
||||||
10
dmz/istio-system/values.yaml
Normal file
10
dmz/istio-system/values.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
istiod:
|
||||||
|
global:
|
||||||
|
network: network2
|
||||||
|
meshID: mesh1
|
||||||
|
multiCluster:
|
||||||
|
clusterName: dmz
|
||||||
|
|
||||||
|
gateway:
|
||||||
|
name: istio-eastwestgateway
|
||||||
|
networkGateway: network2
|
||||||
0
dmz/littlelink/Chart.yaml
Normal file
0
dmz/littlelink/Chart.yaml
Normal file
101
dmz/littlelink/templates/deployment.yaml
Normal file
101
dmz/littlelink/templates/deployment.yaml
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: littlelink
|
||||||
|
name: littlelink
|
||||||
|
labels:
|
||||||
|
app: littlelink
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: littlelink
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: littlelink
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: littlelink
|
||||||
|
image: registry.durp.info/techno-tim/littlelink-server:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthcheck
|
||||||
|
port: 3000
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthcheck
|
||||||
|
port: 3000
|
||||||
|
env:
|
||||||
|
- name: META_TITLE
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: META_DESCRIPTION
|
||||||
|
value: The Durpy Developer
|
||||||
|
- name: META_AUTHOR
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: LANG
|
||||||
|
value: en
|
||||||
|
- name: META_INDEX_STATUS
|
||||||
|
value: all
|
||||||
|
- name: OG_TITLE
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: OG_DESCRIPTION
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: OG_URL
|
||||||
|
value: https://gitlab.com/developerdurp
|
||||||
|
- name: OG_IMAGE
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : OG_IMAGE_WIDTH
|
||||||
|
value: "400"
|
||||||
|
- name : OG_IMAGE_HEIGHT
|
||||||
|
value: "400"
|
||||||
|
- name : THEME
|
||||||
|
value: Dark
|
||||||
|
- name : FAVICON_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_2X_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_ALT
|
||||||
|
value: DeveloperDurp Profile Pic
|
||||||
|
- name : NAME
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name : BIO
|
||||||
|
value: Sup Nerd,
|
||||||
|
- name : BUTTON_ORDER
|
||||||
|
value: GITHUB,GITLAB,YOUTUBE,INSTAGRAM,TWITTER,BLUESKY,COFFEE,EMAIL
|
||||||
|
- name : TWITTER
|
||||||
|
value: https://twitter.com/developerdurp
|
||||||
|
- name : GITHUB
|
||||||
|
value: https://github.com/DeveloperDurp
|
||||||
|
- name: INSTAGRAM
|
||||||
|
value: https://instagram.com/developerdurp
|
||||||
|
- name : GITLAB
|
||||||
|
value: https://gitlab.com/developerdurp
|
||||||
|
- name: YOUTUBE
|
||||||
|
value: https://www.youtube.com/channel/UC1rGa6s6kER_gLpIQsxeMVQ
|
||||||
|
- name : EMAIL
|
||||||
|
value: DeveloperDurp@durp.info
|
||||||
|
- name : EMAIL_TEXT
|
||||||
|
value: DeveloperDurp@durp.info
|
||||||
|
- name : FOOTER
|
||||||
|
value: DeveloperDurp © 2022
|
||||||
|
- name: CUSTOM_BUTTON_TEXT
|
||||||
|
value: BuyMeACoffee,BlueSky
|
||||||
|
- name: CUSTOM_BUTTON_URL
|
||||||
|
value: https://www.buymeacoffee.com/DeveloperDurp,https://bsky.app/profile/durp.info
|
||||||
|
- name: CUSTOM_BUTTON_COLOR
|
||||||
|
value: '#ffdd00,#1185fe'
|
||||||
|
- name: CUSTOM_BUTTON_TEXT_COLOR
|
||||||
|
value: '#000000,#FFFFFF'
|
||||||
|
- name: CUSTOM_BUTTON_ALT_TEXT
|
||||||
|
value: Support,BlueSky
|
||||||
|
- name: CUSTOM_BUTTON_NAME
|
||||||
|
value: COFFEE,BLUESKY
|
||||||
|
- name: CUSTOM_BUTTON_ICON
|
||||||
|
value: fa-solid fa-cup-togo
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 3000
|
||||||
42
dmz/littlelink/templates/ingress.yaml
Normal file
42
dmz/littlelink/templates/ingress.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: littlelink-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`links.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: littlelink
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
secretName: littlelink-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: littlelink-tls
|
||||||
|
spec:
|
||||||
|
secretName: littlelink-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "links.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "links.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: links-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: links.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user