Compare commits
455 Commits
oauth2-pro
...
teedy-3.0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eaf501196 | ||
|
|
1a64e26400 | ||
|
|
461b727e3f | ||
|
|
8f35b43d38 | ||
|
|
134eaddf9a | ||
|
|
2b32f7ee83 | ||
|
|
dfceb6b41d | ||
|
|
f5aa0cb525 | ||
|
|
367853d6a6 | ||
|
|
5a17a2c1ec | ||
|
|
a69bef244c | ||
|
|
841b72482e | ||
|
|
8d34db1ead | ||
|
|
00ea6e06c3 | ||
|
|
f49a054d38 | ||
|
|
bb2432755e | ||
|
|
04da77a004 | ||
|
|
1335a5687e | ||
|
|
5f5b815cca | ||
|
|
e8734bef7c | ||
|
|
53f9166783 | ||
|
|
6c6bc95452 | ||
|
|
f81faa9219 | ||
|
|
11d18f1fe5 | ||
|
|
14c1ea96e3 | ||
|
|
9b04daa026 | ||
|
|
54074cc4a4 | ||
|
|
8eb2c6f8bd | ||
|
|
8b2a8b906c | ||
|
|
5119815aea | ||
|
|
060d27f9e7 | ||
|
|
76ca8d4fa3 | ||
|
|
959bdc6d6a | ||
|
|
5a0a792cc7 | ||
|
|
a5bdcad97b | ||
|
|
de46063893 | ||
|
|
70ea338e4e | ||
|
|
abf2d3b857 | ||
|
|
5b57026d00 | ||
|
|
d6fadad88f | ||
|
|
ddc9693916 | ||
|
|
6283f771be | ||
|
|
802ee07407 | ||
|
|
6a48d3fdb0 | ||
|
|
4a02be7d10 | ||
|
|
837f1c396e | ||
|
|
1b751c7d3e | ||
|
|
b191930b0c | ||
|
|
7b746e514d | ||
|
|
f6f548e7fb | ||
|
|
ab6cbbb1b0 | ||
|
|
194990c6c0 | ||
|
|
761d9996f6 | ||
|
|
e238de9de2 | ||
|
|
b648e8cddc | ||
|
|
8993e6d60b | ||
|
|
beaf1d697a | ||
|
|
41841cd579 | ||
|
|
47f775ff1d | ||
|
|
a4b9ef649d | ||
|
|
4b23411778 | ||
|
|
6b0324f3bf | ||
|
|
d4f05ae10d | ||
|
|
8acb00bd4c | ||
|
|
a4b0adde3b | ||
|
|
8f45bca459 | ||
|
|
a032abb1a6 | ||
|
|
5e98e3c4c5 | ||
|
|
c5a3fc36a0 | ||
|
|
a7bb41b467 | ||
|
|
f93046f40f | ||
|
|
97b2477fba | ||
|
|
99b4b09bac | ||
|
|
09b5b565b2 | ||
|
|
2e29840788 | ||
|
|
18966b01ab | ||
|
|
ba978447bf | ||
|
|
201652581c | ||
|
|
ceeab47aa6 | ||
|
|
48c20bd85e | ||
|
|
0129518222 | ||
|
|
5e47a7c1df | ||
|
|
c2065fba97 | ||
|
|
2336f09bf8 | ||
|
|
bd76ee081d | ||
|
|
519d381a25 | ||
|
|
c46d2dc089 | ||
|
|
4d7c76e021 | ||
|
|
56b6d69af7 | ||
|
|
edf7b69ca6 | ||
|
|
87863db2ca | ||
|
|
1676ddfb6b | ||
|
|
aa0786fcc8 | ||
|
|
207c6de178 | ||
|
|
e6dfc81f58 | ||
|
|
3dfb279101 | ||
|
|
4dca3dd1b5 | ||
|
|
b3f339dd77 | ||
|
|
22b8975741 | ||
|
|
628d8df6f4 | ||
|
|
d9f263e2ee | ||
|
|
9e4fd47bf8 | ||
|
|
fd53494429 | ||
|
|
d3e72ba792 | ||
|
|
911ad95340 | ||
|
|
1e36d19870 | ||
|
|
bf0126122c | ||
|
|
b85e9b4827 | ||
|
|
9c29315c83 | ||
|
|
32af5c7326 | ||
|
|
248d6027e6 | ||
|
|
1657c203d8 | ||
|
|
181f294aee | ||
|
|
5ba6779f0e | ||
|
|
94315f07b2 | ||
|
|
d81c4b586f | ||
|
|
a4b4eee806 | ||
|
|
bb810f947a | ||
|
|
951cdba374 | ||
|
|
d297f8b474 | ||
|
|
777c2ebcf3 | ||
|
|
edf66a746e | ||
|
|
84120a2a65 | ||
|
|
c0cbc83eaf | ||
|
|
ebfef9e0f8 | ||
|
|
b17621cf73 | ||
|
|
896f9dd5b7 | ||
|
|
11ef99d20a | ||
|
|
1c7d6d403e | ||
|
|
a32e94cfca | ||
|
|
91729b6b53 | ||
|
|
8b932311c1 | ||
|
|
a6edab35b7 | ||
|
|
8c5ade2b2b | ||
|
|
a9218cd798 | ||
|
|
f43d3ab7e7 | ||
|
|
607fb8a01d | ||
|
|
15eb4e4e2b | ||
|
|
974de8e654 | ||
|
|
711b2f332d | ||
|
|
cef461b7f2 | ||
|
|
3d64b1c07a | ||
|
|
a5cd196a7f | ||
|
|
94bf122994 | ||
|
|
97de7b430d | ||
|
|
3bd8295151 | ||
|
|
38efefa16b | ||
|
|
c522152e20 | ||
|
|
beee21811a | ||
|
|
1775d51d22 | ||
|
|
a52f214568 | ||
|
|
269e6e6539 | ||
|
|
a885f84f21 | ||
|
|
dca725c103 | ||
|
|
8dcc5b95ca | ||
|
|
a6044906b8 | ||
|
|
acfb645810 | ||
|
|
34bbd3e3da | ||
|
|
5e86ce93b7 | ||
|
|
1549e9056f | ||
|
|
efcde7f81b | ||
|
|
fc49382e94 | ||
|
|
7fc6b440e6 | ||
|
|
5e4e7e8143 | ||
|
|
bbaaeb619f | ||
|
|
7082ae2789 | ||
|
|
14573b6a24 | ||
|
|
5d1fa55b9c | ||
|
|
cb1d6b70dc | ||
|
|
667951e6e6 | ||
|
|
4c9639d125 | ||
|
|
31dfcaa92b | ||
|
|
f319611b09 | ||
|
|
e928c2a4bd | ||
|
|
8a5bd34f6a | ||
|
|
af7c2fcfe8 | ||
|
|
7f01d91432 | ||
|
|
36dd871e05 | ||
|
|
d7040bcd89 | ||
|
|
0dbcd6c6e9 | ||
|
|
cceecb36fb | ||
|
|
3941849ffe | ||
|
|
f26c398dc0 | ||
|
|
e463c24309 | ||
|
|
79a6e784ed | ||
|
|
f004996c56 | ||
|
|
adf03889a4 | ||
|
|
72f2dedacd | ||
|
|
9749081d70 | ||
|
|
61028541f1 | ||
|
|
28118894f7 | ||
|
|
27b095e12d | ||
|
|
ebd7aa6f0c | ||
|
|
bb34df9273 | ||
|
|
871d50ebd5 | ||
|
|
8bf006814a | ||
|
|
bf0ec02b1e | ||
|
|
eeba9db503 | ||
|
|
17d0825d3e | ||
|
|
52561bd15d | ||
|
|
311c9c35bb | ||
|
|
d3679c6d39 | ||
|
|
77ea057807 | ||
|
|
5e9124b1db | ||
|
|
b4e3d966aa | ||
|
|
423c8b00dc | ||
|
|
fa10413661 | ||
|
|
1193908f6d | ||
|
|
554ecb81c9 | ||
|
|
3d467a1779 | ||
|
|
e0ce54f4f3 | ||
|
|
323a2bc496 | ||
|
|
1e46b5c7d6 | ||
|
|
aa45228a8d | ||
|
|
157e898ed0 | ||
|
|
0e6c5c3617 | ||
|
|
144350e4c9 | ||
|
|
1d0cce4146 | ||
|
|
7358653626 | ||
|
|
b290bcd0a1 | ||
|
|
33b54fc068 | ||
|
|
c7d19f3439 | ||
|
|
2cd8ee95b3 | ||
|
|
59cfa8911d | ||
|
|
80b63716e7 | ||
|
|
de9e78afa8 | ||
|
|
fa594708c5 | ||
|
|
afe95bbb01 | ||
|
|
d198281248 | ||
|
|
e3d6d55d0f | ||
|
|
3288c87a4e | ||
|
|
5521e92c2b | ||
|
|
9b9796004a | ||
|
|
3260bd1bc3 | ||
|
|
e0fa776b45 | ||
|
|
cbbc76c340 | ||
|
|
2c572d2e94 | ||
|
|
b0d6043893 | ||
|
|
1252387702 | ||
|
|
d7b0ad55f3 | ||
|
|
a265546c22 | ||
|
|
49de00be1a | ||
|
|
b74f570b93 | ||
|
|
07aa2b4c51 | ||
|
|
c0b2c6dad6 | ||
|
|
3ee1714fab | ||
|
|
f1b3fbcfba | ||
|
|
22ed86b73e | ||
|
|
52778133b7 | ||
|
|
82a1eab1ca | ||
|
|
0bd29e4c6d | ||
|
|
cd54aa7fad | ||
|
|
df18109726 | ||
|
|
6a76a306f7 | ||
|
|
39fbc31cc2 | ||
|
|
2f9a11e56b | ||
|
|
6681145be2 | ||
|
|
7e144c6fcd | ||
|
|
a503b0441a | ||
|
|
57f4f5d7bf | ||
|
|
ee918dd6d0 | ||
|
|
b74ab67e83 | ||
|
|
c25b86e556 | ||
|
|
5c191a5cb1 | ||
|
|
bbd78319e9 | ||
|
|
56d8ab7c2a | ||
|
|
7114c2b43f | ||
|
|
69152b0916 | ||
|
|
3b257c68ab | ||
|
|
aeffff5297 | ||
|
|
efe9b16ee5 | ||
|
|
544b55d404 | ||
|
|
d058965386 | ||
|
|
2aba1913af | ||
|
|
ce4d7354fc | ||
|
|
dc12dfb58b | ||
|
|
55349cfefa | ||
|
|
bd9da3d19b | ||
|
|
92c2ac30f0 | ||
|
|
09dafb221f | ||
|
|
80b9e0bc8e | ||
|
|
82f1a1669e | ||
|
|
9aa9d8e7fa | ||
|
|
b3605d0d07 | ||
|
|
51639eb32b | ||
|
|
aa3a17a393 | ||
|
|
e7926410f0 | ||
|
|
6fc87ed2cf | ||
|
|
9fbf7ad1ee | ||
|
|
3a0c0c602e | ||
|
|
b38ccc5fa9 | ||
|
|
5332115b8a | ||
|
|
c4542903cf | ||
|
|
0e4e12443a | ||
|
|
6d3bf5c29c | ||
|
|
42cbc413e5 | ||
|
|
dfa64cd384 | ||
|
|
86398885ea | ||
|
|
788d1056d3 | ||
|
|
436bcfdd67 | ||
|
|
786f52ee22 | ||
|
|
b91b73ad0f | ||
|
|
863dc3e33b | ||
|
|
a8e4b5b52e | ||
|
|
349ab68ea1 | ||
|
|
0a8a18c080 | ||
|
|
0dc89e6ebf | ||
|
|
902954dff5 | ||
|
|
a75e75f2b5 | ||
|
|
731b70fd98 | ||
|
|
b928e1ea44 | ||
|
|
61dbea3bad | ||
|
|
1aa31e3bd9 | ||
|
|
b974051a0a | ||
|
|
da761a5c4c | ||
|
|
a968ee3082 | ||
|
|
ea2b63d930 | ||
|
|
c139284fc3 | ||
|
|
5bb1c5242d | ||
|
|
11e76c9f15 | ||
|
|
66d14d9d7d | ||
|
|
43fe354c35 | ||
|
|
9604ece2a5 | ||
|
|
f051bb16cf | ||
|
|
166c4b3cd9 | ||
|
|
351d46296f | ||
|
|
601341ca9b | ||
|
|
39f3555873 | ||
|
|
44fbca1fb8 | ||
|
|
6ad3ba062a | ||
|
|
ab9a0fda18 | ||
|
|
0a3e9eb93c | ||
|
|
7801f2e626 | ||
|
|
fe64832570 | ||
|
|
0099a56e38 | ||
|
|
cfec6a9cc2 | ||
|
|
13dedb876b | ||
|
|
d0fba6f031 | ||
|
|
d310100ce7 | ||
|
|
c2d6c1c4f1 | ||
|
|
9e2a21995a | ||
|
|
643db3e8cb | ||
|
|
6822d3c4b4 | ||
|
|
df1a3f48e0 | ||
|
|
6cf224d0b0 | ||
|
|
bca5078de2 | ||
|
|
31e992eb4a | ||
|
|
a4c913aef6 | ||
|
|
d4dd34a24b | ||
|
|
19cb90701e | ||
|
|
f0eb5542a4 | ||
|
|
f2336eedaa | ||
|
|
915c94887d | ||
|
|
f84ac3006b | ||
|
|
dde8baec08 | ||
|
|
f2452edfb9 | ||
|
|
db1260e482 | ||
|
|
b1859c895d | ||
|
|
fed0c7a8f1 | ||
|
|
40e3179aaf | ||
|
|
535f78770f | ||
|
|
645f8d4c6e | ||
|
|
7f326fc846 | ||
|
|
df26482e05 | ||
|
|
07fa996d70 | ||
|
|
2a441c9315 | ||
|
|
a16d5ef3a6 | ||
|
|
55c30ff34c | ||
|
|
3281996a22 | ||
|
|
5ebaccedb3 | ||
|
|
111c993fea | ||
|
|
95a84496db | ||
|
|
cba3f59391 | ||
|
|
9d0a7efc7d | ||
|
|
d0bad9dfb0 | ||
|
|
67eed62c99 | ||
|
|
ae38a94541 | ||
|
|
40a2bb2d26 | ||
|
|
fa75854137 | ||
|
|
c379eb9efd | ||
|
|
5b64342920 | ||
|
|
ab746638e8 | ||
|
|
643d60fed7 | ||
|
|
d5377e032d | ||
|
|
d6e87293c1 | ||
|
|
5ae5ab007d | ||
|
|
a077a803d4 | ||
|
|
45b6282a15 | ||
|
|
e6a9d994f9 | ||
|
|
e94ef45b70 | ||
|
|
86907798e0 | ||
|
|
1218e56529 | ||
|
|
902574734b | ||
|
|
f276356baa | ||
|
|
2fdce70485 | ||
|
|
56b03ff1f1 | ||
|
|
6c1e3f0e23 | ||
|
|
25e129b57c | ||
|
|
e0bae04364 | ||
|
|
03473ff13f | ||
|
|
a024f2c9b4 | ||
|
|
9a43343d0e | ||
|
|
ec4525d0c1 | ||
|
|
85a391e902 | ||
|
|
e301c08620 | ||
|
|
429db07f64 | ||
|
|
6a281a2828 | ||
|
|
d021b87405 | ||
|
|
6174dfc8ef | ||
|
|
5e9897d8cc | ||
|
|
819e3a6fce | ||
|
|
b278fc51b5 | ||
|
|
94521bcdda | ||
|
|
fa5cc7171c | ||
|
|
58af006816 | ||
|
|
fba5edf834 | ||
|
|
250d308995 | ||
|
|
dc90788f78 | ||
|
|
e93bf613f1 | ||
|
|
5edd9b8b00 | ||
|
|
70990295db | ||
|
|
66feb4ca7e | ||
|
|
693902005a | ||
|
|
10ac770b40 | ||
|
|
8d6ec42996 | ||
|
|
2632a248a4 | ||
|
|
c78292c8e7 | ||
|
|
226c0d19c1 | ||
|
|
c46da9968d | ||
|
|
0bf211c8e9 | ||
|
|
4ef7b2b312 | ||
|
|
1d5b7ff5bf | ||
|
|
7fc5825da9 | ||
|
|
e621f470f5 | ||
|
|
23f9c09612 | ||
|
|
5a1ae94997 | ||
|
|
415f618e2b | ||
|
|
118ed4cc26 | ||
|
|
3b0b096427 | ||
|
|
a05b836cd1 | ||
|
|
1355fc9a06 | ||
|
|
60f85c84eb | ||
|
|
f4a926a7ee | ||
|
|
1902db60b9 | ||
|
|
eb7cfe789e | ||
|
|
ff1b01b296 | ||
|
|
0c99fb1339 | ||
|
|
8bc2923281 | ||
|
|
5f17e040e8 | ||
|
|
158674fc45 | ||
|
|
8a2859285c | ||
|
|
79e40ecd76 | ||
|
|
e3c38e70eb | ||
|
|
c4ba55abe2 | ||
|
|
0c6be064e3 |
96
.all-contributorsrc
Normal file
96
.all-contributorsrc
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"files": [
|
||||
"README.md"
|
||||
],
|
||||
"imageSize": 100,
|
||||
"commit": false,
|
||||
"contributors": [
|
||||
{
|
||||
"login": "devfaz",
|
||||
"name": "Fabian Zimmermann",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4060372?v=4",
|
||||
"profile": "https://github.com/devfaz",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "angelnu",
|
||||
"name": "Vegetto",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4406403?v=4",
|
||||
"profile": "https://github.com/angelnu",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "trly",
|
||||
"name": "Travis Lyons",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/212733?v=4",
|
||||
"profile": "https://github.com/trly",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "bjw-s",
|
||||
"name": "Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/6213398?v=4",
|
||||
"profile": "https://github.com/bjw-s",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Ornias1993",
|
||||
"name": "Kjeld Schouten-Lebbing",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/7613738?v=4",
|
||||
"profile": "http://schouten-lebbing.nl",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "rolfberkenbosch",
|
||||
"name": "Rolf Berkenbosch",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/30292281?v=4",
|
||||
"profile": "https://www.meetup.com/nl-NL/I-I-Inspiratie-Innovatie/",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "auricom",
|
||||
"name": "auricom",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/27022259?v=4",
|
||||
"profile": "https://github.com/auricom",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "acjohnson",
|
||||
"name": "Aaron Johnson",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1386238?v=4",
|
||||
"profile": "http://aaronjohnson.io",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "brujoand",
|
||||
"name": "Anders Brujordet",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/124421?v=4",
|
||||
"profile": "https://github.com/brujoand",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
"projectName": "charts",
|
||||
"projectOwner": "k8s-at-home",
|
||||
"repoType": "github",
|
||||
"repoHost": "https://github.com",
|
||||
"skipCi": true
|
||||
}
|
||||
26
.devcontainer/Dockerfile
Normal file
26
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
||||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.154.0/containers/ruby/.devcontainer/base.Dockerfile
|
||||
|
||||
# [Choice] Ruby version: 2, 2.7, 2.6, 2.5
|
||||
ARG VARIANT="2"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT}
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
COPY Gemfile /tmp/Gemfile
|
||||
|
||||
RUN \
|
||||
apt-get update \
|
||||
&& \
|
||||
apt-get -y install --no-install-recommends \
|
||||
jq \
|
||||
libjq-dev \
|
||||
libonig-dev \
|
||||
gnupg2 \
|
||||
&& \
|
||||
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin \
|
||||
&& \
|
||||
curl -fsSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | /bin/bash - \
|
||||
&& \
|
||||
bundle config set system 'true' \
|
||||
&& bundle install --gemfile /tmp/Gemfile \
|
||||
&& rm /tmp/Gemfile
|
||||
33
.devcontainer/devcontainer.json
Normal file
33
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,33 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.154.0/containers/ruby
|
||||
{
|
||||
"name": "Ruby",
|
||||
"build": {
|
||||
"context": "..",
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
// Update 'VARIANT' to pick a Ruby version: 2, 2.7, 2.6, 2.5
|
||||
"VARIANT": "2.7",
|
||||
}
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"ms-kubernetes-tools.vscode-kubernetes-tools",
|
||||
"rebornix.Ruby"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "export RUBYJQ_USE_SYSTEM_LIBRARIES=1 && bundle install",
|
||||
|
||||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode"
|
||||
}
|
||||
2
.github/CODEOWNERS
vendored
Normal file
2
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||
* @onedr0p @bjw-s @billimek @carpenike
|
||||
36
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
36
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: kind:bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# Details
|
||||
|
||||
**Helm chart name and version:**
|
||||
|
||||
<!-- Note: This should be the helm chart name and version you have deployed. e.g. jackett 5.4.0 -->
|
||||
|
||||
**Container name and tag:**
|
||||
|
||||
<!-- Note: This should be the container image version you have deployed. e.g. linuxserver/jackett:v0.16.2106 -->
|
||||
|
||||
**What steps did you take and what happened:**
|
||||
|
||||
<!-- Note: This should be a clear and concise description of what the bug is. -->
|
||||
|
||||
**Relevant Helm values:**
|
||||
|
||||
<!-- Note: Please include a snippet of the relevant values in (or a Pastebin/similar link to) your values.yaml. -->
|
||||
|
||||
**What did you expect to happen:**
|
||||
|
||||
**Anything else you would like to add:**
|
||||
|
||||
<!-- Note: Miscellaneous information that will assist in solving the issue. -->
|
||||
|
||||
**Additional Information:**
|
||||
|
||||
<!-- Note: Anything to give further context to the bug report. -->
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discuss on Discord
|
||||
url: https://discord.com/invite/sTMX7Vh
|
||||
about: Join our Discord community
|
||||
- name: Ask a question
|
||||
url: https://github.com/k8s-at-home/organization/discussions
|
||||
about: Please ask and answer questions here.
|
||||
26
.github/ISSUE_TEMPLATE/enhancement.md
vendored
Normal file
26
.github/ISSUE_TEMPLATE/enhancement.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: kind:enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# Details
|
||||
|
||||
**Helm chart name:**
|
||||
|
||||
<!-- Note: This should be the helm chart name you are referring to. e.g. jackett -->
|
||||
|
||||
**Describe the solution you'd like:**
|
||||
|
||||
<!-- Note: A clear and concise description of what you want to happen. -->
|
||||
|
||||
**Anything else you would like to add:**
|
||||
|
||||
<!-- Note: Miscellaneous information that will assist in solving the issue. -->
|
||||
|
||||
**Additional Information:**
|
||||
|
||||
<!-- Note: Anything to give further context to the requested new feature. -->
|
||||
19
.github/PAUL.yaml
vendored
Normal file
19
.github/PAUL.yaml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
maintainers:
|
||||
- billimek
|
||||
- bjw-s
|
||||
- carpenike
|
||||
- onedr0p
|
||||
labels: true
|
||||
empty_description_check:
|
||||
enabled: true
|
||||
enforced: false
|
||||
branch_destroyer:
|
||||
enabled: true
|
||||
protected_branches:
|
||||
- master
|
||||
- gh-pages
|
||||
pull_requests:
|
||||
automated_merge: false
|
||||
cats_enabled: true
|
||||
dogs_enabled: true
|
||||
allow_approval: true
|
||||
45
.github/PULL_REQUEST_TEMPLATE.md
vendored
45
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,7 +1,40 @@
|
||||
#### Special notes for your reviewer:
|
||||
<!--
|
||||
Before you open the request please review the following guidelines and tips to help it be more easily integrated:
|
||||
|
||||
#### Checklist
|
||||
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]
|
||||
- [ ] Chart Version bumped
|
||||
- [ ] Variables are documented in the README.md
|
||||
- [ ] Title of the PR starts with chart name (e.g. `[radarr]`)
|
||||
- Describe the scope of your change - i.e. what the change does.
|
||||
- Describe any known limitations with your change.
|
||||
- Please run any tests or examples that can exercise your modified code.
|
||||
|
||||
Thank you for contributing! We will try to test and integrate the change as soon as we can. There is no need to bump or check in on a pull request (it will clutter the discussion of the request).
|
||||
|
||||
Also don't be worried if the request is closed or not integrated sometimes our priorities might not match the priorities of the pull request. Don't fret, the open source community thrives on forks and GitHub makes it easy to keep your changes in a forked repo.
|
||||
-->
|
||||
|
||||
**Description of the change**
|
||||
|
||||
<!-- Describe the scope of your change - i.e. what the change does. -->
|
||||
|
||||
**Benefits**
|
||||
|
||||
<!-- What benefits will be realized by the code change? -->
|
||||
|
||||
**Possible drawbacks**
|
||||
|
||||
<!-- Describe any known limitations with your change -->
|
||||
|
||||
**Applicable issues**
|
||||
|
||||
<!-- Enter any applicable Issues here (You can reference an issue using #) -->
|
||||
- fixes #
|
||||
|
||||
**Additional information**
|
||||
|
||||
<!-- If there's anything else that's important and relevant to your pull request, mention that information here.-->
|
||||
|
||||
**Checklist** <!-- [Place an '[X]' (no spaces) in all applicable fields. Please remove unrelated fields.] -->
|
||||
- [ ] Chart version bumped in `Chart.yaml` according to [semver](http://semver.org/).
|
||||
- [ ] Title of the PR starts with chart name (e.g. `[home-assistant]`)
|
||||
- [ ] (optional) Chart is using our [common](https://github.com/k8s-at-home/charts/tree/master/charts/common) library as a dependency.
|
||||
- [ ] (optional) Variables are documented in the README.md
|
||||
|
||||
<!-- Keep in mind that if you are submitting a new chart, try to use our [common](https://github.com/k8s-at-home/charts/tree/master/charts/common) library as a dependency. This will help maintaining charts here and keep them consistent between each other -->
|
||||
|
||||
15
.github/ct-install.yaml
vendored
Normal file
15
.github/ct-install.yaml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
remote: origin
|
||||
target-branch: master
|
||||
helm-extra-args: --timeout 600s
|
||||
chart-dirs:
|
||||
- charts/incubator
|
||||
- charts/stable
|
||||
excluded-charts:
|
||||
- charts/stable/alertmanager-bot
|
||||
- charts/stable/dnsmadeeasy-webhook
|
||||
- charts/stable/ser2sock
|
||||
- charts/stable/zigbee2mqtt
|
||||
chart-repos:
|
||||
- bitnami=https://charts.bitnami.com/bitnami
|
||||
- k8s-at-home-libraries=https://library-charts.k8s-at-home.com
|
||||
- k8s-at-home=https://k8s-at-home.com/charts
|
||||
11
.github/ct-lint.yaml
vendored
Normal file
11
.github/ct-lint.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
remote: origin
|
||||
target-branch: master
|
||||
helm-extra-args: --timeout 600s
|
||||
chart-dirs:
|
||||
- charts/incubator
|
||||
- charts/stable
|
||||
excluded-charts:
|
||||
chart-repos:
|
||||
- bitnami=https://charts.bitnami.com/bitnami
|
||||
- k8s-at-home-libraries=https://library-charts.k8s-at-home.com
|
||||
- k8s-at-home=https://k8s-at-home.com/charts
|
||||
84
.github/renovate.json5
vendored
Normal file
84
.github/renovate.json5
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"dependencyDashboard": true,
|
||||
"dependencyDashboardTitle": "Renovate Dashboard",
|
||||
"assigneesFromCodeOwners": true,
|
||||
"reviewersFromCodeOwners": true,
|
||||
"suppressNotifications": ["prIgnoreNotification"],
|
||||
"rebaseWhen": "conflicted",
|
||||
"prConcurrentLimit": 5,
|
||||
"helm-values": {
|
||||
"enabled": false
|
||||
},
|
||||
"helmv3": {
|
||||
"fileMatch": ["charts/.+/Chart\\.yaml$"]
|
||||
},
|
||||
"packageRules": [
|
||||
// Setup datasources
|
||||
{
|
||||
"datasources": ["helm"],
|
||||
"commitMessageTopic": "Helm chart {{depName}}",
|
||||
"separateMinorPatch": true
|
||||
},
|
||||
//
|
||||
// Common library dep
|
||||
//
|
||||
{
|
||||
"commitMessagePrefix": "[{{{parentDir}}}]",
|
||||
"branchTopic": "{{{parentDir}}}-{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
|
||||
"updateTypes": ["major"],
|
||||
"bumpVersion": "major",
|
||||
"labels": ["dependency/major"],
|
||||
"packageNames": ["common"],
|
||||
"groupName": ["internal major dep"]
|
||||
},
|
||||
{
|
||||
"updateTypes": ["minor"],
|
||||
"bumpVersion": "minor",
|
||||
"labels": ["dependency/minor"],
|
||||
"packageNames": ["common"],
|
||||
"groupName": ["internal minor dep"]
|
||||
},
|
||||
{
|
||||
"updateTypes": ["patch"],
|
||||
"bumpVersion": "patch",
|
||||
"labels": ["dependency/patch"],
|
||||
"packageNames": ["common"],
|
||||
"groupName": ["internal patch dep"]
|
||||
},
|
||||
//
|
||||
// Other library deps
|
||||
//
|
||||
{
|
||||
"commitMessagePrefix": "[{{{parentDir}}}]",
|
||||
"branchTopic": "{{{parentDir}}}-{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
|
||||
"updateTypes": ["major"],
|
||||
"bumpVersion": "major",
|
||||
"labels": ["dependency/major"],
|
||||
"excludePackageNames": ["common"],
|
||||
"schedule": [
|
||||
"every 3 months on the first day of the month"
|
||||
]
|
||||
},
|
||||
{
|
||||
"updateTypes": ["minor"],
|
||||
"bumpVersion": "minor",
|
||||
"labels": ["dependency/minor"],
|
||||
"excludePackageNames": ["common"],
|
||||
"groupName": ["external minor dep"],
|
||||
"schedule": [
|
||||
"every 2 months on the first day of the month"
|
||||
]
|
||||
},
|
||||
{
|
||||
"updateTypes": ["patch"],
|
||||
"bumpVersion": "patch",
|
||||
"labels": ["dependency/patch"],
|
||||
"excludePackageNames": ["common"],
|
||||
"groupName": ["external patch dep"],
|
||||
"schedule": [
|
||||
"every 1 months on the first day of the month"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
32
.github/stale.yml
vendored
Normal file
32
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 45
|
||||
|
||||
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
||||
daysUntilClose: 5
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- on-hold
|
||||
- pinned
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
issues:
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This Issue has been automatically marked as "stale" because it has not had recent activity (for 45 days). It will be closed if no further activity occurs. Thanks for the feedback.
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: >
|
||||
Due to the lack of activity in the last 5 days since it was marked as "stale", we proceed to close this Issue. Do not hesitate to reopen it later if necessary.
|
||||
pulls:
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This Pull Request has been automatically marked as "stale" because it has not had recent activity (for 45 days). It will be closed if no further activity occurs. Thank you for your contribution.
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: >
|
||||
Due to the lack of activity in the last 5 days since it was marked as "stale", we proceed to close this Pull Request. Do not hesitate to reopen it later if necessary.
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
52
.github/workflows/charts-helm-docs.yaml.disabled
vendored
Normal file
52
.github/workflows/charts-helm-docs.yaml.disabled
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# Disabled until we fix the chart releaser
|
||||
#
|
||||
|
||||
# name: "Charts: helm-docs"
|
||||
|
||||
# on:
|
||||
# workflow_dispatch:
|
||||
# schedule:
|
||||
# - cron: "0 0 * * *"
|
||||
|
||||
# jobs:
|
||||
# update-helm-docs:
|
||||
# runs-on: ubuntu-20.04
|
||||
# steps:
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v2
|
||||
# with:
|
||||
# fetch-depth: 0
|
||||
|
||||
# - name: Install Helm
|
||||
# uses: azure/setup-helm@v1
|
||||
# with:
|
||||
# version: v3.5.3
|
||||
|
||||
# - uses: actions/setup-python@v2
|
||||
# with:
|
||||
# python-version: 3.7
|
||||
|
||||
# - name: Install helm-docs
|
||||
# run: |
|
||||
# wget -O /tmp/helm-docs.deb https://github.com/norwoodj/helm-docs/releases/download/v1.5.0/helm-docs_1.5.0_linux_amd64.deb
|
||||
# sudo dpkg -i /tmp/helm-docs.deb
|
||||
|
||||
# - name: Update Helm docs
|
||||
# run: |
|
||||
# ./hack/gen-helm-docs.sh
|
||||
|
||||
# - name: Create pull request for helm-docs
|
||||
# uses: peter-evans/create-pull-request@v3
|
||||
# with:
|
||||
# token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# branch: "helm-docs/ci"
|
||||
# delete-branch: true
|
||||
# title: "chore(docs): update helm-docs [ci-skip]"
|
||||
# signoff: true
|
||||
# committer: "${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>"
|
||||
# author: "${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>"
|
||||
# commit-message: "chore(docs): update helm-docs [ci-skip]"
|
||||
# body: |
|
||||
# Signed-off-by: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
|
||||
# labels: helm-docs
|
||||
259
.github/workflows/charts-lint-test.yaml
vendored
Normal file
259
.github/workflows/charts-lint-test.yaml
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
name: "Charts: Lint and test"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'charts/**'
|
||||
- '!charts/**/README.md'
|
||||
- '!charts/**/README.md.gotmpl'
|
||||
- '!charts/**/README_CHANGELOG.md.gotmpl'
|
||||
- '!charts/**/README_CONFIG.md.gotmpl'
|
||||
|
||||
jobs:
|
||||
changes-lint:
|
||||
if: "!contains(github.event.head_commit.message, '[ci-skip]')"
|
||||
name: Detect changes for linting
|
||||
runs-on: ubuntu-20.04
|
||||
outputs:
|
||||
matrix: |
|
||||
{
|
||||
"chart": ${{ steps.list-changed.outputs.charts }}
|
||||
}
|
||||
detected: ${{ steps.list-changed.outputs.detected }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
|
||||
- name: Install Dev tools
|
||||
run: |
|
||||
sudo wget https://github.com/mikefarah/yq/releases/download/v4.2.0/yq_linux_amd64 -O /usr/bin/yq
|
||||
sudo chmod +x /usr/bin/yq
|
||||
|
||||
- name: Run chart-testing (list-changed)
|
||||
id: list-changed
|
||||
run: |
|
||||
EXCLUDED=$(yq eval -j '.excluded-charts // []' .github/ct-lint.yaml)
|
||||
CHARTS=$(ct list-changed --config .github/ct-lint.yaml)
|
||||
CHARTS_JSON=$(echo "${CHARTS}" | jq -R -s -c 'split("\n")[:-1]')
|
||||
OUTPUT_JSON=$(echo "{\"excluded\": ${EXCLUDED}, \"all\": ${CHARTS_JSON}}" | jq -c '.all-.excluded')
|
||||
echo ::set-output name=charts::${OUTPUT_JSON}
|
||||
if [[ $(echo ${OUTPUT_JSON} | jq -c '. | length') -gt 0 ]]; then
|
||||
echo "::set-output name=detected::true"
|
||||
fi
|
||||
|
||||
changes-install:
|
||||
if: "!contains(github.event.head_commit.message, '[ci-skip]')"
|
||||
name: Detect changes for install
|
||||
runs-on: ubuntu-20.04
|
||||
outputs:
|
||||
matrix: |
|
||||
{
|
||||
"chart": ${{ steps.list-changed.outputs.charts }}
|
||||
}
|
||||
detected: ${{ steps.list-changed.outputs.detected }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
|
||||
- name: Install Dev tools
|
||||
run: |
|
||||
sudo wget https://github.com/mikefarah/yq/releases/download/v4.2.0/yq_linux_amd64 -O /usr/bin/yq
|
||||
sudo chmod +x /usr/bin/yq
|
||||
|
||||
- name: Run chart-testing (list-changed)
|
||||
id: list-changed
|
||||
run: |
|
||||
EXCLUDED=$(yq eval -j '.excluded-charts // []' .github/ct-install.yaml)
|
||||
CHARTS=$(ct list-changed --config .github/ct-install.yaml)
|
||||
CHARTS_JSON=$(echo "${CHARTS}" | jq -R -s -c 'split("\n")[:-1]')
|
||||
OUTPUT_JSON=$(echo "{\"excluded\": ${EXCLUDED}, \"all\": ${CHARTS_JSON}}" | jq -c '.all-.excluded')
|
||||
echo ::set-output name=charts::${OUTPUT_JSON}
|
||||
if [[ $(echo ${OUTPUT_JSON} | jq -c '. | length') -gt 0 ]]; then
|
||||
echo "::set-output name=detected::true"
|
||||
fi
|
||||
|
||||
lint:
|
||||
needs:
|
||||
- changes-lint
|
||||
if: |
|
||||
!contains(github.event.head_commit.message, '[ci-skip]')
|
||||
&&
|
||||
needs.changes-lint.outputs.detected == 'true'
|
||||
name: Lint charts
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.changes-lint.outputs.matrix) }}
|
||||
fail-fast: true
|
||||
max-parallel: 15
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v1
|
||||
with:
|
||||
version: v3.5.3
|
||||
|
||||
- name: Get version
|
||||
id: version-get
|
||||
run: |
|
||||
shopt -s extglob
|
||||
OUTPUT=$(helm inspect chart ${{ matrix.chart }} | grep "^version:")
|
||||
VERSION=${OUTPUT#"version:"}
|
||||
echo "::set-output name=version::${VERSION##*( )}"
|
||||
shopt -u extglob
|
||||
|
||||
- name: Parse version
|
||||
id: version-parse
|
||||
uses: apexskier/github-semver-parse@v1
|
||||
with:
|
||||
version: ${{ steps.version-get.outputs.version }}
|
||||
|
||||
- name: Check version
|
||||
id: version-check
|
||||
run: |
|
||||
if [[ ${{ matrix.chart }} =~ ^charts\/(.*)\/.* ]]; then
|
||||
TYPE="${BASH_REMATCH[1]}"
|
||||
case $TYPE in
|
||||
stable)
|
||||
if [[ ${{ steps.version-parse.outputs.major }} -lt 1 ]]; then
|
||||
echo "Chart version for \"$TYPE\" charts must be >= 1.0.0"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
incubator)
|
||||
if [[ ${{ steps.version-parse.outputs.major }} -gt 0 ]]; then
|
||||
echo "Chart version for \"$TYPE\" charts must be < 1.0.0"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unhandled chart type: $TYPE"
|
||||
exit 1
|
||||
esac
|
||||
fi
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.7
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
|
||||
- name: Run chart-testing (lint)
|
||||
id: lint
|
||||
run: ct lint --config .github/ct-lint.yaml --charts ${{ matrix.chart }}
|
||||
|
||||
# Summarize matrix https://github.community/t/status-check-for-a-matrix-jobs/127354/7
|
||||
lint_success:
|
||||
needs:
|
||||
- lint
|
||||
if: ${{ always() }}
|
||||
name: Lint successful
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Check lint matrix status
|
||||
if: ${{ needs.lint.result != 'success' }}
|
||||
run: exit 1
|
||||
|
||||
unittest:
|
||||
needs:
|
||||
- lint_success
|
||||
if: |
|
||||
!contains(github.event.head_commit.message, '[ci-skip]')
|
||||
name: Run unit tests
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Dev tools
|
||||
run: sudo apt-get update && sudo apt-get install -y jq libjq-dev
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v1
|
||||
with:
|
||||
version: v3.5.3
|
||||
|
||||
- name: Install Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
|
||||
- name: Install dependencies
|
||||
env:
|
||||
RUBYJQ_USE_SYSTEM_LIBRARIES: 1
|
||||
run: |
|
||||
bundle install
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
bundle exec m -r ./test/
|
||||
|
||||
install:
|
||||
needs:
|
||||
- changes-install
|
||||
- lint_success
|
||||
if: |
|
||||
!contains(github.event.head_commit.message, '[ci-skip]')
|
||||
&&
|
||||
needs.changes-install.outputs.detected == 'true'
|
||||
name: Install charts
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.changes-install.outputs.matrix) }}
|
||||
fail-fast: true
|
||||
max-parallel: 15
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v1
|
||||
with:
|
||||
version: v3.5.3
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.7
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.0.1
|
||||
|
||||
- name: Create k3d cluster
|
||||
uses: nolar/setup-k3d-k3s@v1
|
||||
with:
|
||||
version: v1.19
|
||||
|
||||
- name: Run chart-testing (install)
|
||||
run: ct install --config .github/ct-install.yaml --charts ${{ matrix.chart }}
|
||||
|
||||
# Summarize matrix https://github.community/t/status-check-for-a-matrix-jobs/127354/7
|
||||
install_success:
|
||||
needs:
|
||||
- install
|
||||
if: ${{ always() }}
|
||||
name: Install successful
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Check install matrix status
|
||||
if: ${{ needs.install.result != 'success' }}
|
||||
run: exit 1
|
||||
61
.github/workflows/charts-release.yaml
vendored
Normal file
61
.github/workflows/charts-release.yaml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: "Charts: Release"
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- 'charts/**'
|
||||
- '!charts/**/README.md'
|
||||
- '!charts/**/README.md.gotmpl'
|
||||
- '!charts/**/README_CHANGELOG.md.gotmpl'
|
||||
- '!charts/**/README_CONFIG.md.gotmpl'
|
||||
|
||||
jobs:
|
||||
pre-release:
|
||||
if: "!contains(github.event.head_commit.message, '[ci-skip]')"
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- name: Block concurrent jobs
|
||||
uses: softprops/turnstyle@v1
|
||||
with:
|
||||
continue-after-seconds: 180
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
release:
|
||||
if: "!contains(github.event.head_commit.message, '[ci-skip]')"
|
||||
needs: pre-release
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Block concurrent jobs
|
||||
uses: softprops/turnstyle@v1
|
||||
with:
|
||||
continue-after-seconds: 180
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v1
|
||||
with:
|
||||
version: v3.5.3
|
||||
|
||||
- name: Run chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.2.0
|
||||
with:
|
||||
charts_dir: charts/*
|
||||
charts_repo_url: https://k8s-at-home.com/charts/
|
||||
env:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
21
.github/workflows/invalid-template.yaml
vendored
Normal file
21
.github/workflows/invalid-template.yaml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
|
||||
name: 'Invalid Template'
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled, unlabeled, reopened]
|
||||
|
||||
jobs:
|
||||
support:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: dessant/support-requests@v2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
support-label: 'kind:invalid-template'
|
||||
issue-comment: >
|
||||
:wave: @{issue-author}, please follow the template provided.
|
||||
close-issue: true
|
||||
lock-issue: true
|
||||
issue-lock-reason: 'resolved'
|
||||
28
.github/workflows/lint-test.yaml
vendored
28
.github/workflows/lint-test.yaml
vendored
@@ -1,28 +0,0 @@
|
||||
name: Lint and Test Charts
|
||||
on: pull_request
|
||||
jobs:
|
||||
lint-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Fetch history
|
||||
run: |
|
||||
git fetch --prune --unshallow;
|
||||
echo "commitmsg=$(git log --format=%B -n 1 ${{ github.event.after }})" >> $GITHUB_ENV
|
||||
- name: Run chart-testing (lint)
|
||||
id: lint
|
||||
uses: helm/chart-testing-action@v1.0.0
|
||||
if: "! contains(env.commitmsg, '[skip lint]')"
|
||||
with:
|
||||
command: lint
|
||||
config: ct.yaml
|
||||
- name: Create kind cluster
|
||||
uses: helm/kind-action@v1.0.0
|
||||
if: "steps.lint.outputs.changed == 'true' && ! contains(env.commitmsg, '[skip install]')"
|
||||
- name: Run chart-testing (install)
|
||||
uses: helm/chart-testing-action@v1.0.0
|
||||
if: "steps.lint.outputs.changed == 'true' && ! contains(env.commitmsg, '[skip install]')"
|
||||
with:
|
||||
command: install
|
||||
config: ct.yaml
|
||||
45
.github/workflows/release.yaml
vendored
45
.github/workflows/release.yaml
vendored
@@ -1,45 +0,0 @@
|
||||
|
||||
name: Release Charts
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
release:
|
||||
timeout-minutes: 5
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Turnstyle
|
||||
uses: softprops/turnstyle@v1
|
||||
with:
|
||||
continue-after-seconds: 180
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Fetch history
|
||||
run: git fetch --prune --unshallow
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
# See https://github.com/helm/chart-releaser-action/issues/6
|
||||
- name: Install Helm
|
||||
run: |
|
||||
curl -fsSLo get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
|
||||
chmod 700 get_helm.sh
|
||||
./get_helm.sh
|
||||
- name: Add dependency chart repos
|
||||
run: |
|
||||
helm repo add stable https://charts.helm.sh/stable
|
||||
- name: Run chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.0.0
|
||||
with:
|
||||
charts_repo_url: https://k8s-at-home.com/charts/
|
||||
env:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
27
.github/workflows/support.yaml
vendored
Normal file
27
.github/workflows/support.yaml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
|
||||
name: 'Support requests'
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled, unlabeled, reopened]
|
||||
|
||||
jobs:
|
||||
support:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: dessant/support-requests@v2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
support-label: 'kind:support'
|
||||
issue-comment: >
|
||||
:wave: @{issue-author}, we use the issue tracker exclusively
|
||||
for bug reports and feature requests. However, this issue appears
|
||||
to be a support request. Please use our support channels
|
||||
to get help.
|
||||
- [Docs](https://docs.k8s-at-home.com/)
|
||||
- [Discord](https://discord.gg/sTMX7Vh)
|
||||
- [GitHub Discussions](https://github.com/k8s-at-home/organization/discussions)
|
||||
close-issue: true
|
||||
lock-issue: false
|
||||
issue-lock-reason: 'off-topic'
|
||||
18
.gitignore
vendored
18
.gitignore
vendored
@@ -1,4 +1,16 @@
|
||||
.env
|
||||
# Developer dependencies
|
||||
.bin
|
||||
|
||||
# IDE resources
|
||||
.vscode
|
||||
.idea
|
||||
charts/*/Chart.lock
|
||||
charts/*/charts
|
||||
.devcontainer/
|
||||
|
||||
# Helm resources
|
||||
charts/**/Chart.lock
|
||||
charts/**/charts
|
||||
|
||||
# Other rsources
|
||||
.env
|
||||
.envrc
|
||||
Gemfile.lock
|
||||
|
||||
1
.helmdocsignore
Normal file
1
.helmdocsignore
Normal file
@@ -0,0 +1 @@
|
||||
charts/uptimerobot
|
||||
@@ -1,5 +1,13 @@
|
||||
# See https://pre-commit.com for more information
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v3.4.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: fix-byte-order-marker
|
||||
- id: mixed-line-ending
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: ct-lint
|
||||
|
||||
57
.taskfiles/Taskfile_chart.yml
Normal file
57
.taskfiles/Taskfile_chart.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
version: '3'
|
||||
|
||||
tasks:
|
||||
|
||||
create:
|
||||
desc: create new chart
|
||||
cmds:
|
||||
- git checkout -b add-chart-{{.CHART}}
|
||||
- cp -r {{.GIT_ROOT}}/templates/chart {{.GIT_ROOT}}/charts/{{.CHART}}
|
||||
- ./.bin/go-replace -s '${CHARTNAME}' -r "{{.CHART}}" --path={{.GIT_ROOT}}/charts/{{.CHART}} --path-pattern='*.*'
|
||||
- task: dependency
|
||||
- echo "Congratulations, charts/{{.CHART}} successfully generated, you can now edit chart informations ( Chart.yaml and values.yaml )"
|
||||
status:
|
||||
- test -d {{.GIT_ROOT}}/charts/{{.CHART}}
|
||||
deps:
|
||||
- check-chart
|
||||
silent: true
|
||||
|
||||
dependency:
|
||||
dir: "{{.GIT_ROOT}}/charts/{{.CHART}}"
|
||||
cmds:
|
||||
- test -d Chart.lock && rm Chart.lock || exit 0
|
||||
- test -d tmpcharts && rm -rf tmpcharts || exit 0
|
||||
- helm dependency update
|
||||
silent: true
|
||||
|
||||
lint:
|
||||
desc: lint your chart code
|
||||
dir: "{{.GIT_ROOT}}/charts/{{.CHART}}"
|
||||
cmds:
|
||||
- helm lint
|
||||
deps:
|
||||
- dependency
|
||||
- check-chart
|
||||
|
||||
ct-lint:
|
||||
desc: run `ct lint` on your chart code
|
||||
cmds:
|
||||
- docker run --rm -it --user $(id -u):$(id -g) -e "HELM_CONFIG_HOME=/tmp/helm" -e "HELM_CACHE_HOME=/tmp/helm" -v {{.GIT_ROOT}}:/ci -w /ci quay.io/helmpack/chart-testing:latest ct lint --charts charts/{{.CHART}} --config /ci/.github/ct-lint.yaml
|
||||
deps:
|
||||
- check-chart
|
||||
- lint
|
||||
|
||||
helm-docs:
|
||||
desc: generate helm-docs
|
||||
dir: "{{.GIT_ROOT}}/hack"
|
||||
cmds:
|
||||
- ./gen-helm-docs.sh "{{.CHART}}"
|
||||
deps:
|
||||
- check-chart
|
||||
|
||||
# Checks Parameters
|
||||
check-chart:
|
||||
cmds:
|
||||
- test ! -z "{{.CHART}}" || (echo "Please define CHART parameter"; exit 1)
|
||||
silent: true
|
||||
41
.taskfiles/Taskfile_darwin.yml
Normal file
41
.taskfiles/Taskfile_darwin.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
version: '3'
|
||||
|
||||
# Todo: add all darwin requirements
|
||||
|
||||
env:
|
||||
URL_GOREPLACE: https://github.com/webdevops/go-replace/releases/download/1.1.2/gr-64-osx
|
||||
|
||||
tasks:
|
||||
|
||||
install:
|
||||
desc: Install all developer dependencies
|
||||
deps:
|
||||
- distrib-requirements
|
||||
- go-replace
|
||||
|
||||
distrib-requirements:
|
||||
desc: Check needed distribution packages
|
||||
cmds:
|
||||
- task deps:need BIN=wget
|
||||
- task deps:need BIN=python3
|
||||
- task deps:need BIN=docker
|
||||
silent: true
|
||||
|
||||
need:
|
||||
desc: Check needed binary is present
|
||||
cmds:
|
||||
- type {{.BIN}} 2>&1 >/dev/null || (echo "Please install {{.BIN}}"; exit 1)
|
||||
silent: true
|
||||
|
||||
go-replace:
|
||||
desc: Install go-replace
|
||||
cmds:
|
||||
- echo "Installing go-replace"
|
||||
- mkdir -p ".bin"
|
||||
- wget -q "https://github.com/webdevops/go-replace/releases/download/1.1.2/gr-64-osx" -O .bin/go-replace && chmod +x .bin/go-replace
|
||||
status:
|
||||
- test -e .bin/go-replace
|
||||
deps:
|
||||
- distrib-requirements
|
||||
silent: true
|
||||
64
.taskfiles/Taskfile_linux.yml
Normal file
64
.taskfiles/Taskfile_linux.yml
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
version: '3'
|
||||
|
||||
env:
|
||||
URL_GOREPLACE: https://github.com/webdevops/go-replace/releases/download/1.1.2/gr-64-linux
|
||||
URL_HELM: https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
|
||||
|
||||
tasks:
|
||||
|
||||
install:
|
||||
desc: Install all developer dependencies
|
||||
deps:
|
||||
- distrib-requirements
|
||||
- helm
|
||||
- pre-commit
|
||||
- go-replace
|
||||
|
||||
distrib-requirements:
|
||||
desc: Check needed distribution packages
|
||||
cmds:
|
||||
- task deps:need BIN=wget
|
||||
- task deps:need BIN=python3
|
||||
- task deps:need BIN=docker
|
||||
silent: true
|
||||
|
||||
need:
|
||||
desc: Check needed binary is present
|
||||
cmds:
|
||||
- type {{.BIN}} 2>&1 >/dev/null || (echo "Please install {{.BIN}}"; exit 1)
|
||||
silent: true
|
||||
|
||||
helm:
|
||||
desc: Install helm client
|
||||
cmds:
|
||||
- echo "Installing helm"
|
||||
- wget -q -O - "$URL_HELM" | USE_SUDO=false HELM_INSTALL_DIR=.bin bash
|
||||
status:
|
||||
- test -e .bin/helm
|
||||
deps:
|
||||
- distrib-requirements
|
||||
silent: true
|
||||
|
||||
pre-commit:
|
||||
desc: Install a precommit pip package
|
||||
cmds:
|
||||
- echo "Installing pre-commit"
|
||||
- python3 -m pip install --user pre-commit
|
||||
status:
|
||||
- type pre-commit
|
||||
deps:
|
||||
- distrib-requirements
|
||||
silent: true
|
||||
|
||||
go-replace:
|
||||
desc: Install go-replace
|
||||
cmds:
|
||||
- echo "Installing go-replace"
|
||||
- mkdir -p ".bin"
|
||||
- wget -q "$URL_GOREPLACE" -O .bin/go-replace && chmod +x .bin/go-replace
|
||||
status:
|
||||
- test -e .bin/go-replace
|
||||
deps:
|
||||
- distrib-requirements
|
||||
silent: true
|
||||
10
.taskfiles/Taskfile_windows.yml
Normal file
10
.taskfiles/Taskfile_windows.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
version: '3'
|
||||
|
||||
# Todo: add windows requirements
|
||||
|
||||
tasks:
|
||||
default:
|
||||
cmds:
|
||||
- task -l
|
||||
silent: true
|
||||
5
.vscode/extensions.json
vendored
Normal file
5
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"ms-vscode-remote.remote-containers"
|
||||
]
|
||||
}
|
||||
34
.vscode/launch.json
vendored
Normal file
34
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "UnitTest - active spec file only",
|
||||
"type": "Ruby",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"program": "/usr/local/bin/bundle",
|
||||
"args": [
|
||||
"exec",
|
||||
"m",
|
||||
"-r",
|
||||
"${relativeFile}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UnitTest - all spec files",
|
||||
"type": "Ruby",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"program": "/usr/local/bin/bundle",
|
||||
"args": [
|
||||
"exec",
|
||||
"m",
|
||||
"-r",
|
||||
"${workspaceFolder}/test/charts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
132
CODE_OF_CONDUCT.md
Normal file
132
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
Devin buhl <devin.kray@gmail.com> or Jeff Billimek <jeff@billimek.com>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
|
||||
at [https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
@@ -52,6 +52,6 @@ Charts should start at `1.0.0`. Any breaking (backwards incompatible) changes to
|
||||
1. Bump the MAJOR version
|
||||
2. In the README, under a section called "Upgrading", describe the manual steps necessary to upgrade to the new (specified) MAJOR version
|
||||
|
||||
### pre-commit
|
||||
### Pre-commit
|
||||
|
||||
This repo supports the [pre-commit](https://pre-commit.com) framework. By installing the framework (see [docs](https://pre-commit.com/#install)) it is possible to perform the chart linting step before committing your code. This can help prevent linter issues in the pipeline. Note that this requires having Docker running on your development environment.
|
||||
|
||||
12
Gemfile
Normal file
12
Gemfile
Normal file
@@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
group :test do
|
||||
gem 'm'
|
||||
gem 'minitest', "5.14.4"
|
||||
gem 'minitest-implicit-subject'
|
||||
gem 'minitest-reporters', "1.4.3"
|
||||
gem 'pry', "0.14.0"
|
||||
gem 'ruby-jq'
|
||||
end
|
||||
53
README.md
53
README.md
@@ -1,9 +1,14 @@
|
||||
# k8s@Home collection of helm charts
|
||||
# Helm charts
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
[](#contributors-)
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
[](https://docs.k8s-at-home.com/)
|
||||
[](https://discord.gg/sTMX7Vh)
|
||||
[](https://github.com/pre-commit/pre-commit)
|
||||
[](https://github.com/renovatebot/renovate)
|
||||
[](https://artifacthub.io/packages/search?repo=k8s-at-home)
|
||||
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://github.com/k8s-at-home/charts/actions)
|
||||
[](https://github.com/pre-commit/pre-commit)
|
||||
[](https://artifacthub.io/packages/search?repo=k8s-at-home)
|
||||
## Usage
|
||||
|
||||
[Helm](https://helm.sh) must be installed to use the charts.
|
||||
@@ -17,9 +22,13 @@ helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
|
||||
You can then run `helm search repo k8s-at-home` to see the charts.
|
||||
|
||||
## Charts
|
||||
## Support
|
||||
|
||||
See [artifact hub](https://artifacthub.io/packages/search?org=k8s-at-home) for a complete list.
|
||||
We have a few outlets for getting support with our projects:
|
||||
|
||||
- Visit our [Docs](https://docs.k8s-at-home.com/).
|
||||
- Bugs or feature requests should be opened in an [issue](https://github.com/k8s-at-home/charts/issues/new/choose).
|
||||
- Questions or comments should be discussed in our [Discord](https://discord.gg/sTMX7Vh) or via [Github discussions](https://github.com/k8s-at-home/organization/discussions).
|
||||
|
||||
## Contributing
|
||||
|
||||
@@ -28,3 +37,33 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
||||
## License
|
||||
|
||||
[Apache 2.0 License](./LICENSE)
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/devfaz"><img src="https://avatars.githubusercontent.com/u/4060372?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fabian Zimmermann</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=devfaz" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/angelnu"><img src="https://avatars.githubusercontent.com/u/4406403?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vegetto</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=angelnu" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/trly"><img src="https://avatars.githubusercontent.com/u/212733?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Travis Lyons</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=trly" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/bjw-s"><img src="https://avatars.githubusercontent.com/u/6213398?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=bjw-s" title="Code">💻</a></td>
|
||||
<td align="center"><a href="http://schouten-lebbing.nl"><img src="https://avatars.githubusercontent.com/u/7613738?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kjeld Schouten-Lebbing</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=Ornias1993" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://www.meetup.com/nl-NL/I-I-Inspiratie-Innovatie/"><img src="https://avatars.githubusercontent.com/u/30292281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rolf Berkenbosch</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=rolfberkenbosch" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/auricom"><img src="https://avatars.githubusercontent.com/u/27022259?v=4?s=100" width="100px;" alt=""/><br /><sub><b>auricom</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=auricom" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="http://aaronjohnson.io"><img src="https://avatars.githubusercontent.com/u/1386238?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aaron Johnson</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=acjohnson" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/brujoand"><img src="https://avatars.githubusercontent.com/u/124421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anders Brujordet</b></sub></a><br /><a href="https://github.com/k8s-at-home/charts/commits?author=brujoand" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
||||
|
||||
16
Taskfile.yml
Normal file
16
Taskfile.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
version: '3'
|
||||
|
||||
vars:
|
||||
GIT_ROOT:
|
||||
sh: git rev-parse --show-toplevel
|
||||
|
||||
includes:
|
||||
deps: .taskfiles/Taskfile_{{OS}}.yml
|
||||
chart: .taskfiles/Taskfile_chart.yml
|
||||
|
||||
tasks:
|
||||
default:
|
||||
cmds:
|
||||
- task -l
|
||||
silent: true
|
||||
@@ -1,72 +0,0 @@
|
||||
{{- define "repository.organization" -}}
|
||||
k8s-at-home
|
||||
{{- end -}}
|
||||
|
||||
{{- define "repository.url" -}}
|
||||
https://github.com/k8s-at-home/charts
|
||||
{{- end -}}
|
||||
|
||||
{{- define "helm.url" -}}
|
||||
https://k8s-at-home.com/charts/
|
||||
{{- end -}}
|
||||
|
||||
{{- define "helm.path" -}}
|
||||
{{ template "repository.organization" . }}/{{ template "chart.name" . }}
|
||||
{{- end -}}
|
||||
{{- define "badge.artifactHub" -}}
|
||||
[](https://artifacthub.io/packages/helm/{{ template "chart.name" . }})
|
||||
{{- end -}}
|
||||
{{- define "description.multiarch" -}}
|
||||
The default values and container images used in this chart will allow for running in a multi-arch cluster (amd64, arm, arm64)
|
||||
{{- end -}}
|
||||
|
||||
{{- define "install.tldr" -}}
|
||||
## TL;DR
|
||||
```console
|
||||
$ helm repo add {{ template "repository.organization" . }} {{ template "helm.url" . }}
|
||||
$ helm install {{ template "helm.path" . }}
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "install" -}}
|
||||
## Installing the Chart
|
||||
To install the chart with the release name `{{ template "chart.name" . }}`:
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} {{ template "helm.path" . }}
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "uninstall" -}}
|
||||
## Uninstalling the Chart
|
||||
To uninstall the `{{ template "chart.name" . }}` deployment:
|
||||
```console
|
||||
helm uninstall {{ template "chart.name" . }}
|
||||
```
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
{{- end -}}
|
||||
|
||||
{{- define "configuration.header" -}}
|
||||
## Configuration
|
||||
{{- end -}}
|
||||
|
||||
{{- define "configuration.readValues" -}}
|
||||
Read through the [values.yaml]({{ template "repository.url" . }}/blob/master/charts/{{ template "chart.name" . }}/values.yaml)
|
||||
file. It has several commented out suggested values.
|
||||
{{- end -}}
|
||||
|
||||
{{- define "configuration.example.set" -}}
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} \
|
||||
--set env.TZ="America/New York" \
|
||||
{{ template "helm.path" . }}
|
||||
```
|
||||
{{- end -}}
|
||||
|
||||
{{- define "configuration.example.file" -}}
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
|
||||
For example,
|
||||
```console
|
||||
helm install {{ template "chart.name" . }} {{ template "helm.path" . }} --values values.yaml
|
||||
```
|
||||
{{- end -}}
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,64 +0,0 @@
|
||||
# DNS proxy as ad-blocker for local network
|
||||
|
||||
This is an opinionated helm chart for [adguard-home](https://github.com/AdguardTeam/AdGuardHome)
|
||||
|
||||
The default values and container images used in this chart will allow for running in a multi-arch cluster (amd64, arm, arm64)
|
||||
|
||||
## TL;DR
|
||||
|
||||
```shell
|
||||
helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
helm install k8s-at-home/adguard-home
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name adguard-home k8s-at-home/adguard-home
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `adguard-home` deployment:
|
||||
|
||||
```console
|
||||
helm delete adguard-home --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/adguard-home/values.yaml) file. It has several commented out suggested values.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install --name adguard-home \
|
||||
--set timeZone="America/New York" \
|
||||
k8s-at-home/adguard-home
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install --name adguard-home -f values.yaml k8s-at-home/adguard-home
|
||||
```
|
||||
|
||||
#### Helm force upgrade
|
||||
|
||||
```sh
|
||||
helm upgrade --force
|
||||
```
|
||||
|
||||
#### Delete the existing `adguard-home` services prior to upgrading
|
||||
|
||||
```sh
|
||||
kubectl delete svc/adguard-home
|
||||
```
|
||||
|
||||
#### Remove the existing adguard-home chart first
|
||||
|
||||
This is the 'easiest' approach, but will incur downtime which can be problematic if you rely on adguard-home for DNS
|
||||
@@ -1,24 +0,0 @@
|
||||
apiVersion: v2
|
||||
appVersion: v0.9.0.5
|
||||
description: Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements
|
||||
name: bazarr
|
||||
version: 4.4.0
|
||||
keywords:
|
||||
- bazarr
|
||||
- radarr
|
||||
- sonarr
|
||||
- subtitles
|
||||
- usenet
|
||||
- torrent
|
||||
home: https://github.com/k8s-at-home/charts/tree/master/charts/bazarr
|
||||
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png
|
||||
sources:
|
||||
- https://hub.docker.com/r/linuxserver/bazarr/
|
||||
- https://github.com/morpheus65535/bazarr
|
||||
maintainers:
|
||||
- name: billimek
|
||||
email: jeff@billimek.com
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://k8s-at-home.com/charts/
|
||||
version: ^1.5.0
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,76 +0,0 @@
|
||||
# Bazarr
|
||||
|
||||
This is a helm chart for [Bazarr](https://github.com/morpheus65535/bazarr).
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```shell
|
||||
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
$ helm install k8s-at-home/bazarr
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name my-release k8s-at-home/bazarr
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/bazarr/values.yaml)
|
||||
file. It has several commented out suggested values.
|
||||
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
```console
|
||||
helm install bazarr \
|
||||
--set env.TZ="America/New York" \
|
||||
k8s-at-home/bazarr
|
||||
```
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
|
||||
chart. For example,
|
||||
```console
|
||||
helm install bazarr k8s-at-home/bazarr --values values.yaml
|
||||
```
|
||||
|
||||
```yaml
|
||||
image:
|
||||
tag: ...
|
||||
```
|
||||
|
||||
---
|
||||
**NOTE**
|
||||
|
||||
If you get
|
||||
```console
|
||||
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
|
||||
```
|
||||
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
|
||||
|
||||
---
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
|
||||
|
||||
### Upgrading from 3.x.x to 4.x.x
|
||||
|
||||
Due to migrating to a centralized common library some values in `values.yaml` have changed.
|
||||
|
||||
Examples:
|
||||
|
||||
* `service.port` has been moved to `service.port.port`.
|
||||
* `persistence.type` has been moved to `controllerType`.
|
||||
|
||||
Refer to the library values.yaml for more configuration options.
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- DirtyCajunRice
|
||||
reviewers:
|
||||
- DirtyCajunRice
|
||||
@@ -1,48 +0,0 @@
|
||||
# Unofficial Bitwarden compatible server written in Rust
|
||||
|
||||
This is an opinionated helm chart for [bitwarden_rs](https://github.com/dani-garcia/bitwarden_rs)
|
||||
|
||||
The default values and container images used in this chart will allow for running in a multi-arch cluster (amd64, arm, arm64)
|
||||
|
||||
## TL;DR
|
||||
|
||||
```console
|
||||
helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
helm install k8s-at-home/bitwardenrs
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `bitwarden`:
|
||||
|
||||
```console
|
||||
helm install bitwarden k8s-at-home/bitwardenrs
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `bitwarden` deployment:
|
||||
|
||||
```console
|
||||
helm uninstall bitwarden
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/bitwardenrs/values.yaml) file. It has several commented out suggested values.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install bitwarden \
|
||||
--set timeZone="America/New York" \
|
||||
k8s-at-home/bitwardenrs
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install bitwarden k8s-at-home/bitwardenrs --values values.yaml
|
||||
```
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,74 +0,0 @@
|
||||
# DNS proxy as ad-blocker for local network
|
||||
|
||||
This is an opinionated helm chart for [blocky](https://github.com/0xERR0R/blocky)
|
||||
|
||||
The default values and container images used in this chart will allow for running in a multi-arch cluster (amd64, arm, arm64)
|
||||
|
||||
## TL;DR
|
||||
|
||||
```shell
|
||||
helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
helm install k8s-at-home/blocky
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name blocky k8s-at-home/blocky
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `blocky` deployment:
|
||||
|
||||
```console
|
||||
helm delete blocky --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/blocky/values.yaml) file. It has several commented out suggested values.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install --name blocky \
|
||||
--set timeZone="America/New York" \
|
||||
k8s-at-home/blocky
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install --name blocky -f values.yaml k8s-at-home/blocky
|
||||
```
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like 2.2.2 -> 3.0.0) indicates that there is an
|
||||
incompatible breaking change needing manual actions.
|
||||
|
||||
### Upgrading from 2.x.x to 3.x.x
|
||||
|
||||
Due to the renaming of the service port, an upgrade-in-place will not work. The following are possible approaches to solve this:
|
||||
|
||||
#### Helm force upgrade
|
||||
|
||||
```sh
|
||||
helm upgrade --force
|
||||
```
|
||||
|
||||
#### Delete the existing `blocky` service prior to upgrading
|
||||
|
||||
```sh
|
||||
kubectl delete svc/blocky
|
||||
```
|
||||
|
||||
#### Remove the existing blocky chart first
|
||||
|
||||
This is the 'easiest' approach, but will incur downtime which can be problematic if you rely on blocky for DNS
|
||||
|
||||
@@ -1,190 +0,0 @@
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: spx01/blocky
|
||||
tag: v0.10
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
replicas: 1
|
||||
|
||||
timeZone: "UTC"
|
||||
|
||||
# blocky configuration - will translate to config.yml file inside the pod
|
||||
config:
|
||||
upstream:
|
||||
# these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query
|
||||
# format for resolver: net:host:[port][/path]. net could be tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh))
|
||||
externalResolvers:
|
||||
- udp:8.8.8.8
|
||||
- udp:8.8.4.4
|
||||
- udp:1.1.1.1
|
||||
- tcp-tls:1.0.0.1:853
|
||||
- https://cloudflare-dns.com/dns-query
|
||||
|
||||
# optional: custom IP address for domain name (with all sub-domains)
|
||||
# example: query "printer.lan" or "my.printer.lan" will return 192.168.178.3
|
||||
# customDNS:
|
||||
# mapping:
|
||||
# printer.lan: 192.168.178.3
|
||||
|
||||
# optional: definition, which DNS resolver should be used for queries to the domain (with all sub-domains).
|
||||
# Example: Query client.fritz.box will ask DNS server 192.168.178.1. This is necessary for local network, to resolve clients by host name
|
||||
# conditional:
|
||||
# mapping:
|
||||
# fritz.box: udp:192.168.178.1
|
||||
|
||||
# optional: use black and white lists to block queries (for example ads, trackers, adult pages etc.)
|
||||
blocking:
|
||||
# definition of blacklist groups. Can be external link (http/https) or local file
|
||||
blackLists:
|
||||
ads:
|
||||
- https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
|
||||
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
|
||||
- https://mirror1.malwaredomains.com/files/justdomains
|
||||
- http://sysctl.org/cameleon/hosts
|
||||
- https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
|
||||
- https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
|
||||
special:
|
||||
- https://hosts-file.net/ad_servers.txt
|
||||
# definition of whitelist groups. Attention: if the same group has black and whitelists,
|
||||
# whitelists will be used to disable particular blacklist entries. If a group has only
|
||||
# whitelist entries -> this means only domains from this list are allowed,
|
||||
# all other domains will be blocked.
|
||||
# Also see the extraLists section below to add your own in-line whitelists
|
||||
# whiteLists:
|
||||
# ads:
|
||||
# - whitelist.txt
|
||||
# definition: which groups should be applied for which client
|
||||
clientGroupsBlock:
|
||||
# default will be used, if no special definition for a client name exists
|
||||
default:
|
||||
- ads
|
||||
- special
|
||||
# use client name or ip address
|
||||
# laptop.fritz.box:
|
||||
# - ads
|
||||
|
||||
# which response will be sent, if query is blocked:
|
||||
# zeroIp: 0.0.0.0 will be returned (default)
|
||||
# nxDomain: return NXDOMAIN as return code
|
||||
# blockType: zeroIp
|
||||
|
||||
# optional: automatically list refresh period in minutes. Default: 4h.
|
||||
# Negative value -> deactivate automatically refresh.
|
||||
# 0 value -> use default
|
||||
# refreshPeriod: 1
|
||||
|
||||
# optional: configuration for caching of DNS responses
|
||||
# caching:
|
||||
# # amount in minutes, how long a response must be cached (min value).
|
||||
# # If <=0, use response's TTL, if >0 use this value, if TTL is smaller
|
||||
# # Default: 0
|
||||
# minTime: 40
|
||||
# # amount in minutes, how long a response must be cached (max value).
|
||||
# # If <0, do not cache responses
|
||||
# # If 0, use TTL
|
||||
# # If > 0, use this value, if TTL is greater
|
||||
# # Default: 0
|
||||
# maxTime: -1
|
||||
|
||||
# optional: configuration of client name resolution
|
||||
# clientLookup:
|
||||
# # this DNS resolver will be used to perform reverse DNS lookup (typically local router)
|
||||
# upstream: udp:192.168.178.1
|
||||
# # optional: some routers return multiple names for client (host name and user defined name). Define which single name should be used.
|
||||
# # Example: take second name if present, if not take first name
|
||||
# singleNameOrder:
|
||||
# - 2
|
||||
# - 1
|
||||
# optional: configuration for prometheus metrics endpoint
|
||||
prometheus:
|
||||
# enabled if true
|
||||
enable: true
|
||||
# url path, optional (default '/metrics')
|
||||
path: /metrics
|
||||
|
||||
# optional: HTTP listener port, default 0 = no http listener. If > 0, will be used for prometheus metrics, pprof, ...
|
||||
httpPort: 4000
|
||||
# optional: Log level (one from debug, info, warn, error). Default: info
|
||||
logLevel: info
|
||||
|
||||
|
||||
# Probes configuration
|
||||
probes:
|
||||
liveness:
|
||||
failureThreshold: 5
|
||||
periodSeconds: 10
|
||||
readiness:
|
||||
failureThreshold: 5
|
||||
periodSeconds: 10
|
||||
startup:
|
||||
initialDelaySeconds: 5
|
||||
failureThreshold: 30
|
||||
periodSeconds: 10
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
# externalTrafficPolicy: Local
|
||||
# loadBalancerIP: ""
|
||||
# a fixed LoadBalancer IP
|
||||
annotations: {}
|
||||
# metallb.universe.tf/address-pool: network-services
|
||||
# metallb.universe.tf/allow-shared-ip: blocky-svc
|
||||
|
||||
serviceTCP:
|
||||
enabled: false
|
||||
externalIPs: []
|
||||
type: NodePort
|
||||
externalTrafficPolicy: Local
|
||||
loadBalancerIP: ""
|
||||
# a fixed LoadBalancer IP
|
||||
annotations: {}
|
||||
# metallb.universe.tf/address-pool: network-services
|
||||
# metallb.universe.tf/allow-shared-ip: blocky-svc
|
||||
|
||||
serviceUDP:
|
||||
enabled: true
|
||||
externalIPs: []
|
||||
type: NodePort
|
||||
externalTrafficPolicy: Local
|
||||
loadBalancerIP: ""
|
||||
# a fixed LoadBalancer IP
|
||||
annotations: {}
|
||||
# metallb.universe.tf/address-pool: network-services
|
||||
# metallb.universe.tf/allow-shared-ip: blocky-svc
|
||||
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
additionalLabels: {}
|
||||
|
||||
## Pod Annotations
|
||||
podAnnotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "api"
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# memory: 500Mi
|
||||
# requests:
|
||||
# cpu: 50m
|
||||
# memory: 275Mi
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
## Add any extra files you want populated to /app here, e.g.:
|
||||
# extraLists:
|
||||
# whitelist.txt: |
|
||||
# analytics.google.com
|
||||
# googleadservices.com
|
||||
extraLists: {}
|
||||
@@ -1,17 +0,0 @@
|
||||
type: application
|
||||
apiVersion: v2
|
||||
appVersion: 0.6.8
|
||||
description: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
|
||||
name: calibre-web
|
||||
version: 2.0.1
|
||||
keywords:
|
||||
- calibre
|
||||
- ebook
|
||||
home: https://github.com/k8s-at-home/charts/tree/master/charts/calibre-web
|
||||
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png
|
||||
sources:
|
||||
- https://hub.docker.com/r/linuxserver/calibre-web/
|
||||
- https://github.com/janeczku/calibre-web
|
||||
maintainers:
|
||||
- name: wojoinc
|
||||
email: wojoinc@pm.me
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,107 +0,0 @@
|
||||
# calibre-web
|
||||
|
||||
This is a helm chart for [calibre-web](https://github.com/janeczku/calibre-web) utilizing the [Linuxserver.io calibre-web image](https://hub.docker.com/r/linuxserver/calibre-web)
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```shell
|
||||
helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
helm install k8s-at-home/calibre-web
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name my-release k8s-at-home/calibre-web
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the `calibre-web` chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
|
||||
| `image.repository` | Image repository | `linuxserver/calibre-web` |
|
||||
| `image.tag` | Image tag. Possible values listed [here](https://hub.docker.com/r/linuxserver/calibre-web/tags/). | `0.6.8-ls74` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `dockerMods.ebookConversion.enabled` | Enable optional ebook conversion feature. (x86_64 only) refer [here](https://github.com/linuxserver/docker-calibre-web#application-setup) | `false` |
|
||||
| `dockerMods.ebookConversion.image.repository` | DockerMod image repository | `linuxserver/calibre-web` |
|
||||
| `dockerMods.ebookConversion.image.tag` | DockerMod image tag. These typically start with `v`, with the "stable" tag being `calibre`. Can be found [here](https://hub.docker.com/r/linuxserver/calibre-web/tags/) | `calibre` |
|
||||
| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` |
|
||||
| `timezone` | Timezone the calibre-web instance should run as, e.g. 'America/New_York' | `UTC` |
|
||||
| `puid` | process userID the calibre-web instance should run as | `1001` |
|
||||
| `pgid` | process groupID the calibre-web instance should run as | `1001` |
|
||||
| `umask` | Default umask to use when creating new files | `22` |
|
||||
| `probes.liveness.initialDelaySeconds` | Specify liveness `initialDelaySeconds` parameter for the deployment | `60` |
|
||||
| `probes.liveness.failureThreshold` | Specify liveness `failureThreshold` parameter for the deployment | `5` |
|
||||
| `probes.liveness.timeoutSeconds` | Specify liveness `timeoutSeconds` parameter for the deployment | `10` |
|
||||
| `probes.readiness.initialDelaySeconds` | Specify readiness `initialDelaySeconds` parameter for the deployment | `60` |
|
||||
| `probes.readiness.failureThreshold` | Specify readiness `failureThreshold` parameter for the deployment | `5` |
|
||||
| `probes.readiness.timeoutSeconds` | Specify readiness `timeoutSeconds` parameter for the deployment | `10` |
|
||||
| `Service.type` | Kubernetes service type for the calibre-web GUI | `ClusterIP` |
|
||||
| `Service.port` | Kubernetes port where the calibre-web GUI is exposed | `8083` |
|
||||
| `Service.annotations` | Service annotations for the calibre-web GUI | `{}` |
|
||||
| `Service.labels` | Custom labels | `{}` |
|
||||
| `Service.loadBalancerIP` | Loadbalance IP for the calibre-web GUI | `{}` |
|
||||
| `Service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None |
|
||||
| `ingress.enabled` | Enables Ingress | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `{}` |
|
||||
| `ingress.labels` | Custom labels | `{}` |
|
||||
| `ingress.path` | Ingress path | `/` |
|
||||
| `ingress.hosts` | Ingress accepted hostnames | `chart-example.local` |
|
||||
| `ingress.tls` | Ingress TLS configuration | `[]` |
|
||||
| `persistence.config.enabled` | Use persistent volume to store configuration data | `true` |
|
||||
| `persistence.config.size` | Size of persistent volume claim | `1Gi` |
|
||||
| `persistence.config.existingClaim` | Use an existing PVC to persist data | `nil` |
|
||||
| `persistence.config.storageClass` | Type of persistent volume claim | `-` |
|
||||
| `persistence.config.accessMode` | Persistence access mode | `ReadWriteOnce` |
|
||||
| `persistence.config.skipuninstall` | Do not delete the pvc upon helm uninstall | `false` |
|
||||
| `persistence.books.enabled` | Use persistent volume to store books data | `true` |
|
||||
| `persistence.books.size` | Size of persistent volume claim | `10Gi` |
|
||||
| `persistence.books.existingClaim` | Use an existing PVC to persist data | `nil` |
|
||||
| `persistence.books.storageClass` | Type of persistent volume claim | `-` |
|
||||
| `persistence.books.accessMode` | Persistence access mode | `ReadWriteOnce` |
|
||||
| `persistence.books.skipuninstall` | Do not delete the pvc upon helm uninstall | `false` |
|
||||
| `persistence.extraExistingClaimMounts` | Optionally add multiple existing claims | `[]` |
|
||||
| `resources` | CPU/Memory resource requests/limits | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Affinity settings for pod assignment | `{}` |
|
||||
| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` |
|
||||
| `deploymentAnnotations` | Key-value pairs to add as deployment annotations | `{}` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install --name my-release \
|
||||
--set timezone="America/New York" \
|
||||
k8s-at-home/calibre-web
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install --name my-release -f values.yaml stable/calibre-web
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**NOTE**
|
||||
|
||||
If you get `Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...` it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
|
||||
|
||||
---
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/calibre-web/values.yaml) file. It has several commented out suggested values.
|
||||
@@ -1,25 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host }}{{ $.Values.ingress.path }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "calibre-web.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "calibre-web.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "calibre-web.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "calibre-web.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:{{ .Values.service.port }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.dockerMods.ebookConversion.enabled }}
|
||||
2. DockerMods:
|
||||
You have enabled the EbookConversion Docker Mod using the {{ .Values.dockerMods.ebookConversion.image.repository }}:{{ .Values.dockerMods.ebookConversion.image.tag }} image.
|
||||
Remember to visit https://github.com/linuxserver/docker-calibre-web#application-setup for instructions on configuring this feature in the calibre-web settings.
|
||||
{{- end }}
|
||||
@@ -1,63 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "calibre-web.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "calibre-web.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "calibre-web.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "calibre-web.labels" -}}
|
||||
helm.sh/chart: {{ include "calibre-web.chart" . }}
|
||||
{{ include "calibre-web.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "calibre-web.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "calibre-web.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "calibre-web.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "calibre-web.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
{{- if and .Values.persistence.books.enabled (not .Values.persistence.books.existingClaim) }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "calibre-web.fullname" . }}-books
|
||||
{{- if .Values.persistence.books.skipuninstall }}
|
||||
annotations:
|
||||
"helm.sh/resource-policy": keep
|
||||
{{- end }}
|
||||
labels: {{ include "calibre-web.labels" . | nindent 4}}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.persistence.books.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.books.size | quote }}
|
||||
{{- if .Values.persistence.books.storageClass }}
|
||||
{{- if (eq "-" .Values.persistence.books.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: "{{ .Values.persistence.books.storageClass }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
{{- if and .Values.persistence.config.enabled (not .Values.persistence.config.existingClaim) }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "calibre-web.fullname" . }}-config
|
||||
{{- if .Values.persistence.config.skipuninstall }}
|
||||
annotations:
|
||||
"helm.sh/resource-policy": keep
|
||||
{{- end }}
|
||||
labels: {{ include "calibre-web.labels" . | nindent 4 }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.persistence.config.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.config.size | quote }}
|
||||
{{- if .Values.persistence.config.storageClass }}
|
||||
{{- if (eq "-" .Values.persistence.config.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: "{{ .Values.persistence.config.storageClass }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,112 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "calibre-web.fullname" . }}
|
||||
{{- if .Values.deploymentAnnotations }}
|
||||
annotations:
|
||||
{{- range $key, $value := .Values.deploymentAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
labels: {{ include "calibre-web.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 3
|
||||
strategy:
|
||||
type: {{ .Values.strategyType }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ include "calibre-web.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "calibre-web.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- range $key, $value := .Values.podAnnotations }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8083
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
env:
|
||||
- name: TZ
|
||||
value: "{{ .Values.timezone }}"
|
||||
- name: PUID
|
||||
value: "{{ .Values.puid }}"
|
||||
- name: PGID
|
||||
value: "{{ .Values.pgid }}"
|
||||
- name: UMASK
|
||||
value: "{{ .Values.umask }}"
|
||||
{{- if eq .Values.dockerMods.ebookConversion.enabled true }}
|
||||
- name: DOCKER_MODS
|
||||
value: "{{ .Values.dockerMods.ebookConversion.image.repository }}:{{ .Values.dockerMods.ebookConversion.image.tag }}"
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: /config
|
||||
name: config
|
||||
- mountPath: /books
|
||||
name: books
|
||||
{{- if .Values.persistence.books.subPath }}
|
||||
subPath: {{ .Values.persistence.books.subPath }}
|
||||
{{- end }}
|
||||
{{- range .Values.persistence.extraExistingClaimMounts }}
|
||||
- name: {{ .name }}
|
||||
mountPath: {{ .mountPath }}
|
||||
readOnly: {{ .readOnly }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- if .Values.persistence.config.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ if .Values.persistence.config.existingClaim }}{{ .Values.persistence.config.existingClaim }}{{- else }}{{ template "calibre-web.fullname" . }}-config{{- end }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
- name: books
|
||||
{{- if .Values.persistence.books.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ if .Values.persistence.books.existingClaim }}{{ .Values.persistence.books.existingClaim }}{{- else }}{{ template "calibre-web.fullname" . }}-books{{- end }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- range .Values.persistence.extraExistingClaimMounts }}
|
||||
- name: {{ .name }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .existingClaim }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,34 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "calibre-web.fullname" . -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels: {{ include "calibre-web.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . | quote }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,48 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "calibre-web.fullname" . }}
|
||||
labels: {{ include "calibre-web.labels" . | nindent 4 }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
|
||||
type: ClusterIP
|
||||
{{- if .Values.service.clusterIP }}
|
||||
clusterIP: {{ .Values.service.clusterIP }}
|
||||
{{end}}
|
||||
{{- else if eq .Values.service.type "LoadBalancer" }}
|
||||
type: {{ .Values.service.type }}
|
||||
{{- if .Values.service.loadBalancerIP }}
|
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.loadBalancerSourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }}
|
||||
{{- end -}}
|
||||
{{- else }}
|
||||
type: {{ .Values.service.type }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.externalIPs }}
|
||||
externalIPs:
|
||||
{{ toYaml .Values.service.externalIPs | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
port: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
targetPort: http
|
||||
{{ if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
|
||||
nodePort: {{.Values.service.nodePort}}
|
||||
{{ end }}
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ include "calibre-web.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
@@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "calibre-web.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "calibre-web.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test-success
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "calibre-web.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@@ -1,136 +0,0 @@
|
||||
# Default values for calibre-web.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
image:
|
||||
repository: linuxserver/calibre-web
|
||||
tag: 0.6.8-ls74
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# upgrade strategy type (e.g. Recreate or RollingUpdate)
|
||||
strategyType: Recreate
|
||||
|
||||
# Probes configuration
|
||||
probes:
|
||||
liveness:
|
||||
initialDelaySeconds: 60
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
readiness:
|
||||
initialDelaySeconds: 60
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
# Linuxserver.io additional layers.
|
||||
# Enables additional features for the image, at the cost of increased size and
|
||||
# possible incompatabilities with certain architectures. Disabled by default.
|
||||
dockerMods:
|
||||
# Enable ebook conversion. Compatible with x86_64 image only.
|
||||
# To enable, set enabled to true, and follow the guide at: https://github.com/linuxserver/docker-calibre-web#application-setup
|
||||
# to configure the application.
|
||||
ebookConversion:
|
||||
enabled: false
|
||||
image:
|
||||
repository: linuxserver/calibre-web
|
||||
# To use a different tag for the DockerMod, specify the tag below
|
||||
tag: calibre
|
||||
|
||||
timezone: UTC
|
||||
puid: 1001
|
||||
pgid: 1001
|
||||
umask: 22
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8083
|
||||
## Specify the nodePort value for the LoadBalancer and NodePort service types.
|
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
|
||||
##
|
||||
# nodePort:
|
||||
## Provide any additional annotations which may be required. This can be used to
|
||||
## set the LoadBalancer service type to internal only.
|
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
|
||||
##
|
||||
annotations: {}
|
||||
labels: {}
|
||||
## Use loadBalancerIP to request a specific static IP,
|
||||
## otherwise leave blank
|
||||
##
|
||||
loadBalancerIP:
|
||||
# loadBalancerSourceRanges: []
|
||||
## Set the externalTrafficPolicy in the Service to either Cluster or Local
|
||||
# externalTrafficPolicy: Cluster
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
path: /
|
||||
hosts:
|
||||
- chart-example.local
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
persistence:
|
||||
config:
|
||||
enabled: true
|
||||
## calibre-web configuration data Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
##
|
||||
# storageClass: "-"
|
||||
##
|
||||
## If you want to reuse an existing claim, you can pass the name of the PVC using
|
||||
## the existingClaim variable
|
||||
# existingClaim: your-claim
|
||||
accessMode: ReadWriteOnce
|
||||
size: 1Gi
|
||||
## Do not delete the pvc upon helm uninstall
|
||||
skipuninstall: false
|
||||
books:
|
||||
enabled: true
|
||||
# storageClass: "-"
|
||||
# existingClaim: your-claim
|
||||
# subPath: some-subpath
|
||||
accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
## Do not delete the pvc upon helm uninstall
|
||||
skipuninstall: false
|
||||
extraExistingClaimMounts: []
|
||||
# - name: external-mount
|
||||
# mountPath: /srv/external-mount
|
||||
## A manually managed Persistent Volume and Claim
|
||||
## If defined, PVC must be created manually before volume will be bound
|
||||
# existingClaim:
|
||||
# readOnly: true
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
deploymentAnnotations: {}
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,84 +0,0 @@
|
||||
# Comcast Data Cap Usage Collector For InfluxDB and Grafana
|
||||
|
||||

|
||||
|
||||
This tool allows you to run periodic comcast data usage checks and save the results to Influxdb
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```console
|
||||
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
$ helm install k8s-at-home/comcast
|
||||
```
|
||||
|
||||
## Introduction
|
||||
|
||||
This code is adopted from the work done by [barrycarey](https://github.com/barrycarey) in the [similar thing for capturing speedtest data](https://github.com/barrycarey/Speedtest-for-InfluxDB-and-Grafana) as well as [jantman's](https://github.com/jantman) [xfinity-usage python example](https://github.com/jantman/xfinity-usage)
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
$ helm install --name my-release k8s-at-home/comcast
|
||||
```
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```console
|
||||
$ helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration is set as a block of text through a configmap and mounted as a file in /src/config.ini Any value in this text block should match the defined Comcast configuration. There are several values here that will have to match our kubernetes configuration.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the Sentry chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------- | ------------------------------- | ---------------------------------------------------------- |
|
||||
| `image.repository` | Comcast image | `billimek/comcastusage-for-influxdb` |
|
||||
| `image.tag` | Comcast image tag | `latest` |
|
||||
| `image.pullPolicy` | Comcast image pull policy | `IfNotPresent` |
|
||||
| `debug` | Display debugging output | `false` |
|
||||
| `config.delay` | how many seconds to wait between checks | `3600` |
|
||||
| `config.influxdb.host` | InfluxDB hostname | `influxdb-influxdb` |
|
||||
| `config.influxdb.port` | InfluxDB port | `8086` |
|
||||
| `config.influxdb.database` | InfluxDB database | `comcast` |
|
||||
| `config.influxdb.username` | InfluxDB username | `` |
|
||||
| `config.influxdb.password` | InfluxDB password | `` |
|
||||
| `config.influxdb.ssl` | InfluxDB connection using SSL | `false` |
|
||||
| `config.comcast.username` | Comcast website login usernma | `someuser` |
|
||||
| `config.comcast.password` | Comcast website login password | `somepassword` |
|
||||
| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install --name my-release \
|
||||
--set config.comcast.username=tonystark,config.comcast.password=mypassword \
|
||||
k8s-at-home/comcast
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
```console
|
||||
helm install --name my-release -f values.yaml k8s-at-home/comcast
|
||||
```
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/comcast/values.yaml) file. It has several commented out suggested values.
|
||||
|
||||
## InfluxDB metrics
|
||||
```
|
||||
'measurement': 'comcast_data_usage',
|
||||
'fields': {
|
||||
'used',
|
||||
'total',
|
||||
'unit'
|
||||
}
|
||||
```
|
||||
@@ -1,12 +0,0 @@
|
||||
apiVersion: v2
|
||||
name: common
|
||||
description: Function library for k8s-at-home charts
|
||||
type: library
|
||||
version: 1.5.1
|
||||
keywords:
|
||||
- k8s-at-home
|
||||
- common
|
||||
home: https://github.com/k8s-at-home/charts/tree/master/charts/common
|
||||
maintainers:
|
||||
- name: BJW-S
|
||||
email: me@juggels.online
|
||||
@@ -1,30 +0,0 @@
|
||||
# Library chart for k8s@home media charts
|
||||
## **THIS CHART IS NOT MEANT TO BE INSTALLED DIRECTLY**
|
||||
|
||||
This is a [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between k8s@home charts.
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart provides common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.
|
||||
|
||||
## TL;DR
|
||||
|
||||
```yaml
|
||||
dependencies:
|
||||
- name: common
|
||||
version: 0.x.x
|
||||
repository: https://k8s-at-home.com/charts/
|
||||
```
|
||||
|
||||
```bash
|
||||
$ helm dependency update
|
||||
```
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "common.names.fullname" . }}
|
||||
data:
|
||||
myvalue: "Hello World"
|
||||
```
|
||||
@@ -1,22 +0,0 @@
|
||||
{{- define "common.all" -}}
|
||||
{{- /* Merge the local chart values and the common chart defaults */ -}}
|
||||
{{- include "common.values.setup" . }}
|
||||
|
||||
{{- /* Enable OpenVPN VPN add-on if required */ -}}
|
||||
{{- if .Values.addons.vpn.enabled }}
|
||||
{{- include "common.addon.vpn" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Build the templates */ -}}
|
||||
{{- include "common.pvc" . }}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{- if eq .Values.controllerType "statefulset" }}
|
||||
{{- include "common.statefulset" . | nindent 0 }}
|
||||
{{ else }}
|
||||
{{- include "common.deployment" . | nindent 0 }}
|
||||
{{- end -}}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{ include "common.service" . | nindent 0 }}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{ include "common.ingress" . | nindent 0 }}
|
||||
{{- end -}}
|
||||
@@ -1,66 +0,0 @@
|
||||
{{- define "common.deployment" -}}
|
||||
apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }}
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "common.names.fullname" . }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- with .Values.controllerLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controllerAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicas }}
|
||||
{{- with .Values.strategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.initContainers }}
|
||||
initContainers:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
{{- include "common.controller.mainContainer" . | nindent 6 }}
|
||||
{{- with .Values.additionalContainers }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
volumes:
|
||||
{{- include "common.controller.volumes" . | trim | nindent 6 }}
|
||||
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,23 +0,0 @@
|
||||
{{- define "common.ingress" -}}
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $svcPort := .Values.service.port.port -}}
|
||||
|
||||
{{- /* Generate primary ingress */ -}}
|
||||
{{- $ingressValues := .Values.ingress -}}
|
||||
{{- $_ := set . "ObjectValues" (dict "ingress" $ingressValues) -}}
|
||||
{{- include "common.classes.ingress" . }}
|
||||
|
||||
{{- /* Generate additional ingresses as required */ -}}
|
||||
{{- range $index, $extraIngress := .Values.ingress.additionalIngresses }}
|
||||
{{- if $extraIngress.enabled -}}
|
||||
{{- print ("---") | nindent 0 -}}
|
||||
{{- $ingressValues := $extraIngress -}}
|
||||
{{- if not $ingressValues.nameSuffix -}}
|
||||
{{- $_ := set $ingressValues "nameSuffix" $index -}}
|
||||
{{ end -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}}
|
||||
{{- include "common.classes.ingress" $ -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,25 +0,0 @@
|
||||
{{/*
|
||||
Default NOTES.txt content.
|
||||
*/}}
|
||||
{{- define "common.notes.defaultNotes" -}}
|
||||
{{- $svcPort := .Values.service.port.port -}}
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range .Values.ingress.hosts }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ .host }}{{ (first .paths).path }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.names.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get svc -w {{ include "common.names.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ $svcPort }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "common.names.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:{{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,14 +0,0 @@
|
||||
{{- define "common.pvc" -}}
|
||||
{{- /* Generate pvc as required */ -}}
|
||||
{{- range $index, $PVC := .Values.persistence }}
|
||||
{{- if and $PVC.enabled (not (or $PVC.emptyDir $PVC.existingClaim)) -}}
|
||||
{{- $persistenceValues := $PVC -}}
|
||||
{{- if not $persistenceValues.nameSuffix -}}
|
||||
{{- $_ := set $persistenceValues "nameSuffix" $index -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "persistence" $persistenceValues) -}}
|
||||
{{- print ("---") | nindent 0 -}}
|
||||
{{- include "common.classes.pvc" $ -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,19 +0,0 @@
|
||||
{{- define "common.service" -}}
|
||||
{{- if .Values.service.enabled -}}
|
||||
{{- /* Generate primary service */ -}}
|
||||
{{- include "common.classes.service" . }}
|
||||
|
||||
{{- /* Generate additional services as required */ -}}
|
||||
{{- range $index, $extraService := .Values.service.additionalServices }}
|
||||
{{- if $extraService.enabled -}}
|
||||
{{- print ("---") | nindent 0 -}}
|
||||
{{- $serviceValues := $extraService -}}
|
||||
{{- if not $serviceValues.nameSuffix -}}
|
||||
{{- $_ := set $serviceValues "nameSuffix" $index -}}
|
||||
{{ end -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}}
|
||||
{{- include "common.classes.service" $ -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,67 +0,0 @@
|
||||
{{- define "common.statefulset" -}}
|
||||
apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }}
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ template "common.names.fullname" . }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- with .Values.controllerLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controllerAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicas }}
|
||||
{{- with .Values.strategy }}
|
||||
updateStrategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 6 }}
|
||||
serviceName: {{ include "common.names.fullname" . }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.initContainers }}
|
||||
initContainers:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
{{- include "common.controller.mainContainer" . | nindent 6 }}
|
||||
{{- with .Values.additionalContainers }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
volumes:
|
||||
{{- include "common.controller.volumes" . | trim | nindent 6 }}
|
||||
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,26 +0,0 @@
|
||||
{{/*
|
||||
The OpenVPN configmaps to be included
|
||||
*/}}
|
||||
{{- define "common.addon.vpn.configmap" -}}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "common.names.fullname" . }}-vpn
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
data:
|
||||
{{- with .Values.addons.vpn.configFile }}
|
||||
vpnConfigfile: |-
|
||||
{{- . | nindent 4}}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.scripts.up }}
|
||||
up.sh: |-
|
||||
{{- . | nindent 4}}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.scripts.down }}
|
||||
down.sh: |-
|
||||
{{- . | nindent 4}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,21 +0,0 @@
|
||||
{{/*
|
||||
The OpenVPN networkpolicy to be included
|
||||
*/}}
|
||||
{{- define "common.addon.vpn.networkpolicy" -}}
|
||||
{{- if .Values.addons.vpn.networkPolicy.enabled -}}
|
||||
kind: NetworkPolicy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ template "common.names.fullname" . }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 6 }}
|
||||
policyTypes:
|
||||
- Egress
|
||||
egress:
|
||||
{{- with .Values.addons.vpn.networkPolicy.egress }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,25 +0,0 @@
|
||||
{{/*
|
||||
The OpenVPN shared volume to be inserted
|
||||
*/}}
|
||||
{{- define "common.addon.vpn.volume" -}}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down -}}
|
||||
name: vpnconfig
|
||||
configMap:
|
||||
name: {{ template "common.names.fullname" . }}-vpn
|
||||
items:
|
||||
{{- if .Values.addons.vpn.configFile }}
|
||||
- key: vpnConfigfile
|
||||
path: vpnConfigfile
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.up }}
|
||||
- key: up.sh
|
||||
path: up.sh
|
||||
mode: 0777
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.down }}
|
||||
- key: down.sh
|
||||
path: down.sh
|
||||
mode: 0777
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,35 +0,0 @@
|
||||
{{/*
|
||||
Template to render VPN addon
|
||||
*/}}
|
||||
{{- define "common.addon.vpn" -}}
|
||||
{{- if .Values.addons.vpn.enabled -}}
|
||||
{{- if eq "openvpn" .Values.addons.vpn.type -}}
|
||||
{{- include "common.addon.openvpn" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{- if eq "wireguard" .Values.addons.vpn.type -}}
|
||||
{{- include "common.addon.wireguard" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the configmap if not empty */}}
|
||||
{{- $configmap := include "common.addon.vpn.configmap" . -}}
|
||||
{{- if $configmap -}}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{- $configmap | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Append the vpn config volume to the additionalVolumes */}}
|
||||
{{- $volume := include "common.addon.vpn.volume" . | fromYaml -}}
|
||||
{{- if $volume -}}
|
||||
{{- $additionalVolumes := append .Values.additionalVolumes $volume }}
|
||||
{{- $_ := set .Values "additionalVolumes" $additionalVolumes -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the networkpolicy if not empty */}}
|
||||
{{- $networkpolicy := include "common.addon.vpn.networkpolicy" . -}}
|
||||
{{- if $networkpolicy -}}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{- $networkpolicy | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,18 +0,0 @@
|
||||
{{/*
|
||||
Template to render OpenVPN addon
|
||||
*/}}
|
||||
{{- define "common.addon.openvpn" -}}
|
||||
{{/* Append the openVPN container to the additionalContainers */}}
|
||||
{{- $container := include "common.addon.openvpn.container" . | fromYaml -}}
|
||||
{{- if $container -}}
|
||||
{{- $additionalContainers := append .Values.additionalContainers $container -}}
|
||||
{{- $_ := set .Values "additionalContainers" $additionalContainers -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the secret if not empty */}}
|
||||
{{- $secret := include "common.addon.openvpn.secret" . -}}
|
||||
{{- if $secret -}}
|
||||
{{- print "---" | nindent 0 -}}
|
||||
{{- $secret | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{/*
|
||||
The OpenVPN container(s) to be inserted
|
||||
*/}}
|
||||
{{- define "common.addon.openvpn.container" -}}
|
||||
name: openvpn
|
||||
image: "{{ .Values.addons.vpn.openvpn.image.repository }}:{{ .Values.addons.vpn.openvpn.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.addons.vpn.imagePullPolicy }}
|
||||
{{- with .Values.addons.vpn.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.env }}
|
||||
env:
|
||||
{{- range $k, $v := . }}
|
||||
- name: {{ $k }}
|
||||
value: {{ $v | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if or .Values.addons.vpn.openvpn.auth .Values.addons.vpn.openvpn.authSecret }}
|
||||
envFrom:
|
||||
- secretRef:
|
||||
{{- if .Values.addons.vpn.openvpn.authSecret }}
|
||||
name: {{ .Values.addons.vpn.openvpn.authSecret }}
|
||||
{{- else }}
|
||||
name: {{ template "common.names.fullname" . }}-openvpn
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down .Values.addons.vpn.additionalVolumeMounts .Values.persistence.shared.enabled }}
|
||||
volumeMounts:
|
||||
{{- if .Values.addons.vpn.configFile }}
|
||||
- name: vpnconfig
|
||||
mountPath: /vpn/vpn.conf
|
||||
subPath: vpnConfigfile
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.up }}
|
||||
- name: vpnconfig
|
||||
mountPath: /vpn/up.sh
|
||||
subPath: up.sh
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.down }}
|
||||
- name: vpnconfig
|
||||
mountPath: /vpn/down.sh
|
||||
subPath: down.sh
|
||||
{{- end }}
|
||||
{{- if .Values.persistence.shared.enabled }}
|
||||
- mountPath: {{ .Values.persistence.shared.mountPath }}
|
||||
name: shared
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.additionalVolumeMounts }}
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with .Values.addons.vpn.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,15 +0,0 @@
|
||||
{{/*
|
||||
The OpenVPN secrets to be included
|
||||
*/}}
|
||||
{{- define "common.addon.openvpn.secret" -}}
|
||||
{{- with .Values.addons.vpn.openvpn.auth -}}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "common.names.fullname" $ }}-openvpn
|
||||
labels:
|
||||
{{- include "common.labels" $ | nindent 4 }}
|
||||
data:
|
||||
VPN_AUTH: {{ . | b64enc }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,11 +0,0 @@
|
||||
{{/*
|
||||
Template to render Wireguard addon
|
||||
*/}}
|
||||
{{- define "common.addon.wireguard" -}}
|
||||
{{/* Append the Wireguard container to the additionalContainers */}}
|
||||
{{- $container := fromYaml (include "common.addon.wireguard.container" .) -}}
|
||||
{{- if $container -}}
|
||||
{{- $additionalContainers := append .Values.additionalContainers $container -}}
|
||||
{{- $_ := set .Values "additionalContainers" $additionalContainers -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,52 +0,0 @@
|
||||
{{/*
|
||||
The Wireguard container(s) to be inserted
|
||||
*/}}
|
||||
{{- define "common.addon.wireguard.container" -}}
|
||||
name: wireguard
|
||||
image: "{{ .Values.addons.vpn.wireguard.image.repository }}:{{ .Values.addons.vpn.wireguard.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.addons.vpn.imagePullPolicy }}
|
||||
{{- with .Values.addons.vpn.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.env }}
|
||||
env:
|
||||
{{- range $k, $v := . }}
|
||||
- name: {{ $k }}
|
||||
value: {{ $v | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down .Values.addons.vpn.additionalVolumeMounts .Values.persistence.shared.enabled }}
|
||||
volumeMounts:
|
||||
{{- if .Values.addons.vpn.configFile }}
|
||||
- name: vpnconfig
|
||||
mountPath: /etc/wireguard/wg0.conf
|
||||
subPath: vpnConfigfile
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.up }}
|
||||
- name: vpnconfig
|
||||
mountPath: /config/up.sh
|
||||
subPath: up.sh
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.down }}
|
||||
- name: vpnconfig
|
||||
mountPath: /config/down.sh
|
||||
subPath: down.sh
|
||||
{{- end }}
|
||||
{{- if .Values.persistence.shared.enabled }}
|
||||
- mountPath: {{ .Values.persistence.shared.mountPath }}
|
||||
name: shared
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.additionalVolumeMounts }}
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with .Values.addons.vpn.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,47 +0,0 @@
|
||||
{{- define "common.classes.ingress" -}}
|
||||
{{- $ingressName := include "common.names.fullname" . -}}
|
||||
{{- $values := .Values.ingress -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.ingress -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- if hasKey $values "nameSuffix" -}}
|
||||
{{- $ingressName = printf "%v-%v" $ingressName $values.nameSuffix -}}
|
||||
{{ end -}}
|
||||
{{- $svcName := $values.serviceName | default (include "common.names.fullname" .) -}}
|
||||
{{- $svcPort := $values.servicePort | default $.Values.service.port.port -}}
|
||||
apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $ingressName }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- with $values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if $values.tls }}
|
||||
tls:
|
||||
{{- range $values.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range $values.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
backend:
|
||||
serviceName: {{ $svcName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,36 +0,0 @@
|
||||
{{- define "common.classes.pvc" -}}
|
||||
{{- $values := .Values.persistence -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.persistence -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $pvcName := include "common.names.fullname" . -}}
|
||||
{{- if hasKey $values "nameSuffix" -}}
|
||||
{{- $pvcName = printf "%v-%v" $pvcName $values.nameSuffix -}}
|
||||
{{ end -}}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ $pvcName }}
|
||||
{{- if or $values.skipuninstall $values.annotations }}
|
||||
annotations:
|
||||
{{- if $values.skipuninstall }}
|
||||
"helm.sh/resource-policy": keep
|
||||
{{- end }}
|
||||
{{- with $values.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ required (printf "size is required for PVC %v" $pvcName) $values.size | quote }}
|
||||
{{- if $values.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $values.storageClass) }}""{{- else }}{{ $values.storageClass | quote }}{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,67 +0,0 @@
|
||||
{{/*
|
||||
service class: all services should adhere to this
|
||||
*/}}
|
||||
{{- define "common.classes.service" -}}
|
||||
{{- $values := .Values.service -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.service -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $serviceName := include "common.names.fullname" . -}}
|
||||
{{- if hasKey $values "nameSuffix" -}}
|
||||
{{- $serviceName = printf "%v-%v" $serviceName $values.nameSuffix -}}
|
||||
{{ end -}}
|
||||
{{- $svcType := $values.type | default "" -}}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ $serviceName }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- if $values.labels }}
|
||||
{{ toYaml $values.labels | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with $values.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }}
|
||||
type: ClusterIP
|
||||
{{- if $values.clusterIP }}
|
||||
clusterIP: {{ $values.clusterIP }}
|
||||
{{end}}
|
||||
{{- else if eq $svcType "LoadBalancer" }}
|
||||
type: {{ $svcType }}
|
||||
{{- if $values.loadBalancerIP }}
|
||||
loadBalancerIP: {{ $values.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- if $values.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ $values.externalTrafficPolicy }}
|
||||
{{- end }}
|
||||
{{- if $values.loadBalancerSourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml $values.loadBalancerSourceRanges | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- else }}
|
||||
type: {{ $svcType }}
|
||||
{{- end }}
|
||||
{{- if $values.sessionAffinity }}
|
||||
sessionAffinity: {{ $values.sessionAffinity }}
|
||||
{{- if $values.sessionAffinityConfig }}
|
||||
sessionAffinityConfig:
|
||||
{{ toYaml $values.sessionAffinityConfig | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- with $values.externalIPs }}
|
||||
externalIPs:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if $values.publishNotReadyAddresses }}
|
||||
publishNotReadyAddresses: {{ $values.publishNotReadyAddresses }}
|
||||
{{- end }}
|
||||
{{- include "common.classes.service.ports" (dict "svcType" $svcType "values" $values ) | trim | nindent 2 }}
|
||||
selector:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 4 }}
|
||||
{{- end }}
|
||||
@@ -1,23 +0,0 @@
|
||||
{{/*
|
||||
logic that lists the ports and additionalPorts for a service
|
||||
*/}}
|
||||
{{- define "common.classes.service.ports" -}}
|
||||
{{- $ports := list -}}
|
||||
{{- $values := .values -}}
|
||||
{{- $ports = mustAppend $ports $values.port -}}
|
||||
{{- range $_ := $values.additionalPorts -}}
|
||||
{{- $ports = mustAppend $ports . -}}
|
||||
{{- end }}
|
||||
{{- if $ports -}}
|
||||
ports:
|
||||
{{- range $_ := $ports }}
|
||||
- port: {{ .port }}
|
||||
targetPort: {{ .targetPort | default .name }}
|
||||
protocol: {{ .protocol | default "TCP" }}
|
||||
name: {{ .name }}
|
||||
{{- if (and (eq $.svcType "NodePort") (not (empty .nodePort))) }}
|
||||
nodePort: {{ .nodePort }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
@@ -1,32 +0,0 @@
|
||||
{{/*
|
||||
Return the appropriate apiVersion for deployment.
|
||||
*/}}
|
||||
{{- define "common.capabilities.deployment.apiVersion" -}}
|
||||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "apps/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for statefulset.
|
||||
*/}}
|
||||
{{- define "common.capabilities.statefulset.apiVersion" -}}
|
||||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "apps/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "apps/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for ingress.
|
||||
*/}}
|
||||
{{- define "common.capabilities.ingress.apiVersion" -}}
|
||||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,19 +0,0 @@
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "common.labels" -}}
|
||||
helm.sh/chart: {{ include "common.names.chart" . }}
|
||||
{{ include "common.labels.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "common.labels.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "common.names.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
@@ -1,42 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "common.names.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "common.names.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "common.names.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "common.names.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "k8s-at-home.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,9 +0,0 @@
|
||||
{{- define "common.values.setup" -}}
|
||||
{{- /* Merge the local chart values and the common chart defaults */ -}}
|
||||
{{- if .Values.common -}}
|
||||
{{- $defaultValues := deepCopy .Values.common -}}
|
||||
{{- $userValues := deepCopy (omit .Values "common") -}}
|
||||
{{- $mergedValues := mustMergeOverwrite $defaultValues $userValues -}}
|
||||
{{- $_ := set . "Values" (deepCopy $mergedValues) -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,37 +0,0 @@
|
||||
{{- /*
|
||||
The main containter that will be included in the controller
|
||||
*/ -}}
|
||||
{{- define "common.controller.mainContainer" -}}
|
||||
- name: {{ template "common.names.fullname" . }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- with .Values.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.env }}
|
||||
env:
|
||||
{{- range $key, $value := .Values.env }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- include "common.controller.ports" . | trim | nindent 2 }}
|
||||
volumeMounts:
|
||||
{{- range $index, $PVC := .Values.persistence }}
|
||||
{{- if $PVC.enabled }}
|
||||
- mountPath: {{ $PVC.mountPath }}
|
||||
name: {{ $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalVolumeMounts }}
|
||||
{{- toYaml .Values.additionalVolumeMounts | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
{{- include "common.controller.probes.tcpSocket" . | nindent 2 }}
|
||||
|
||||
{{- with .Values.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,36 +0,0 @@
|
||||
{{/*
|
||||
ports included by the controller
|
||||
*/}}
|
||||
{{- define "common.controller.ports" -}}
|
||||
{{- $ports := list -}}
|
||||
{{- with .Values.service -}}
|
||||
{{- $serviceValues := deepCopy . -}}
|
||||
{{/* append the ports for the main service */}}
|
||||
{{- if .enabled -}}
|
||||
{{- $ports = mustAppend $ports .port -}}
|
||||
{{- range $_ := .additionalPorts -}}
|
||||
{{/* append the additonalPorts for the main service */}}
|
||||
{{- $ports = mustAppend $ports . -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{/* append the ports for each additional service */}}
|
||||
{{- range $_ := .additionalServices }}
|
||||
{{- if .enabled -}}
|
||||
{{- $ports = mustAppend $ports .port -}}
|
||||
{{- range $_ := .additionalPorts -}}
|
||||
{{/* append the additonalPorts for each additional service */}}
|
||||
{{- $ports = mustAppend $ports . -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{/* export/render the list of ports */}}
|
||||
{{- if $ports -}}
|
||||
ports:
|
||||
{{- range $_ := $ports }}
|
||||
- name: {{ required "Missing port.name" .name }}
|
||||
containerPort: {{ required "Missing port.port" .port }}
|
||||
protocol: {{ .protocol | default "TCP" }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -1,29 +0,0 @@
|
||||
{{/*
|
||||
Default liveness/readiness/startup probes
|
||||
*/}}
|
||||
{{- define "common.controller.probes.tcpSocket" -}}
|
||||
{{- if .Values.probes.liveness.enabled -}}
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: {{ .Values.service.port.name }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.probes.readiness.enabled }}
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: {{ .Values.service.port.name }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.probes.startup.enabled }}
|
||||
startupProbe:
|
||||
tcpSocket:
|
||||
port: {{ .Values.service.port.name }}
|
||||
initialDelaySeconds: {{ .Values.probes.startup.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.startup.failureThreshold }}
|
||||
periodSeconds: {{ .Values.probes.startup.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,31 +0,0 @@
|
||||
{{/*
|
||||
volumes included by the controller
|
||||
*/}}
|
||||
{{- define "common.controller.volumes" -}}
|
||||
{{- range $index, $persistence := .Values.persistence }}
|
||||
{{- if $persistence.enabled }}
|
||||
- name: {{ $index }}
|
||||
{{- if $persistence.existingClaim }}
|
||||
{{- /* Always prefer an existingClaim if that is set */}}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ $persistence.existingClaim }}
|
||||
{{- else -}}
|
||||
{{- if $persistence.emptyDir -}}
|
||||
{{- /* Always prefer an emptyDir next if that is set */}}
|
||||
emptyDir: {}
|
||||
{{- else -}}
|
||||
{{- /* Otherwise refer to the PVC name */}}
|
||||
persistentVolumeClaim:
|
||||
{{- if $persistence.nameSuffix }}
|
||||
claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $persistence.nameSuffix }}
|
||||
{{- else }}
|
||||
claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalVolumes }}
|
||||
{{- toYaml .Values.additionalVolumes | nindent 0 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -1,237 +0,0 @@
|
||||
# type: options are statefulset or deployment
|
||||
controllerType: deployment
|
||||
# Set annotations on the deployment/statefulset
|
||||
controllerAnnotations: {}
|
||||
# Set labels on the deployment/statefulset
|
||||
controllerLabels: {}
|
||||
|
||||
replicas: 1
|
||||
strategy:
|
||||
## For Deployments, valid values are Recreate and RollingUpdate
|
||||
## For StatefulSets, valid values are OnDelete and RollingUpdate
|
||||
type: RollingUpdate
|
||||
|
||||
# Set annotations on the pod
|
||||
podAnnotations: {}
|
||||
|
||||
env: {}
|
||||
|
||||
initContainers: []
|
||||
|
||||
additionalContainers: []
|
||||
|
||||
# Probes configuration
|
||||
probes:
|
||||
liveness:
|
||||
enabled: true
|
||||
initialDelaySeconds: 30
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
readiness:
|
||||
enabled: true
|
||||
initialDelaySeconds: 30
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
startup:
|
||||
enabled: false
|
||||
initialDelaySeconds: 5
|
||||
failureThreshold: 30
|
||||
periodSeconds: 10
|
||||
|
||||
service:
|
||||
enabled: true
|
||||
type: ClusterIP
|
||||
# Specify the default port information
|
||||
port:
|
||||
port:
|
||||
name: http
|
||||
protocol: TCP
|
||||
targetPort: http
|
||||
## Specify the nodePort value for the LoadBalancer and NodePort service types.
|
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
|
||||
##
|
||||
# nodePort:
|
||||
additionalPorts: []
|
||||
|
||||
## Provide any additional annotations which may be required. This can be used to
|
||||
## set the LoadBalancer service type to internal only.
|
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
|
||||
##
|
||||
annotations: {}
|
||||
labels: {}
|
||||
|
||||
additionalServices: []
|
||||
# - enabled: false
|
||||
# nameSuffix: api
|
||||
# type: ClusterIP
|
||||
# # Specify the default port information
|
||||
# port:
|
||||
# port: ""
|
||||
# name: http
|
||||
# protocol: TCP
|
||||
# targetPort: http
|
||||
# # nodePort:
|
||||
# additionalPorts: []
|
||||
# annotations: {}
|
||||
# labels: {}
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
labels: {}
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
# Ignored if not kubeVersion >= 1.14-0
|
||||
pathType: Prefix
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
additionalIngresses: []
|
||||
# - enabled: false
|
||||
# nameSuffix: "api"
|
||||
# annotations: {}
|
||||
# # kubernetes.io/ingress.class: nginx
|
||||
# # kubernetes.io/tls-acme: "true"
|
||||
# labels: {}
|
||||
# hosts:
|
||||
# - host: chart-example.local
|
||||
# paths:
|
||||
# - path: /api
|
||||
# # Ignored if not kubeVersion >= 1.14-0
|
||||
# pathType: Prefix
|
||||
# tls: []
|
||||
# # - secretName: chart-example-tls
|
||||
# # hosts:
|
||||
# # - chart-example.local
|
||||
|
||||
persistence:
|
||||
config:
|
||||
enabled: false
|
||||
mountPath: /config
|
||||
## configuration data Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
##
|
||||
# storageClass: "-"
|
||||
##
|
||||
## If you want to reuse an existing claim, you can pass the name of the PVC using
|
||||
## the existingClaim variable
|
||||
# existingClaim: your-claim
|
||||
# subPath: some-subpath
|
||||
accessMode: ReadWriteOnce
|
||||
size: 1Gi
|
||||
## Do not delete the pvc upon helm uninstall
|
||||
skipuninstall: false
|
||||
|
||||
# Create an emptyDir volume to share between all containers
|
||||
shared:
|
||||
enabled: false
|
||||
emptyDir: true
|
||||
mountPath: /shared
|
||||
|
||||
additionalVolumes: []
|
||||
|
||||
additionalVolumeMounts: []
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
affinity: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
addons:
|
||||
vpn:
|
||||
enabled: false
|
||||
|
||||
# VPN type: options are openvpn or wireguard
|
||||
type: openvpn
|
||||
|
||||
# OpenVPN specific configuration
|
||||
openvpn:
|
||||
image:
|
||||
repository: dperson/openvpn-client
|
||||
tag: latest
|
||||
|
||||
# Credentials to connect to the VPN Service (used with -a)
|
||||
auth: # "user;password"
|
||||
# OR specify an existing secret that contains the credentials. Credentials should be stored
|
||||
# under the VPN_AUTH key
|
||||
authSecret: # my-vpn-secret
|
||||
|
||||
# WireGuard specific configuration
|
||||
wireguard:
|
||||
image:
|
||||
repository: k8sathome/wireguard
|
||||
tag: 1.0.20200827
|
||||
|
||||
imagePullPolicy: IfNotPresent
|
||||
|
||||
# Set the VPN container securityContext
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
|
||||
# All variables specified here will be added to the vpn sidecar container
|
||||
# See the documentation of the VPN image for all config values
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
|
||||
# Provide a customized vpn configuration file to be used by the VPN.
|
||||
configFile: # |-
|
||||
# Some Example Config
|
||||
# remote greatvpnhost.com 8888
|
||||
# auth-user-pass
|
||||
# Cipher AES
|
||||
|
||||
# Provide custom up/down scripts that can be used by the vpnConf
|
||||
scripts:
|
||||
up: # |-
|
||||
# #!/bin/bash
|
||||
# echo "connected" > /shared/vpnstatus
|
||||
down: # |-
|
||||
# #!/bin/bash
|
||||
# echo "disconnected" > /shared/vpnstatus
|
||||
|
||||
additionalVolumeMounts: []
|
||||
|
||||
# Optionally specify a livenessProbe, e.g. to check if the connection is still
|
||||
# being protected by the VPN
|
||||
livenessProbe: {}
|
||||
# exec:
|
||||
# command:
|
||||
# - sh
|
||||
# - -c
|
||||
# - if [ $(curl -s https://ipinfo.io/country) == 'US' ]; then exit 0; else exit $?; fi
|
||||
# initialDelaySeconds: 30
|
||||
# periodSeconds: 60
|
||||
# failureThreshold: 1
|
||||
|
||||
# If set to true, will deploy a network policy that blocks all outbound
|
||||
# traffic except traffic specified as allowed
|
||||
networkPolicy:
|
||||
enabled: false
|
||||
|
||||
# The egress configuration for your network policy, All outbound traffic
|
||||
# From the pod will be blocked unless specified here. Your cluster must
|
||||
# have a CNI that supports network policies (Canal, Calico, etc...)
|
||||
# https://kubernetes.io/docs/concepts/services-networking/network-policies/
|
||||
# https://github.com/ahmetb/kubernetes-network-policy-recipes
|
||||
egress:
|
||||
# - to:
|
||||
# - ipBlock:
|
||||
# cidr: 0.0.0.0/0
|
||||
# ports:
|
||||
# - port: 53
|
||||
# protocol: UDP
|
||||
# - port: 53
|
||||
# protocol: TCP
|
||||
@@ -1,24 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode
|
||||
# OWNERS file for Kubernetes
|
||||
OWNERS
|
||||
@@ -1,21 +0,0 @@
|
||||
apiVersion: v2
|
||||
appVersion: latest
|
||||
description: CouchPotato (CP) is an automatic NZB and torrent downloader.
|
||||
name: couchpotato
|
||||
version: 3.0.0
|
||||
keywords:
|
||||
- couchpotato
|
||||
- usenet
|
||||
- bittorrent
|
||||
home: https://github.com/k8s-at-home/charts/tree/master/charts/couchpotato
|
||||
icon: https://github.com/CouchPotato/CouchPotatoServer/raw/master/couchpotato/static/images/icons/android.png
|
||||
sources:
|
||||
- https://hub.docker.com/r/linuxserver/couchpotato/
|
||||
- https://github.com/CouchPotato/CouchPotatoServer/
|
||||
maintainers:
|
||||
- name: billimek
|
||||
email: jeff@billimek.com
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://k8s-at-home.com/charts/
|
||||
version: ^1.5.0
|
||||
@@ -1,4 +0,0 @@
|
||||
approvers:
|
||||
- billimek
|
||||
reviewers:
|
||||
- billimek
|
||||
@@ -1,76 +0,0 @@
|
||||
# Couchpotato
|
||||
|
||||
This is a helm chart for [couchpotato](https://github.com/CouchPotato/CouchPotatoServer).
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```shell
|
||||
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
$ helm install k8s-at-home/couchpotato
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name my-release k8s-at-home/couchpotato
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/couchpotato/values.yaml)
|
||||
file. It has several commented out suggested values.
|
||||
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
```console
|
||||
helm install couchpotato \
|
||||
--set env.TZ="America/New_York" \
|
||||
k8s-at-home/couchpotato
|
||||
```
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
|
||||
chart. For example,
|
||||
```console
|
||||
helm install couchpotato k8s-at-home/couchpotato --values values.yaml
|
||||
```
|
||||
|
||||
```yaml
|
||||
image:
|
||||
tag: ...
|
||||
```
|
||||
|
||||
---
|
||||
**NOTE**
|
||||
|
||||
If you get
|
||||
```console
|
||||
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
|
||||
```
|
||||
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
|
||||
|
||||
---
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
|
||||
|
||||
### Upgrading from 2.x.x to 3.x.x
|
||||
|
||||
Due to migrating to a centralized common library some values in `values.yaml` have changed.
|
||||
|
||||
Examples:
|
||||
|
||||
* `service.port` has been moved to `service.port.port`.
|
||||
* `persistence.type` has been moved to `controllerType`.
|
||||
|
||||
Refer to the library values.yaml for more configuration options.
|
||||
@@ -1,2 +0,0 @@
|
||||
ingress:
|
||||
enabled: true
|
||||
@@ -1,40 +0,0 @@
|
||||
# Default values for Couchpotato.
|
||||
|
||||
image:
|
||||
repository: linuxserver/couchpotato
|
||||
pullPolicy: Always
|
||||
tag: latest
|
||||
|
||||
strategy:
|
||||
type: Recreate
|
||||
|
||||
service:
|
||||
port:
|
||||
port: 5050
|
||||
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
# PUID: 1001
|
||||
# PGID: 1001
|
||||
|
||||
persistence:
|
||||
config:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
|
||||
media:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
mountPath: /media
|
||||
## Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
# storageClass: "-"
|
||||
# accessMode: ReadWriteOnce
|
||||
# size: 1Gi
|
||||
## Do not delete the pvc upon helm uninstall
|
||||
# skipuninstall: false
|
||||
# existingClaim: ""
|
||||
@@ -1,12 +0,0 @@
|
||||
apiVersion: v2
|
||||
appVersion: v0.5-4
|
||||
description: DashMachine is another web application bookmark dashboard, with fun features.
|
||||
icon: https://github.com/rmountjoy92/DashMachine/raw/master/dashmachine/static/images/logo/logo.png
|
||||
home: https://github.com/rmountjoy92/DashMachine
|
||||
name: dashmachine
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/rmountjoy92/DashMachine
|
||||
maintainers:
|
||||
- name: carpenike
|
||||
email: ryan@ryanholt.net
|
||||
@@ -1,31 +0,0 @@
|
||||
dashmachine
|
||||
===========
|
||||
DashMachine is another web application bookmark dashboard, with fun features.
|
||||
|
||||
## Chart Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| affinity | object | `{}` | |
|
||||
| deploymentAnnotations | object | `{}` | |
|
||||
| fullnameOverride | string | `""` | |
|
||||
| image.pullPolicy | string | `"IfNotPresent"` | |
|
||||
| image.repository | string | `"rmountjoy/dashmachine"` | |
|
||||
| image.tag | string | `"latest"` | |
|
||||
| ingress.annotations | object | `{}` | |
|
||||
| ingress.enabled | bool | `false` | |
|
||||
| ingress.hosts[0] | string | `"chart-example.local"` | |
|
||||
| ingress.paths[0] | string | `"/"` | |
|
||||
| ingress.tls | list | `[]` | |
|
||||
| nameOverride | string | `""` | |
|
||||
| nodeSelector | object | `{}` | |
|
||||
| persistence.accessModes[0] | string | `"ReadWriteOnce"` | |
|
||||
| persistence.enabled | bool | `false` | |
|
||||
| persistence.size | string | `"1Gi"` | |
|
||||
| persistence.storageClassName | string | `""` | |
|
||||
| podAnnotations | object | `{}` | |
|
||||
| replicaCount | int | `1` | |
|
||||
| resources | object | `{}` | |
|
||||
| service.port | int | `5000` | |
|
||||
| service.type | string | `"ClusterIP"` | |
|
||||
| tolerations | list | `[]` | |
|
||||
@@ -1,21 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range $.Values.ingress.paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host }}{{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dashmachine.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get svc -w {{ include "dashmachine.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "dashmachine.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "dashmachine.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:80
|
||||
{{- end }}
|
||||
@@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "dashmachine.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "dashmachine.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "dashmachine.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user