Compare commits
288 Commits
mautrix-di
...
gh-pages
Author | SHA1 | Date | |
---|---|---|---|
|
610af91b32 | ||
|
d3abb9efb5 | ||
|
473bbf0dba | ||
|
9de1e8bb20 | ||
|
c273645944 | ||
|
35b6e040fb | ||
|
0a73098177 | ||
|
2510671468 | ||
|
528fb29dc1 | ||
|
71a76aef91 | ||
|
a683733861 | ||
|
7193fa0e43 | ||
|
4d0778700c | ||
|
9400aae940 | ||
|
bd37be4bd5 | ||
|
11918960dc | ||
|
e5ad8122cb | ||
|
34c5ae6ff9 | ||
|
efaf49caeb | ||
|
c0b6e849ae | ||
|
38487b296b | ||
|
13b0b3c060 | ||
|
81d804f550 | ||
|
72c30e6dc5 | ||
|
f0c2cd0b19 | ||
|
45670a55c8 | ||
|
5d96c9a1d6 | ||
|
9c0b97c753 | ||
|
5b4f8d0ed7 | ||
|
f07d9ec151 | ||
|
515f4f91be | ||
|
a2dc782e14 | ||
|
fe322f909e | ||
|
fd75a39adb | ||
|
7b29fe16d8 | ||
|
081ac23ce4 | ||
|
552ee9f4ce | ||
|
9b96e15872 | ||
|
6b9abf71cb | ||
|
4b84ec822a | ||
|
c08ddac2cb | ||
|
0194e3fb79 | ||
|
37e3de028e | ||
|
3ac94f8aed | ||
|
30c8789ffa | ||
|
8f4de35f4a | ||
|
4dafc9c9e2 | ||
|
b42ff70fb3 | ||
|
047338cf09 | ||
|
9524ccad75 | ||
|
a82c593200 | ||
|
13da8c9acb | ||
|
b6ceaa4dcd | ||
|
500d1cb201 | ||
|
6d5e37091c | ||
|
d374fb1638 | ||
|
563b46e16b | ||
|
7776863d14 | ||
|
4f02bbc1c7 | ||
|
224437bb9b | ||
|
d5a477f068 | ||
|
9149d3c05c | ||
|
dc072ba102 | ||
|
c3bb7d6137 | ||
|
7e38a8aa04 | ||
|
4486902d0e | ||
|
81006a958e | ||
|
a1b6a39989 | ||
|
4caa7851a4 | ||
|
0930742d3e | ||
|
4f2ed4e5cc | ||
|
43f7bf3766 | ||
|
ad7e930bd9 | ||
|
7a3cfda12f | ||
|
da8171ce2c | ||
|
e4cbf821a7 | ||
|
efed4951f6 | ||
|
32927c3c64 | ||
|
6239551f2c | ||
|
3992d9a7a0 | ||
|
9700f8c662 | ||
|
a12294d785 | ||
|
939bb2a104 | ||
|
98a660ac54 | ||
|
784bd59523 | ||
|
064e67a9fd | ||
|
b9a68c67b1 | ||
|
0b69ea6362 | ||
|
1ba753446f | ||
|
9f1c32e5fc | ||
|
4147016809 | ||
|
24b52d8716 | ||
|
2576527aa0 | ||
|
2aae35d757 | ||
|
548db97f81 | ||
|
094a8b3b90 | ||
|
222a87befc | ||
|
44be1ae304 | ||
|
e8fb911722 | ||
|
7cd16dd92f | ||
|
1f240a8fac | ||
|
4b84bd188e | ||
|
f4a591eaca | ||
|
8a0068c120 | ||
|
fc751e627b | ||
|
37e374fa31 | ||
|
d6062263de | ||
|
631e5c3073 | ||
|
d9e72caf94 | ||
|
4d909a32b4 | ||
|
390b7ccfa1 | ||
|
5e0fc7ffbe | ||
|
7fd290fb89 | ||
|
4b4acdf570 | ||
|
4ee3bb4d49 | ||
|
d04e10a4e5 | ||
|
86b7430210 | ||
|
c4c054f983 | ||
|
933a92bb07 | ||
|
952ab164d4 | ||
|
c588e18077 | ||
|
0e91873833 | ||
|
3843f7d272 | ||
|
b3f43086d7 | ||
|
af8a8127fe | ||
|
c0f6ac7fbc | ||
|
bf62fdd631 | ||
|
b4718bce46 | ||
|
792a5723be | ||
|
6ca9b94db4 | ||
|
a530195ea9 | ||
|
02801b1aa1 | ||
|
810d74b2ae | ||
|
d69a2d28b0 | ||
|
d054e42199 | ||
|
63b5ca7614 | ||
|
4be5cd418d | ||
|
df96e6556e | ||
|
59b2ed8001 | ||
|
cd9fbe56a4 | ||
|
20fcd67ea3 | ||
|
6f6d30a862 | ||
|
f1a65dd177 | ||
|
bdd7060748 | ||
|
07e2ac7acd | ||
|
787765f1e7 | ||
|
9f18f3ba2f | ||
|
e62daee353 | ||
|
85f3f47dca | ||
|
9ff16890c5 | ||
|
c68b04c38e | ||
|
04d98c0d65 | ||
|
62512ca909 | ||
|
9409e36b58 | ||
|
25af8d718d | ||
|
554c480d39 | ||
|
b55dfc3cad | ||
|
afd5c8b4b2 | ||
|
c7cf440b0e | ||
|
a5be172d48 | ||
|
dbc1cdd8d5 | ||
|
3c2d3d6ef4 | ||
|
6890d1d974 | ||
|
df8bfb1b55 | ||
|
a6cb051c9c | ||
|
8154a36b2d | ||
|
297b3f9a70 | ||
|
af003f0990 | ||
|
0a2facc20d | ||
|
f06d4e26a1 | ||
|
a2a25f3e2d | ||
|
e7ee0ee1d6 | ||
|
0553d58a6b | ||
|
5db00bf5b8 | ||
|
57178b4b42 | ||
|
18f2464049 | ||
|
ba610b41c8 | ||
|
3cfedcd13f | ||
|
1d4547aea8 | ||
|
eea3e93b2c | ||
|
72087e86aa | ||
|
ee1f7a1760 | ||
|
97d93a6f55 | ||
|
98cc39ddcc | ||
|
cd41ea7174 | ||
|
c65b033644 | ||
|
e07b07eb64 | ||
|
871e6e0a62 | ||
|
e80814b9b9 | ||
|
e37a5842f5 | ||
|
7be8dfcd6b | ||
|
d69358027d | ||
|
3c36d6ce01 | ||
|
4a583293fc | ||
|
04bce9d600 | ||
|
c8b61dec7e | ||
|
fca1400d3b | ||
|
ec74e2fae0 | ||
|
f0d53c3b4a | ||
|
25b7379a06 | ||
|
6462d8fed1 | ||
|
de2b2541c0 | ||
|
8dde430d41 | ||
|
f27eaafdaa | ||
|
fc12a578fb | ||
|
a05bcb83cb | ||
|
c62e8ab3ef | ||
|
f44a361278 | ||
|
558fdfd00e | ||
|
f38e146609 | ||
|
10129a8e68 | ||
|
814ac3c4f8 | ||
|
23d159db0a | ||
|
51ae6468dc | ||
|
cbff0f59f2 | ||
|
bce9ccfa78 | ||
|
f6a0eedc3f | ||
|
3cca83b6cc | ||
|
3f309e422c | ||
|
455e9d9384 | ||
|
c7fdfd8f5c | ||
|
bd13cce830 | ||
|
bfc0e8b773 | ||
|
c784a90fed | ||
|
6eba5070ff | ||
|
9ef14fba32 | ||
|
3c9a2f82af | ||
|
e1c29c604f | ||
|
c3e8cf22cc | ||
|
bbfb4ee61c | ||
|
c459ef40d3 | ||
|
9f16e49683 | ||
|
5b21ae3351 | ||
|
57458962e8 | ||
|
543addccb4 | ||
|
02f2335783 | ||
|
08d9c65bd9 | ||
|
716d16810f | ||
|
7bb2f3ff91 | ||
|
e8d1097b55 | ||
|
106f40f661 | ||
|
27cf8540f7 | ||
|
5273942d52 | ||
|
76049fa566 | ||
|
69252499cd | ||
|
d913d3da59 | ||
|
396bbfe5f2 | ||
|
4c895a4ed0 | ||
|
e9a392c950 | ||
|
445738af76 | ||
|
9ea0742dfa | ||
|
4e9899edc7 | ||
|
f55b3255e3 | ||
|
f39c7c4a80 | ||
|
480d729a4c | ||
|
250938ffff | ||
|
6c3ad7f7ad | ||
|
e1bc375c55 | ||
|
c75b850bfa | ||
|
ed29678481 | ||
|
a7a249fe91 | ||
|
15375ef4ba | ||
|
d49119097b | ||
|
570a13a8f4 | ||
|
6888ede71a | ||
|
16acf28739 | ||
|
6bda8bee03 | ||
|
0278d8c496 | ||
|
6dfd30b631 | ||
|
e62ffb332d | ||
|
3792ad098f | ||
|
ad46386aaf | ||
|
8976ae00ec | ||
|
3ca7ae0bec | ||
|
cfa13cf66a | ||
|
8bf1ac6e6c | ||
|
aaf2cda058 | ||
|
75c28e6358 | ||
|
a36ea6690f | ||
|
6cb3333d9f | ||
|
5e9f0b0c7c | ||
|
663f974072 | ||
|
4b0c86c2b9 | ||
|
ee7ea230e6 | ||
|
5f147e0d0a | ||
1ab49f7f94 | |||
2992ee5b5b | |||
be85591839 |
@@ -1,2 +0,0 @@
|
|||||||
# This file is processed by Renovate bot so that it creates a PR on new major Renovate versions
|
|
||||||
FROM renovate/renovate:37
|
|
112
.github/renovate.json
vendored
112
.github/renovate.json
vendored
@@ -1,112 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
||||||
"extends": [
|
|
||||||
"config:recommended",
|
|
||||||
"mergeConfidence:all-badges",
|
|
||||||
":rebaseStalePrs"
|
|
||||||
],
|
|
||||||
"timezone": "US/Mountain",
|
|
||||||
"schedule": [
|
|
||||||
"every weekday"
|
|
||||||
],
|
|
||||||
"labels": [],
|
|
||||||
"packageRules": [
|
|
||||||
{
|
|
||||||
"description": "Disables for non major Renovate version",
|
|
||||||
"matchPaths": [
|
|
||||||
".github/renovate-update-notification/Dockerfile"
|
|
||||||
],
|
|
||||||
"matchUpdateTypes": [
|
|
||||||
"minor",
|
|
||||||
"patch",
|
|
||||||
"pin",
|
|
||||||
"digest",
|
|
||||||
"rollback"
|
|
||||||
],
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Generate for major Renovate version",
|
|
||||||
"matchPaths": [
|
|
||||||
".github/renovate-update-notification/Dockerfile"
|
|
||||||
],
|
|
||||||
"matchUpdateTypes": [
|
|
||||||
"major"
|
|
||||||
],
|
|
||||||
"addLabels": [
|
|
||||||
"upgrade"
|
|
||||||
],
|
|
||||||
"automerge": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Label service images",
|
|
||||||
"matchPackageNames": [
|
|
||||||
"ghcr.io/alex1989hu/kubelet-serving-cert-approver",
|
|
||||||
"ghcr.io/cloudnative-pg/postgresql",
|
|
||||||
"redis/redis-stack-server"
|
|
||||||
],
|
|
||||||
"matchDatasources": [
|
|
||||||
"docker"
|
|
||||||
],
|
|
||||||
"addLabels": [
|
|
||||||
"service",
|
|
||||||
"image"
|
|
||||||
],
|
|
||||||
"automerge": false,
|
|
||||||
"minimumReleaseAge": "3 days"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Label service charts",
|
|
||||||
"matchPackageNames": [
|
|
||||||
"elasticsearch",
|
|
||||||
"redis"
|
|
||||||
],
|
|
||||||
"matchDatasources": [
|
|
||||||
"helm"
|
|
||||||
],
|
|
||||||
"addLabels": [
|
|
||||||
"serivce",
|
|
||||||
"chart"
|
|
||||||
],
|
|
||||||
"automerge": false,
|
|
||||||
"minimumReleaseAge": "3 days"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Label application images",
|
|
||||||
"matchPackageNames": [
|
|
||||||
"bbilly1/tubearchivist-jf",
|
|
||||||
"bbilly1/tubearchivist",
|
|
||||||
"freshrss/freshrss",
|
|
||||||
"ghcr.io/gethomepage/homepage",
|
|
||||||
"homeassistant/home-assistant",
|
|
||||||
"linuxserver/calibre",
|
|
||||||
"linuxserver/code-server",
|
|
||||||
"linuxserver/cops",
|
|
||||||
"outlinewiki/outline",
|
|
||||||
"rmcrackan/libation"
|
|
||||||
],
|
|
||||||
"matchDatasources": [
|
|
||||||
"docker"
|
|
||||||
],
|
|
||||||
"addLabels": [
|
|
||||||
"application",
|
|
||||||
"image"
|
|
||||||
],
|
|
||||||
"automerge": false,
|
|
||||||
"minimumReleaseAge": "3 days"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Label application charts",
|
|
||||||
"matchPackageNames": [],
|
|
||||||
"matchDatasources": [
|
|
||||||
"helm"
|
|
||||||
],
|
|
||||||
"addLabels": [
|
|
||||||
"application",
|
|
||||||
"chart"
|
|
||||||
],
|
|
||||||
"automerge": false,
|
|
||||||
"minimumReleaseAge": "3 days"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
37
.github/workflows/lint-test.yaml
vendored
37
.github/workflows/lint-test.yaml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: lint-and-test-charts
|
|
||||||
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint-test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Set up Helm
|
|
||||||
uses: azure/setup-helm@v4
|
|
||||||
with:
|
|
||||||
version: v3.13.3
|
|
||||||
|
|
||||||
- uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.10"
|
|
||||||
check-latest: true
|
|
||||||
|
|
||||||
- name: Set up chart-testing
|
|
||||||
uses: helm/chart-testing-action@v2.6.1
|
|
||||||
|
|
||||||
- name: Run chart-testing (list-changed)
|
|
||||||
id: list-changed
|
|
||||||
run: |
|
|
||||||
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
|
|
||||||
if [[ -n "$changed" ]]; then
|
|
||||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Run chart-testing (lint)
|
|
||||||
if: steps.list-changed.outputs.changed == 'true'
|
|
||||||
run: ct lint --target-branch ${{ github.event.repository.default_branch }}
|
|
27
.github/workflows/release.yml
vendored
27
.github/workflows/release.yml
vendored
@@ -1,27 +0,0 @@
|
|||||||
name: release-charts
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Configure Git
|
|
||||||
run: |
|
|
||||||
git config user.name "$GITHUB_ACTOR"
|
|
||||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
|
||||||
|
|
||||||
- name: Run chart-releaser
|
|
||||||
uses: helm/chart-releaser-action@v1.6.0
|
|
||||||
env:
|
|
||||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,9 +0,0 @@
|
|||||||
# Compiled Helm chart dependencies
|
|
||||||
charts/**/Chart.lock
|
|
||||||
charts/**/charts/
|
|
||||||
|
|
||||||
# Testing
|
|
||||||
__snapshot__/
|
|
||||||
|
|
||||||
# Docs
|
|
||||||
_site/
|
|
201
LICENSE
201
LICENSE
@@ -1,201 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
1
_config.yml
Normal file
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
theme: jekyll-theme-cayman
|
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: tubearchivist-to-jellyfin
|
|
||||||
version: 0.0.3
|
|
||||||
description: Import library from tubearchivist to jellyfin
|
|
||||||
keywords:
|
|
||||||
- tubearchivist
|
|
||||||
- jellyfin
|
|
||||||
- job
|
|
||||||
sources:
|
|
||||||
- https://github.com/tubearchivist/tubearchivist-jf
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/102734415?s=48&v=4
|
|
||||||
appVersion: "v0.1.2"
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Tube Archivist Jellyfin Integration](https://github.com/tubearchivist/tubearchivist-jf)
|
|
||||||
|
|
||||||
Import your Tube Archivist media folder into Jellyfin
|
|
||||||
|
|
||||||
|
|
||||||
This chart bootstraps a [Tube Archivist Jellyfin Integration](https://github.com/tubearchivist/tubearchivist-jf) CronJob on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
- CronJob
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,37 +0,0 @@
|
|||||||
apiVersion: batch/v1
|
|
||||||
kind: CronJob
|
|
||||||
metadata:
|
|
||||||
name: tubearchivist-to-jellyfin
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: tubearchivist-to-jellyfin
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: job
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
schedule: {{ .Values.job.schedule }}
|
|
||||||
successfulJobsHistoryLimit: 3
|
|
||||||
failedJobsHistoryLimit: 3
|
|
||||||
jobTemplate:
|
|
||||||
spec:
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
restartPolicy: Never
|
|
||||||
containers:
|
|
||||||
- name: tubearchivist-to-jellyfin
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
||||||
command: ["python"]
|
|
||||||
args: ["main.py"]
|
|
||||||
{{- with .Values.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 16 }}
|
|
||||||
{{- end }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: tubearchivist-youtube
|
|
||||||
mountPath: /youtube
|
|
||||||
volumes:
|
|
||||||
- name: tubearchivist-youtube
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.youtube.claimName }}
|
|
@@ -1,10 +0,0 @@
|
|||||||
job:
|
|
||||||
schedule: "0 * * * *"
|
|
||||||
image:
|
|
||||||
repository: bbilly1/tubearchivist-jf
|
|
||||||
tag: v0.1.2
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
envFrom:
|
|
||||||
persistence:
|
|
||||||
youtube:
|
|
||||||
claimName:
|
|
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: calibre-server
|
|
||||||
version: 0.0.6
|
|
||||||
description: Chart for Calibre content database
|
|
||||||
keywords:
|
|
||||||
- media
|
|
||||||
- books
|
|
||||||
sources:
|
|
||||||
- https://github.com/kovidgoyal/calibre
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://raw.githubusercontent.com/kovidgoyal/calibre/master/resources/images/lt.png
|
|
||||||
appVersion: 7.5.1
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Calibre](https://calibre-ebook.com/)
|
|
||||||
|
|
||||||
calibre is an e-book manager. It can view, convert, edit and catalog e-books in all of the major e-book formats. It can also talk to e-book reader devices. It can go out to the internet and fetch metadata for your books. It can download newspapers and convert them into e-books for convenient reading.
|
|
||||||
|
|
||||||
This chart bootstraps a [Calibre](https://github.com/home-assistant) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
- Traefik v2 / IngressRoute
|
|
||||||
- Authentik / Auth
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,83 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: calibre-server
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: calibre-server
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: calibre-server
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.http.port }}
|
|
||||||
protocol: TCP
|
|
||||||
- name: content
|
|
||||||
containerPort: {{ .Values.service.content.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /config
|
|
||||||
name: calibre-server-config
|
|
||||||
- mountPath: /books
|
|
||||||
name: calibre-server-books
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
livenessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
readinessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
startupProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 30
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 5
|
|
||||||
volumes:
|
|
||||||
- name: calibre-server-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: calibre-server-config
|
|
||||||
- name: calibre-server-books
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.books.claimName }}
|
|
@@ -1,34 +0,0 @@
|
|||||||
{{- if .Values.ingressRoute.enabled }}
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: calibre-server
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: calibre-server
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.http.host }}`)"
|
|
||||||
middlewares:
|
|
||||||
- name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
priority: 10
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: calibre-server
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.http.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
|
|
||||||
priority: 15
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: {{ .Values.ingressRoute.authentik.outpost }}
|
|
||||||
port: {{ .Values.ingressRoute.authentik.port }}
|
|
||||||
{{- end }}
|
|
@@ -1,29 +0,0 @@
|
|||||||
{{- if .Values.ingressRoute.enabled }}
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: Middleware
|
|
||||||
metadata:
|
|
||||||
name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: auth
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
forwardAuth:
|
|
||||||
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"
|
|
||||||
trustForwardHeader: true
|
|
||||||
authResponseHeaders:
|
|
||||||
- X-authentik-username
|
|
||||||
- X-authentik-groups
|
|
||||||
- X-authentik-email
|
|
||||||
- X-authentik-name
|
|
||||||
- X-authentik-uid
|
|
||||||
- X-authentik-jwt
|
|
||||||
- X-authentik-meta-jwks
|
|
||||||
- X-authentik-meta-outpost
|
|
||||||
- X-authentik-meta-provider
|
|
||||||
- X-authentik-meta-app
|
|
||||||
- X-authentik-meta-version
|
|
||||||
{{- end }}
|
|
@@ -1,19 +0,0 @@
|
|||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: calibre-server-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.config.storageSize }}
|
|
||||||
storageClassName: {{ .Values.persistence.config.storageClassName }}
|
|
||||||
volumeMode: {{ .Values.persistence.config.volumeMode }}
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: calibre-server
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: calibre-server
|
|
@@ -1,44 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: calibre-server
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.http.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: calibre-server-content
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.content.port }}
|
|
||||||
targetPort: content
|
|
||||||
protocol: TCP
|
|
||||||
name: content
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: calibre-server
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,42 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: linuxserver/calibre
|
|
||||||
tag: v7.5.1-ls269
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
PGID: "1001"
|
|
||||||
PUID: "1001"
|
|
||||||
TZ: UTC
|
|
||||||
UMASK_SET: "022"
|
|
||||||
CUSTOM_USER: calibre
|
|
||||||
TITLE: Calibre Server
|
|
||||||
NO_DECOR: true
|
|
||||||
envFrom:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 256Mi
|
|
||||||
cpu: 50m
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 500m
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 8080
|
|
||||||
content:
|
|
||||||
port: 8081
|
|
||||||
ingressRoute:
|
|
||||||
enabled: true
|
|
||||||
http:
|
|
||||||
host:
|
|
||||||
authentik:
|
|
||||||
outpost:
|
|
||||||
port: 9000
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
storageClassName: default
|
|
||||||
storageSize: 5Gi
|
|
||||||
volumeMode: Filesystem
|
|
||||||
books:
|
|
||||||
claimName:
|
|
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: cops
|
|
||||||
version: 0.0.3
|
|
||||||
description: Chart for Calibre OPDS (and HTML) PHP Server
|
|
||||||
keywords:
|
|
||||||
- calibre
|
|
||||||
- OPDS
|
|
||||||
sources:
|
|
||||||
- https://github.com/seblucas/cops
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
appVersion: 1.1.3
|
|
@@ -1,22 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Calibre OPDS (and HTML) PHP Server](https://github.com/seblucas/cops)
|
|
||||||
|
|
||||||
COPS's main advantages are :
|
|
||||||
|
|
||||||
- No need for many dependencies.
|
|
||||||
- No need for a lot of CPU or RAM.
|
|
||||||
- Not much code.
|
|
||||||
- Search is available.
|
|
||||||
- It was fun to code.
|
|
||||||
|
|
||||||
This chart bootstraps a [COPS](https://github.com/seblucas/cops) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,82 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ .Release.Name }}
|
|
||||||
containers:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.http.port }}
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /config
|
|
||||||
name: cops-config
|
|
||||||
- mountPath: /books
|
|
||||||
name: cops-books
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 5
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 5
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
startupProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
failureThreshold: 30
|
|
||||||
periodSeconds: 10
|
|
||||||
timeoutSeconds: 1
|
|
||||||
volumes:
|
|
||||||
- name: cops-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: cops-config
|
|
||||||
- name: cops-books
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.books.claimName }}
|
|
@@ -1,32 +0,0 @@
|
|||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.host }}
|
|
||||||
secretName: {{ .Release.Name }}-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
{{- end }}
|
|
@@ -1,19 +0,0 @@
|
|||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: cops-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: storage
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.config.storageSize }}
|
|
||||||
storageClassName: {{ .Values.persistence.config.storageClassName }}
|
|
||||||
volumeMode: {{ .Values.persistence.config.volumeMode }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Pod
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-test-connection"
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": test-success
|
|
||||||
spec:
|
|
||||||
restartPolicy: Never
|
|
||||||
containers:
|
|
||||||
- name: wget
|
|
||||||
image: busybox
|
|
||||||
command: ['wget']
|
|
||||||
args: ['{{ .Release.Name }}:{{ .Values.service.http.port }}']
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 256Mi
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
@@ -1,22 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
externalTrafficPolicy:
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.http.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,36 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: linuxserver/cops
|
|
||||||
tag: 2.3.1-ls185
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
PGID: "1000"
|
|
||||||
PUID: "1000"
|
|
||||||
TZ: UTC
|
|
||||||
envFrom:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 256Mi
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 80
|
|
||||||
ingress:
|
|
||||||
enabled: false
|
|
||||||
annotations:
|
|
||||||
className:
|
|
||||||
host:
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
storageClassName: default
|
|
||||||
storageSize: 5Gi
|
|
||||||
volumeMode: Filesystem
|
|
||||||
books:
|
|
||||||
claimName:
|
|
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: freshrss
|
|
||||||
version: 0.0.3
|
|
||||||
description: Chart for Freshrss
|
|
||||||
keywords:
|
|
||||||
- rss
|
|
||||||
sources:
|
|
||||||
- https://github.com/FreshRSS/FreshRSS
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/9414285?s=48&v=4
|
|
||||||
appVersion: "1.23.1"
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[FreshRSS](https://github.com/FreshRSS/FreshRSS)
|
|
||||||
|
|
||||||
FreshRSS is a self-hosted RSS feed aggregator.
|
|
||||||
|
|
||||||
It is lightweight, easy to work with, powerful, and customizable.
|
|
||||||
|
|
||||||
This chart bootstraps a [FreshRSS](https://github.com/FreshRSS/FreshRSS) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,76 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ .Release.Name }}
|
|
||||||
containers:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.http.port }}
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: {{ .Release.Name }}-config
|
|
||||||
mountPath: /config
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
env:
|
|
||||||
- name: LISTEN
|
|
||||||
value: "0.0.0.0:{{ .Values.service.http.port }}"
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
readinessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
startupProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 30
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 5
|
|
||||||
volumes:
|
|
||||||
- name: {{ .Release.Name }}-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Release.Name }}-config
|
|
@@ -1,32 +0,0 @@
|
|||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.host }}
|
|
||||||
secretName: {{ .Release.Name }}-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
{{- end }}
|
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: storage
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.config.storageSize }}
|
|
||||||
storageClassName: {{ .Values.persistence.config.storageClassName }}
|
|
||||||
volumeMode: {{ .Values.persistence.config.volumeMode }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Pod
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-test-connection"
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": test-success
|
|
||||||
spec:
|
|
||||||
restartPolicy: Never
|
|
||||||
containers:
|
|
||||||
- name: wget
|
|
||||||
image: busybox
|
|
||||||
command: ['wget']
|
|
||||||
args: ['{{ .Release.Name }}:{{ .Values.service.http.port }}']
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 256Mi
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.http.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,33 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: freshrss/freshrss
|
|
||||||
tag: 1.23.1
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
PGID: "568"
|
|
||||||
PUID: "568"
|
|
||||||
TZ: UTC
|
|
||||||
FRESHRSS_ENV: production
|
|
||||||
envFrom:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 256Mi
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 80
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
className:
|
|
||||||
annotations:
|
|
||||||
host:
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
storageClassName: default
|
|
||||||
storageSize: 5Gi
|
|
||||||
volumeMode: Filesystem
|
|
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: home-assistant
|
|
||||||
version: 0.1.5
|
|
||||||
description: Chart for Home Assistant
|
|
||||||
keywords:
|
|
||||||
- home-automation
|
|
||||||
sources:
|
|
||||||
- https://github.com/home-assistant
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/13844975?s=200&v=4
|
|
||||||
appVersion: v2024.4.0
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Home Assistant](https://www.home-assistant.io/)
|
|
||||||
|
|
||||||
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
|
|
||||||
|
|
||||||
This chart bootstraps a [Home-Assistant](https://github.com/home-assistant) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
- Traefik v2 / IngressRoute
|
|
||||||
- Authentik / Auth
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,98 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: home-assistant
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: {{ .Release.Name }}
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.http.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /config
|
|
||||||
name: home-assistant-config
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
livenessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
readinessProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 3
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 10
|
|
||||||
startupProbe:
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
failureThreshold: 30
|
|
||||||
timeoutSeconds: 1
|
|
||||||
periodSeconds: 5
|
|
||||||
{{- if .Values.codeserver.enabled }}
|
|
||||||
- name: codeserver
|
|
||||||
image: "{{ .Values.codeserver.image.repository }}:{{ .Values.codeserver.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.codeserver.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- containerPort: {{ .Values.codeserver.service.http.port }}
|
|
||||||
name: codeserver-http
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.codeserver.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.codeserver.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
securityContext:
|
|
||||||
{{- toYaml .Values.codeserver.securityContext | nindent 12 }}
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /config/home-assistant
|
|
||||||
name: home-assistant-config
|
|
||||||
{{- end }}
|
|
||||||
volumes:
|
|
||||||
- name: home-assistant-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: "{{ .Release.Name }}-config"
|
|
@@ -1,70 +0,0 @@
|
|||||||
{{- if .Values.ingressRoute.enabled }}
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.host }}`)"
|
|
||||||
middlewares:
|
|
||||||
- name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
priority: 10
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
|
|
||||||
priority: 15
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: {{ .Values.ingressRoute.authentik.outpost }}
|
|
||||||
port: {{ .Values.ingressRoute.authentik.port }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if and .Values.codeserver.ingressRoute.enabled .Values.codeserver.enabled }}
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-codeserver"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.codeserver.ingressRoute.host }}`)"
|
|
||||||
middlewares:
|
|
||||||
- name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
priority: 10
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: "{{ .Release.Name }}-codeserver"
|
|
||||||
port: {{ .Values.codeserver.service.http.port }}
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
|
|
||||||
priority: 15
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: {{ .Values.ingressRoute.authentik.outpost }}
|
|
||||||
port: {{ .Values.ingressRoute.authentik.port }}
|
|
||||||
{{- end }}
|
|
@@ -1,29 +0,0 @@
|
|||||||
{{- if .Values.ingressRoute.enabled }}
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: Middleware
|
|
||||||
metadata:
|
|
||||||
name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: auth
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
forwardAuth:
|
|
||||||
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"
|
|
||||||
trustForwardHeader: true
|
|
||||||
authResponseHeaders:
|
|
||||||
- X-authentik-username
|
|
||||||
- X-authentik-groups
|
|
||||||
- X-authentik-email
|
|
||||||
- X-authentik-name
|
|
||||||
- X-authentik-uid
|
|
||||||
- X-authentik-jwt
|
|
||||||
- X-authentik-meta-jwks
|
|
||||||
- X-authentik-meta-outpost
|
|
||||||
- X-authentik-meta-provider
|
|
||||||
- X-authentik-meta-app
|
|
||||||
- X-authentik-meta-version
|
|
||||||
{{- end }}
|
|
@@ -1,19 +0,0 @@
|
|||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-config"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.config.storageSize }}
|
|
||||||
storageClassName: {{ .Values.persistence.config.storageClassName }}
|
|
||||||
volumeMode: {{ .Values.persistence.config.volumeMode }}
|
|
@@ -1,18 +0,0 @@
|
|||||||
{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: PrometheusRule
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
groups:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
rules:
|
|
||||||
{{- toYaml .Values.metrics.prometheusRule.rules | nindent 8 }}
|
|
||||||
{{- end }}
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
{{- if .Values.metrics.enabled }}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: ServiceMonitor
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
endpoints:
|
|
||||||
- port: http
|
|
||||||
interval: {{ .Values.metrics.serviceMonitor.interval }}
|
|
||||||
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
|
|
||||||
path: /api/prometheus
|
|
||||||
bearerTokenSecret:
|
|
||||||
name: {{ .Values.metrics.serviceMonitor.bearerTokenSecret.name }}
|
|
||||||
key: {{ .Values.metrics.serviceMonitor.bearerTokenSecret.key }}
|
|
||||||
{{- end }}
|
|
@@ -1,46 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.http.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if .Values.codeserver.enabled }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-codeserver"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.codeserver.service.http.port }}
|
|
||||||
targetPort: codeserver-http
|
|
||||||
protocol: TCP
|
|
||||||
name: codeserver-http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
@@ -1,74 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: homeassistant/home-assistant
|
|
||||||
tag: 2024.4.0
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
TZ: UTC
|
|
||||||
envFrom:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 512Mi
|
|
||||||
cpu: 50m
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 500m
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 8123
|
|
||||||
ingressRoute:
|
|
||||||
enabled: true
|
|
||||||
host:
|
|
||||||
authentik:
|
|
||||||
outpost:
|
|
||||||
port: 9000
|
|
||||||
metrics:
|
|
||||||
enabled: false
|
|
||||||
serviceMonitor:
|
|
||||||
interval: 1m
|
|
||||||
scrapeTimeout: 30s
|
|
||||||
## See https://www.home-assistant.io/docs/authentication/ for where to find
|
|
||||||
## long lived access token creation under your account profile, which is
|
|
||||||
## needed to monitor Home Assistant
|
|
||||||
bearerTokenSecret:
|
|
||||||
name: ""
|
|
||||||
key: ""
|
|
||||||
prometheusRule:
|
|
||||||
enabled: false
|
|
||||||
rules:
|
|
||||||
- alert: HomeAssistantAbsent
|
|
||||||
annotations:
|
|
||||||
description: Home Assistant has disappeared from Prometheus service discovery.
|
|
||||||
summary: Home Assistant is down.
|
|
||||||
expr: |
|
|
||||||
absent(up{job=~".*home-assistant.*"} == 1)
|
|
||||||
for: 5m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
storageClassName: default
|
|
||||||
storageSize: 1Gi
|
|
||||||
volumeMode: Filesystem
|
|
||||||
codeserver:
|
|
||||||
enabled: false
|
|
||||||
image:
|
|
||||||
repository: linuxserver/code-server
|
|
||||||
tag: 4.22.1
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
TZ: UTC
|
|
||||||
PUID: 1000
|
|
||||||
PGID: 1000
|
|
||||||
DEFAULT_WORKSPACE: /config
|
|
||||||
envFrom:
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 0
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 8443
|
|
||||||
ingressRoute:
|
|
||||||
enabled: false
|
|
||||||
host:
|
|
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: homepage
|
|
||||||
version: 0.0.9
|
|
||||||
description: Chart for benphelps homepage
|
|
||||||
keywords:
|
|
||||||
- dashboard
|
|
||||||
sources:
|
|
||||||
- https://github.com/gethomepage/homepage
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://github.com/benphelps/homepage/blob/de584eae8f12a0d257e554e9511ef19bd2a1232c/public/mstile-150x150.png
|
|
||||||
appVersion: v0.8.10
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Homepage](https://github.com/benphelps/homepage)
|
|
||||||
|
|
||||||
A modern (fully static, fast), secure (fully proxied), highly customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels).
|
|
||||||
|
|
||||||
This chart bootstraps a [Homepage](https://github.com/benphelps/homepage) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
- Traefik v2 / IngressRoute
|
|
||||||
- Authentik / Auth
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: homepage
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
@@ -1,51 +0,0 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- namespaces
|
|
||||||
- pods
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- traefik.containo.us
|
|
||||||
- traefik.io
|
|
||||||
resources:
|
|
||||||
- ingressroutes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- metrics.k8s.io
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
- pods
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- apiextensions.k8s.io
|
|
||||||
resources:
|
|
||||||
- customresourcedefinitions/status
|
|
||||||
verbs:
|
|
||||||
- get
|
|
@@ -1,36 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: homepage-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
data:
|
|
||||||
bookmarks.yaml: {{- if .Values.config.bookmarks }} |
|
|
||||||
{{- .Values.config.bookmarks | toYaml | nindent 4}}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
||||||
docker.yaml: {{- if .Values.config.docker }} |
|
|
||||||
{{- .Values.config.docker | toYaml | nindent 4 }}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
||||||
kubernetes.yaml: {{- if .Values.config.kubernetes }} |
|
|
||||||
{{- .Values.config.kubernetes | toYaml | nindent 4 }}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
||||||
services.yaml: {{- if .Values.config.services }} |
|
|
||||||
{{- .Values.config.services | toYaml | nindent 4 }}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
||||||
settings.yaml: {{- if .Values.config.settings }} |
|
|
||||||
{{- .Values.config.settings | toYaml | nindent 4 }}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
||||||
widgets.yaml: {{- if .Values.config.widgets }} |
|
|
||||||
{{- .Values.config.widgets | toYaml | nindent 4 }}
|
|
||||||
{{- else }} ""
|
|
||||||
{{- end }}
|
|
@@ -1,95 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: homepage
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: homepage
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.http.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: bookmarks.yaml
|
|
||||||
mountPath: /app/config/bookmarks.yaml
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: docker.yaml
|
|
||||||
mountPath: /app/config/docker.yaml
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: kubernetes.yaml
|
|
||||||
mountPath: /app/config/kubernetes.yaml
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: services.yaml
|
|
||||||
mountPath: /app/config/services.yaml
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: settings.yaml
|
|
||||||
mountPath: /app/config/settings.yaml
|
|
||||||
- name: homepage-config
|
|
||||||
subPath: widgets.yaml
|
|
||||||
mountPath: /app/config/widgets.yaml
|
|
||||||
- name: logs
|
|
||||||
mountPath: /app/config/logs
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
livenessProbe:
|
|
||||||
failureThreshold: 3
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
periodSeconds: 10
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
timeoutSeconds: 1
|
|
||||||
readinessProbe:
|
|
||||||
failureThreshold: 3
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
periodSeconds: 10
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
timeoutSeconds: 1
|
|
||||||
startupProbe:
|
|
||||||
failureThreshold: 30
|
|
||||||
initialDelaySeconds: 0
|
|
||||||
periodSeconds: 5
|
|
||||||
tcpSocket:
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
timeoutSeconds: 1
|
|
||||||
volumes:
|
|
||||||
- name: homepage-config
|
|
||||||
configMap:
|
|
||||||
name: homepage-config
|
|
||||||
- name: logs
|
|
||||||
emptyDir: {}
|
|
@@ -1,32 +0,0 @@
|
|||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: homepage
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.host }}`)"
|
|
||||||
middlewares:
|
|
||||||
- name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
priority: 10
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: homepage
|
|
||||||
port: {{ .Values.service.http.port }}
|
|
||||||
- kind: Rule
|
|
||||||
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
|
|
||||||
priority: 15
|
|
||||||
services:
|
|
||||||
- kind: Service
|
|
||||||
name: {{ .Values.ingressRoute.authentik.outpost }}
|
|
||||||
port: {{ .Values.ingressRoute.authentik.port }}
|
|
@@ -1,27 +0,0 @@
|
|||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: Middleware
|
|
||||||
metadata:
|
|
||||||
name: "authentik-{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: auth
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
forwardAuth:
|
|
||||||
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"
|
|
||||||
trustForwardHeader: true
|
|
||||||
authResponseHeaders:
|
|
||||||
- X-authentik-username
|
|
||||||
- X-authentik-groups
|
|
||||||
- X-authentik-email
|
|
||||||
- X-authentik-name
|
|
||||||
- X-authentik-uid
|
|
||||||
- X-authentik-jwt
|
|
||||||
- X-authentik-meta-jwks
|
|
||||||
- X-authentik-meta-outpost
|
|
||||||
- X-authentik-meta-provider
|
|
||||||
- X-authentik-meta-app
|
|
||||||
- X-authentik-meta-version
|
|
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
type: kubernetes.io/service-account-token
|
|
||||||
metadata:
|
|
||||||
name: "{{ .Release.Name }}-sa-token"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/service-account.name: homepage
|
|
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: homepage
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
secrets:
|
|
||||||
- name: "{{ .Release.Name }}-sa-token"
|
|
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: homepage
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: homepage
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.http.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: homepage
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,32 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/gethomepage/homepage
|
|
||||||
tag: v0.8.10
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env:
|
|
||||||
envFrom:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 256Mi
|
|
||||||
cpu: 50m
|
|
||||||
limits:
|
|
||||||
memory: 512Mi
|
|
||||||
cpu: 500m
|
|
||||||
service:
|
|
||||||
http:
|
|
||||||
port: 3000
|
|
||||||
ingressRoute:
|
|
||||||
host:
|
|
||||||
authentik:
|
|
||||||
outpost:
|
|
||||||
port: 9000
|
|
||||||
config:
|
|
||||||
bookmarks:
|
|
||||||
services:
|
|
||||||
widgets:
|
|
||||||
kubernetes:
|
|
||||||
mode: cluster
|
|
||||||
docker:
|
|
||||||
settings:
|
|
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
version: 0.0.4
|
|
||||||
description: Kubelet Serving TLS Certificate Signing Request Approver
|
|
||||||
keywords:
|
|
||||||
- kubernetes
|
|
||||||
- certificate
|
|
||||||
sources:
|
|
||||||
- https://github.com/alex1989hu/kubelet-serving-cert-approver
|
|
||||||
- https://github.com/alexlebens/helm-charts/charts/homepage
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
appVersion: 0.8.1
|
|
@@ -1,16 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Kubelet Serving Certificate Approver](https://github.com/alex1989hu/kubelet-serving-cert-approver)
|
|
||||||
|
|
||||||
Kubelet Serving Certificate Approver is a custom approving controller which approves kubernetes.io/kubelet-serving Certificate Signing Request that kubelet use to serve TLS endpoints.
|
|
||||||
|
|
||||||
This chart bootstraps a [Kubelet Serving Certificate Approver](https://github.com/alex1989hu/kubelet-serving-cert-approver) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: "certificates:{{ .Release.Name }}"
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
@@ -1,61 +0,0 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: "certificates:{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- certificates.k8s.io
|
|
||||||
resources:
|
|
||||||
- certificatesigningrequests
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- certificates.k8s.io
|
|
||||||
resources:
|
|
||||||
- certificatesigningrequests/approval
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- authorization.k8s.io
|
|
||||||
resources:
|
|
||||||
- subjectaccessreviews
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- apiGroups:
|
|
||||||
- certificates.k8s.io
|
|
||||||
resourceNames:
|
|
||||||
- kubernetes.io/kubelet-serving
|
|
||||||
resources:
|
|
||||||
- signers
|
|
||||||
verbs:
|
|
||||||
- approve
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: "events:{{ .Release.Name }}"
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approverv
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- events
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- patch
|
|
@@ -1,88 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: node-role.kubernetes.io/master
|
|
||||||
operator: DoesNotExist
|
|
||||||
- key: node-role.kubernetes.io/control-plane
|
|
||||||
operator: DoesNotExist
|
|
||||||
weight: 100
|
|
||||||
containers:
|
|
||||||
- name: {{ .Release.Name }}
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
name: health
|
|
||||||
- containerPort: 9090
|
|
||||||
name: metrics
|
|
||||||
args:
|
|
||||||
- serve
|
|
||||||
env:
|
|
||||||
- name: NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: health
|
|
||||||
initialDelaySeconds: 6
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /readyz
|
|
||||||
port: health
|
|
||||||
initialDelaySeconds: 3
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
privileged: false
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsNonRoot: true
|
|
||||||
priorityClassName: {{ .Values.deployment.priorityClassName }}
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 65534
|
|
||||||
runAsGroup: 65534
|
|
||||||
runAsUser: 65534
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
serviceAccountName: kubelet-serving-cert-approver
|
|
||||||
tolerations:
|
|
||||||
- effect: NoSchedule
|
|
||||||
key: node-role.kubernetes.io/master
|
|
||||||
operator: Exists
|
|
||||||
- effect: NoSchedule
|
|
||||||
key: node-role.kubernetes.io/control-plane
|
|
||||||
operator: Exists
|
|
@@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
pod-security.kubernetes.io/audit: restricted
|
|
||||||
pod-security.kubernetes.io/enforce: restricted
|
|
||||||
pod-security.kubernetes.io/warn: restricted
|
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: RoleBinding
|
|
||||||
metadata:
|
|
||||||
name: "events:{{ .Release.Name }}"
|
|
||||||
namespace: default
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: "events:{{ .Release.Name }}"
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
namespace: {{ .Release.Name }}
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: kubelet-serving-cert-approver
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: server
|
|
||||||
app.kubernetes.io/part-of: kubelet-serving-cert-approver
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: metrics
|
|
||||||
port: 9090
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: metrics
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: kubelet-serving-cert-approver
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,15 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
priorityClassName: system-cluster-critical
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/alex1989hu/kubelet-serving-cert-approver
|
|
||||||
tag: main
|
|
||||||
imagePullPolicy: Always
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 250m
|
|
||||||
memory: 32Mi
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 16Mi
|
|
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: libation
|
|
||||||
version: 0.0.6
|
|
||||||
description: Import library from audible
|
|
||||||
keywords:
|
|
||||||
- audiobooks
|
|
||||||
- job
|
|
||||||
sources:
|
|
||||||
- https://github.com/rmcrackan/Libation
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://getlibation.com/images/libation-logo.png
|
|
||||||
appVersion: "11.1.0"
|
|
@@ -1,18 +0,0 @@
|
|||||||
## Introduction
|
|
||||||
|
|
||||||
[Libation](https://github.com/rmcrackan/Libation)
|
|
||||||
|
|
||||||
Libation: Liberate your Library. Import library from audible, including cover art
|
|
||||||
|
|
||||||
|
|
||||||
This chart bootstraps a [Libation](https://github.com/benphelps/homepage) CronJob on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes
|
|
||||||
- Helm
|
|
||||||
- CronJob
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
See the [values files](values.yaml).
|
|
@@ -1,39 +0,0 @@
|
|||||||
apiVersion: batch/v1
|
|
||||||
kind: CronJob
|
|
||||||
metadata:
|
|
||||||
name: libation
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: libation
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: job
|
|
||||||
app.kubernetes.io/part-of: libation
|
|
||||||
spec:
|
|
||||||
schedule: {{ .Values.job.schedule }}
|
|
||||||
successfulJobsHistoryLimit: 3
|
|
||||||
failedJobsHistoryLimit: 3
|
|
||||||
jobTemplate:
|
|
||||||
spec:
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
restartPolicy: Never
|
|
||||||
containers:
|
|
||||||
- name: libation
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
||||||
env:
|
|
||||||
- name: SLEEP_TIME
|
|
||||||
value: "-1"
|
|
||||||
volumeMounts:
|
|
||||||
- name: libation-config
|
|
||||||
mountPath: /config
|
|
||||||
- name: libation-books
|
|
||||||
mountPath: /data
|
|
||||||
volumes:
|
|
||||||
- name: libation-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: libation-config
|
|
||||||
- name: libation-books
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.books.claimName }}
|
|
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: libation-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: libation
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: storage
|
|
||||||
app.kubernetes.io/part-of: libation
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.config.storageSize }}
|
|
||||||
storageClassName: {{ .Values.persistence.config.storageClassName }}
|
|
||||||
volumeMode: {{ .Values.persistence.config.volumeMode }}
|
|
@@ -1,13 +0,0 @@
|
|||||||
job:
|
|
||||||
schedule: "0 * * * *"
|
|
||||||
image:
|
|
||||||
repository: rmcrackan/libation
|
|
||||||
tag: "11.1.0"
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
storageClassName: default
|
|
||||||
storageSize: 1Gi
|
|
||||||
volumeMode: Filesystem
|
|
||||||
books:
|
|
||||||
claimName:
|
|
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: matrix-hookshot
|
|
||||||
version: 0.1.0
|
|
||||||
description: Chart for Matrix Hookshot
|
|
||||||
keywords:
|
|
||||||
- matrix
|
|
||||||
- matrix-hookshot
|
|
||||||
- webhook
|
|
||||||
sources:
|
|
||||||
- https://github.com/matrix-org/matrix-hookshot
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/8418310?s=48&v=4
|
|
||||||
appVersion: "5.2.1"
|
|
@@ -1,43 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Helper for secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "hookshot.secretName" -}}
|
|
||||||
{{- if .Values.hookshot.existingSecret }}
|
|
||||||
{{- printf "%s" .Values.hookshot.existingSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "matrix-hookshot-config-secret" | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Helper for registration secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "hookshot.registrationSecretName" -}}
|
|
||||||
{{- if .Values.hookshot.existingRegistrationSecret }}
|
|
||||||
{{- printf "%s" .Values.hookshot.existingRegistrationSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "matrix-hookshot-registration-secret" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Helper for passkey secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "hookshot.passkeySecretName" -}}
|
|
||||||
{{- if .Values.hookshot.existingPasskeySecret }}
|
|
||||||
{{- printf "%s" .Values.hookshot.existingPasskeySecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "matrix-hookshot-passkey-secret" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Helper for passkey file name
|
|
||||||
*/}}
|
|
||||||
{{- define "hookshot.passFile" -}}
|
|
||||||
{{- if .Values.hookshot.config.passFile }}
|
|
||||||
{{- printf "%s" .Values.hookshot.config.passFile -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "passkey.pem" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@@ -1,79 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: matrix-hookshot
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: matrix-hookshot
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: webhook
|
|
||||||
containerPort: {{ .Values.service.webhook.port }}
|
|
||||||
protocol: TCP
|
|
||||||
- name: metrics
|
|
||||||
containerPort: {{ .Values.service.metrics.port }}
|
|
||||||
protocol: TCP
|
|
||||||
- name: appservice
|
|
||||||
containerPort: {{ .Values.service.appservice.port }}
|
|
||||||
protocol: TCP
|
|
||||||
- name: widgets
|
|
||||||
containerPort: {{ .Values.service.widgets.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /data/config.yml
|
|
||||||
subPath: config.yml
|
|
||||||
readOnly: true
|
|
||||||
- name: registration
|
|
||||||
mountPath: /data/registration.yml
|
|
||||||
subPath: registration.yml
|
|
||||||
readOnly: true
|
|
||||||
- name: passkey
|
|
||||||
mountPath: "/data/{{ template "hookshot.passFile" . }}"
|
|
||||||
subPath: {{ template "hookshot.passFile" . }}
|
|
||||||
readOnly: true
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "hookshot.secretName" . }}
|
|
||||||
- name: registration
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "hookshot.registrationSecretName" . }}
|
|
||||||
- name: passkey
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "hookshot.passkeySecretName" . }}
|
|
@@ -1,100 +0,0 @@
|
|||||||
{{- if .Values.ingress.webhook.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-webhook
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-webhook
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.webhook.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.webhook.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.webhook.host }}
|
|
||||||
secretName: {{ .Release.Name }}-webhook-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.webhook.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /webhook/
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port:
|
|
||||||
name: webhook
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if .Values.ingress.appservice.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-appservice
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-appservice
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.appservice.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.appservice.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.appservice.host }}
|
|
||||||
secretName: {{ .Release.Name }}-appservice-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.appservice.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port:
|
|
||||||
name: appservice
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if .Values.ingress.widgets.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-widgets
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-widgets
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.widgets.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.widgets.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.widgets.host }}
|
|
||||||
secretName: {{ .Release.Name }}-widgets-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.widgets.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: {{ .Release.Name }}
|
|
||||||
port:
|
|
||||||
name: widgets
|
|
||||||
{{- end }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Pod
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-test-connection
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-test-connection
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": test-success
|
|
||||||
spec:
|
|
||||||
restartPolicy: Never
|
|
||||||
containers:
|
|
||||||
- name: wget
|
|
||||||
image: busybox
|
|
||||||
command: ['wget']
|
|
||||||
args: ['matrix-hookshot:{{ .Values.service.webhook.port }}']
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 256Mi
|
|
@@ -1,52 +0,0 @@
|
|||||||
{{- if not .Values.hookshot.existingSecret }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-config-secret
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-config
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
data:
|
|
||||||
config.yml: |
|
|
||||||
{{ toYaml .Values.hookshot.config | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if not .Values.hookshot.existingRegistrationSecret }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-registration-secret
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-registration
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
data:
|
|
||||||
registration.yml: |
|
|
||||||
{{ toYaml .Values.hookshot.registration | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if not .Values.hookshot.existingPasskeySecret }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot-passkey-secret
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot-passkey
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
data:
|
|
||||||
{{ .Values.hookshot.config.passFile }}: |
|
|
||||||
{{ toYaml .Values.hookshot.passkey | indent 4 }}
|
|
||||||
{{- end }}
|
|
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
@@ -1,23 +0,0 @@
|
|||||||
{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: ServiceMonitor
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- port: metrics
|
|
||||||
interval: {{ .Values.metrics.serviceMonitor.interval }}
|
|
||||||
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
|
|
||||||
path: /metrics
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: matrix-hookshot
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.webhook.port }}
|
|
||||||
targetPort: webhook
|
|
||||||
protocol: TCP
|
|
||||||
name: webhook
|
|
||||||
- port: {{ .Values.service.metrics.port }}
|
|
||||||
targetPort: metrics
|
|
||||||
protocol: TCP
|
|
||||||
name: metrics
|
|
||||||
- port: {{ .Values.service.appservice.port }}
|
|
||||||
targetPort: appservice
|
|
||||||
protocol: TCP
|
|
||||||
name: appservice
|
|
||||||
- port: {{ .Values.service.widgets.port }}
|
|
||||||
targetPort: widgets
|
|
||||||
protocol: TCP
|
|
||||||
name: widgets
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: matrix-hookshot
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,248 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: halfshot/matrix-hookshot
|
|
||||||
tag: "5.2.1"
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env: {}
|
|
||||||
envFrom: []
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 512Mi
|
|
||||||
cpu: 100m
|
|
||||||
requests:
|
|
||||||
memory: 256Mi
|
|
||||||
cpu: 50m
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
webhook:
|
|
||||||
port: 9000
|
|
||||||
metrics:
|
|
||||||
port: 9001
|
|
||||||
appservice:
|
|
||||||
port: 9002
|
|
||||||
widgets:
|
|
||||||
port: 9003
|
|
||||||
ingress:
|
|
||||||
webhook:
|
|
||||||
enabled: false
|
|
||||||
className: ""
|
|
||||||
annotations: {}
|
|
||||||
host: ""
|
|
||||||
appservice:
|
|
||||||
enabled: false
|
|
||||||
className: ""
|
|
||||||
annotations: {}
|
|
||||||
host: ""
|
|
||||||
widgets:
|
|
||||||
enabled: false
|
|
||||||
className: ""
|
|
||||||
annotations: {}
|
|
||||||
host: ""
|
|
||||||
metrics:
|
|
||||||
enabled: false
|
|
||||||
serviceMonitor:
|
|
||||||
enabled: false
|
|
||||||
interval: 15s
|
|
||||||
scrapeTimeout: 5s
|
|
||||||
|
|
||||||
# Reference the following for examples
|
|
||||||
# https://matrix-org.github.io/matrix-hookshot/latest/setup/sample-configuration.html
|
|
||||||
hookshot:
|
|
||||||
|
|
||||||
# config.yml contents
|
|
||||||
existingSecret: ""
|
|
||||||
config:
|
|
||||||
bridge:
|
|
||||||
domain: example.com
|
|
||||||
url: http://localhost:8008
|
|
||||||
mediaUrl: https://example.com
|
|
||||||
port: 9993
|
|
||||||
bindAddress: 0.0.0.0
|
|
||||||
passFile: passkey.pem
|
|
||||||
logging:
|
|
||||||
level: info
|
|
||||||
colorize: true
|
|
||||||
json: false
|
|
||||||
timestampFormat: HH:mm:ss:SSS
|
|
||||||
listeners:
|
|
||||||
- port: 9000
|
|
||||||
bindAddress: 0.0.0.0
|
|
||||||
resources:
|
|
||||||
- webhooks
|
|
||||||
- port: 9001
|
|
||||||
bindAddress: 0.0.0.0
|
|
||||||
resources:
|
|
||||||
- metrics
|
|
||||||
- provisioning
|
|
||||||
- port: 9003
|
|
||||||
bindAddress: 0.0.0.0
|
|
||||||
resources:
|
|
||||||
- widgets
|
|
||||||
|
|
||||||
#github:
|
|
||||||
# # (Optional) Configure this to enable GitHub support
|
|
||||||
# auth:
|
|
||||||
# # Authentication for the GitHub App.
|
|
||||||
# id: 123
|
|
||||||
# privateKeyFile: github-key.pem
|
|
||||||
# webhook:
|
|
||||||
# # Webhook settings for the GitHub app.
|
|
||||||
# secret: secrettoken
|
|
||||||
# oauth:
|
|
||||||
# # (Optional) Settings for allowing users to sign in via OAuth.
|
|
||||||
# client_id: foo
|
|
||||||
# client_secret: bar
|
|
||||||
# redirect_uri: https://example.com/oauth/
|
|
||||||
# defaultOptions:
|
|
||||||
# # (Optional) Default options for GitHub connections.
|
|
||||||
# showIssueRoomLink: false
|
|
||||||
# hotlinkIssues:
|
|
||||||
# prefix: "#"
|
|
||||||
# userIdPrefix:
|
|
||||||
# # (Optional) Prefix used when creating ghost users for GitHub accounts.
|
|
||||||
# _github_
|
|
||||||
|
|
||||||
#gitlab:
|
|
||||||
# # (Optional) Configure this to enable GitLab support
|
|
||||||
# instances:
|
|
||||||
# gitlab.com:
|
|
||||||
# url: https://gitlab.com
|
|
||||||
# webhook:
|
|
||||||
# secret: secrettoken
|
|
||||||
# publicUrl: https://example.com/hookshot/
|
|
||||||
# userIdPrefix:
|
|
||||||
# # (Optional) Prefix used when creating ghost users for GitLab accounts.
|
|
||||||
# _gitlab_
|
|
||||||
# commentDebounceMs:
|
|
||||||
# # (Optional) Aggregate comments by waiting this many miliseconds before posting them to Matrix. Defaults to 5000 (5 seconds)
|
|
||||||
# 5000
|
|
||||||
|
|
||||||
#figma:
|
|
||||||
# # (Optional) Configure this to enable Figma support
|
|
||||||
# publicUrl: https://example.com/hookshot/
|
|
||||||
# instances:
|
|
||||||
# your-instance:
|
|
||||||
# teamId: your-team-id
|
|
||||||
# accessToken: your-personal-access-token
|
|
||||||
# passcode: your-webhook-passcode
|
|
||||||
|
|
||||||
#jira:
|
|
||||||
# # (Optional) Configure this to enable Jira support. Only specify `url` if you are using a On Premise install (i.e. not atlassian.com)
|
|
||||||
# webhook:
|
|
||||||
# # Webhook settings for JIRA
|
|
||||||
# secret: secrettoken
|
|
||||||
# oauth:
|
|
||||||
# # (Optional) OAuth settings for connecting users to JIRA. See documentation for more information
|
|
||||||
# client_id: foo
|
|
||||||
# client_secret: bar
|
|
||||||
# redirect_uri: https://example.com/oauth/
|
|
||||||
|
|
||||||
#generic:
|
|
||||||
# # (Optional) Support for generic webhook events.
|
|
||||||
# #'allowJsTransformationFunctions' will allow users to write short transformation snippets in code, and thus is unsafe in untrusted environments
|
|
||||||
|
|
||||||
# enabled: false
|
|
||||||
# enableHttpGet: false
|
|
||||||
# urlPrefix: https://example.com/webhook/
|
|
||||||
# userIdPrefix: _webhooks_
|
|
||||||
# allowJsTransformationFunctions: false
|
|
||||||
# waitForComplete: false
|
|
||||||
|
|
||||||
#feeds:
|
|
||||||
# # (Optional) Configure this to enable RSS/Atom feed support
|
|
||||||
# enabled: false
|
|
||||||
# pollConcurrency: 4
|
|
||||||
# pollIntervalSeconds: 600
|
|
||||||
# pollTimeoutSeconds: 30
|
|
||||||
|
|
||||||
#provisioning:
|
|
||||||
# # (Optional) Provisioning API for integration managers
|
|
||||||
# secret: "!secretToken"
|
|
||||||
|
|
||||||
#bot:
|
|
||||||
# # (Optional) Define profile information for the bot user
|
|
||||||
# displayname: Hookshot Bot
|
|
||||||
# avatar: mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d
|
|
||||||
|
|
||||||
#serviceBots:
|
|
||||||
# # (Optional) Define additional bot users for specific services
|
|
||||||
# - localpart: feeds
|
|
||||||
# displayname: Feeds
|
|
||||||
# avatar: ./assets/feeds_avatar.png
|
|
||||||
# prefix: "!feeds"
|
|
||||||
# service: feeds
|
|
||||||
|
|
||||||
#metrics:
|
|
||||||
# # (Optional) Prometheus metrics support
|
|
||||||
# enabled: true
|
|
||||||
|
|
||||||
#cache:
|
|
||||||
# # (Optional) Cache options for large scale deployments.
|
|
||||||
# # For encryption to work, this must be configured.
|
|
||||||
# redisUri: redis://localhost:6379
|
|
||||||
|
|
||||||
#queue:
|
|
||||||
# # (Optional) Message queue configuration options for large scale deployments.
|
|
||||||
# # For encryption to work, this must not be configured.
|
|
||||||
# redisUri: redis://localhost:6379
|
|
||||||
|
|
||||||
#widgets:
|
|
||||||
# # (Optional) EXPERIMENTAL support for complimentary widgets
|
|
||||||
# addToAdminRooms: false
|
|
||||||
# disallowedIpRanges:
|
|
||||||
# - 127.0.0.0/8
|
|
||||||
# - 10.0.0.0/8
|
|
||||||
# - 172.16.0.0/12
|
|
||||||
# - 192.168.0.0/16
|
|
||||||
# - 100.64.0.0/10
|
|
||||||
# - 192.0.0.0/24
|
|
||||||
# - 169.254.0.0/16
|
|
||||||
# - 192.88.99.0/24
|
|
||||||
# - 198.18.0.0/15
|
|
||||||
# - 192.0.2.0/24
|
|
||||||
# - 198.51.100.0/24
|
|
||||||
# - 203.0.113.0/24
|
|
||||||
# - 224.0.0.0/4
|
|
||||||
# - ::1/128
|
|
||||||
# - fe80::/10
|
|
||||||
# - fc00::/7
|
|
||||||
# - 2001:db8::/32
|
|
||||||
# - ff00::/8
|
|
||||||
# - fec0::/10
|
|
||||||
# roomSetupWidget:
|
|
||||||
# addOnInvite: false
|
|
||||||
# publicUrl: https://example.com/widgetapi/v1/static/
|
|
||||||
# branding:
|
|
||||||
# widgetTitle: Hookshot Configuration
|
|
||||||
|
|
||||||
#sentry:
|
|
||||||
# # (Optional) Configure Sentry error reporting
|
|
||||||
# dsn: https://examplePublicKey@o0.ingest.sentry.io/0
|
|
||||||
# environment: production
|
|
||||||
|
|
||||||
#permissions:
|
|
||||||
# # (Optional) Permissions for using the bridge. See docs/setup.md#permissions for help
|
|
||||||
# - actor: example.com
|
|
||||||
# services:
|
|
||||||
# - service: "*"
|
|
||||||
# level: admin
|
|
||||||
|
|
||||||
# registration.yml contents
|
|
||||||
existingRegistrationSecret: ""
|
|
||||||
registration:
|
|
||||||
id: matrix-hookshot
|
|
||||||
as_token: ""
|
|
||||||
hs_token: ""
|
|
||||||
namespaces:
|
|
||||||
rooms: []
|
|
||||||
users: []
|
|
||||||
sender_localpart: hookshot
|
|
||||||
url: "http://example.com"
|
|
||||||
rate_limited: false
|
|
||||||
|
|
||||||
# A passkey used to encrypt tokens stored inside the bridge.
|
|
||||||
# Run openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:4096 to generate
|
|
||||||
existingPasskeySecret: ""
|
|
||||||
passkey: ""
|
|
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: mautrix-discord
|
|
||||||
version: 0.0.2
|
|
||||||
description: Chart for Matrix Discord Bridge
|
|
||||||
keywords:
|
|
||||||
- matrix
|
|
||||||
- mautrix-discord
|
|
||||||
- bridge
|
|
||||||
- discord
|
|
||||||
sources:
|
|
||||||
- https://github.com/mautrix/discord
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/88519669?s=48&v=4
|
|
||||||
appVersion: v0.6.5
|
|
@@ -1,41 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Helper for secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-discord.secretName" -}}
|
|
||||||
{{- if .Values.mautrixDiscord.existingSecret }}
|
|
||||||
{{- printf "%s" .Values.mautrixDiscord.existingSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "mautrix-discord-config-secret" | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Helper for registration secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-discord.registrationSecretName" -}}
|
|
||||||
{{- if .Values.mautrixDiscord.existingRegistrationSecret }}
|
|
||||||
{{- printf "%s" .Values.mautrixDiscord.existingRegistrationSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "mautrix-discord-registration-secret" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Generate registration.yaml if not from existing secret
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-discord.registration-yaml" -}}
|
|
||||||
id: {{ .Values.mautrixDiscord.config.appservice.id | quote }}
|
|
||||||
as_token: {{ .Values.mautrixDiscord.config.appservice.as_token | quote }}
|
|
||||||
hs_token: {{ .Values.mautrixDiscord.config.appservice.hs_token | quote }}
|
|
||||||
namespaces:
|
|
||||||
users:
|
|
||||||
- regex: {{ printf "^@discordbot:%s$" (replace "." "\\." .Values.mautrixDiscord.config.homeserver.domain) }}
|
|
||||||
exclusive: true
|
|
||||||
- regex: {{ printf "^@%s:%s$" (replace "{{.}}" ".*" (tpl .Values.mautrixDiscord.config.bridge.username_template .)) (replace "." "\\." .Values.mautrixDiscord.config.homeserver.domain) }}
|
|
||||||
exclusive: true
|
|
||||||
url: {{ .Values.mautrixDiscord.config.appservice.address | quote }}
|
|
||||||
sender_localpart: {{ .Values.mautrixDiscord.registration.sender_localpart | quote }}
|
|
||||||
rate_limited: {{ .Values.mautrixDiscord.registration.rate_limited }}
|
|
||||||
de.sorunome.msc2409.push_ephemeral: true
|
|
||||||
push_ephemeral: true
|
|
||||||
{{- end -}}
|
|
@@ -1,96 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: mautrix-discord
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: mautrix-discord
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /_matrix/mau/live
|
|
||||||
port: http
|
|
||||||
failureThreshold: {{ .Values.deployment.probes.liveness.failureThreshold }}
|
|
||||||
periodSeconds: {{ .Values.deployment.probes.liveness.periodSeconds }}
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /_matrix/mau/ready
|
|
||||||
port: http
|
|
||||||
failureThreshold: {{ .Values.deployment.probes.readiness.failureThreshold }}
|
|
||||||
periodSeconds: {{ .Values.deployment.probes.readiness.periodSeconds }}
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /data/config.yaml
|
|
||||||
subPath: config.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: registration
|
|
||||||
mountPath: /data/registration.yaml
|
|
||||||
subPath: registration.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "mautrix-discord.secretName" . }}
|
|
||||||
- name: registration
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "mautrix-discord.registrationSecretName" . }}
|
|
||||||
- name: data
|
|
||||||
{{- if .Values.persistence.enabled }}
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.existingClaim | default "mautrix-discord-data" }}
|
|
||||||
{{- else }}
|
|
||||||
emptyDir: {}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
@@ -1,32 +0,0 @@
|
|||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.host }}
|
|
||||||
secretName: {{ .Release.Name }}-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: mautrix-discord
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
{{- end }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord-data
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- {{ .Values.persistence.accessMode | quote }}
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.size | quote }}
|
|
||||||
{{- if .Values.persistence.storageClass }}
|
|
||||||
{{- if not .Values.persistence.storageClass }}
|
|
||||||
storageClassName: ""
|
|
||||||
{{- else }}
|
|
||||||
storageClassName: {{ .Values.persistence.storageClass | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@@ -1,33 +0,0 @@
|
|||||||
{{- if not .Values.mautrixDiscord.existingSecret }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord-config-secret
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord-config
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
data:
|
|
||||||
config.yaml: |
|
|
||||||
{{ toYaml .Values.mautrixDiscord.config | indent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
---
|
|
||||||
{{- if not .Values.mautrixDiscord.existingRegistrationSecret }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord-registration-secret
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord-registration
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
data:
|
|
||||||
registration.yaml: {{ include "mautrix-discord.registration-yaml" . | b64enc | quote }}
|
|
||||||
{{- end }}
|
|
@@ -1,17 +0,0 @@
|
|||||||
{{- if .Values.serviceAccount.create -}}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- with .Values.serviceAccount.annotations }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: mautrix-discord
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
clusterIP: {{ .Values.service.clusterIP | quote }}
|
|
||||||
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
|
||||||
publishNotReadyAddresses: {{ .Values.service.publishNotReadyAddresses }}
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.port }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: mautrix-discord
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
@@ -1,427 +0,0 @@
|
|||||||
deployment:
|
|
||||||
replicas: 1
|
|
||||||
strategy: Recreate
|
|
||||||
image:
|
|
||||||
repository: dock.mau.dev/mautrix/discord
|
|
||||||
tag: v0.6.5
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
env: {}
|
|
||||||
envFrom: []
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 128Mi
|
|
||||||
cpu: 200m
|
|
||||||
requests:
|
|
||||||
memory: 64Mi
|
|
||||||
cpu: 50m
|
|
||||||
probes:
|
|
||||||
liveness:
|
|
||||||
failureThreshold: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
readiness:
|
|
||||||
failureThreshold: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
nodeSelector: {}
|
|
||||||
tolerations: []
|
|
||||||
affinity: {}
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
annotations: {}
|
|
||||||
service:
|
|
||||||
type: ClusterIP
|
|
||||||
clusterIP: None
|
|
||||||
port: 29334
|
|
||||||
externalTrafficPolicy: ""
|
|
||||||
publishNotReadyAddresses: true
|
|
||||||
ingress:
|
|
||||||
enabled: false
|
|
||||||
className: ""
|
|
||||||
annotations: {}
|
|
||||||
host: ""
|
|
||||||
persistence:
|
|
||||||
enabled: false
|
|
||||||
existingClaim: ""
|
|
||||||
storageClass: ""
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 500Mi
|
|
||||||
|
|
||||||
|
|
||||||
# Reference the following for examples
|
|
||||||
# https://github.com/mautrix/discord/blob/main/example-config.yaml
|
|
||||||
mautrixDiscord:
|
|
||||||
|
|
||||||
# config.yml contents
|
|
||||||
existingSecret: ""
|
|
||||||
config:
|
|
||||||
# Homeserver details.
|
|
||||||
homeserver:
|
|
||||||
# The address that this appservice can use to connect to the homeserver.
|
|
||||||
address: https://matrix.example.com
|
|
||||||
# Publicly accessible base URL for media, used for avatars in relay mode.
|
|
||||||
# If not set, the connection address above will be used.
|
|
||||||
public_address: null
|
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
|
||||||
domain: example.com
|
|
||||||
|
|
||||||
# What software is the homeserver running?
|
|
||||||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
|
||||||
software: standard
|
|
||||||
# The URL to push real-time bridge status to.
|
|
||||||
# If set, the bridge will make POST requests to this URL whenever a user's discord connection state changes.
|
|
||||||
# The bridge will use the appservice as_token to authorize requests.
|
|
||||||
status_endpoint: null
|
|
||||||
# Endpoint for reporting per-message status.
|
|
||||||
message_send_checkpoint_endpoint: null
|
|
||||||
# Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246?
|
|
||||||
async_media: false
|
|
||||||
|
|
||||||
# Should the bridge use a websocket for connecting to the homeserver?
|
|
||||||
# The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy,
|
|
||||||
# mautrix-asmux (deprecated), and hungryserv (proprietary).
|
|
||||||
websocket: false
|
|
||||||
# How often should the websocket be pinged? Pinging will be disabled if this is zero.
|
|
||||||
ping_interval_seconds: 0
|
|
||||||
|
|
||||||
# Application service host/registration related details.
|
|
||||||
# Changing these values requires regeneration of the registration.
|
|
||||||
appservice:
|
|
||||||
# The address that the homeserver can use to connect to this appservice.
|
|
||||||
address: http://localhost:29334
|
|
||||||
|
|
||||||
# The hostname and port where this appservice should listen.
|
|
||||||
hostname: 0.0.0.0
|
|
||||||
port: 29334
|
|
||||||
|
|
||||||
# Database config.
|
|
||||||
database:
|
|
||||||
# The database type. "sqlite3-fk-wal" and "postgres" are supported.
|
|
||||||
type: postgres
|
|
||||||
# The database URI.
|
|
||||||
# SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended.
|
|
||||||
# https://github.com/mattn/go-sqlite3#connection-string
|
|
||||||
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
|
||||||
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
|
||||||
uri: postgres://user:password@host/database?sslmode=disable
|
|
||||||
# Maximum number of connections. Mostly relevant for Postgres.
|
|
||||||
max_open_conns: 20
|
|
||||||
max_idle_conns: 2
|
|
||||||
# Maximum connection idle time and lifetime before they're closed. Disabled if null.
|
|
||||||
# Parsed with https://pkg.go.dev/time#ParseDuration
|
|
||||||
max_conn_idle_time: null
|
|
||||||
max_conn_lifetime: null
|
|
||||||
|
|
||||||
# The unique ID of this appservice.
|
|
||||||
id: discord
|
|
||||||
# Appservice bot details.
|
|
||||||
bot:
|
|
||||||
# Username of the appservice bot.
|
|
||||||
username: discordbot
|
|
||||||
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
|
|
||||||
# to leave display name/avatar as-is.
|
|
||||||
displayname: Discord bridge bot
|
|
||||||
avatar: mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC
|
|
||||||
|
|
||||||
# Whether or not to receive ephemeral events via appservice transactions.
|
|
||||||
# Requires MSC2409 support (i.e. Synapse 1.22+).
|
|
||||||
ephemeral_events: true
|
|
||||||
|
|
||||||
# Should incoming events be handled asynchronously?
|
|
||||||
# This may be necessary for large public instances with lots of messages going through.
|
|
||||||
# However, messages will not be guaranteed to be bridged in the same order they were sent in.
|
|
||||||
async_transactions: false
|
|
||||||
|
|
||||||
# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
|
|
||||||
as_token: "This value is generated when generating the registration"
|
|
||||||
hs_token: "This value is generated when generating the registration"
|
|
||||||
|
|
||||||
# Bridge config
|
|
||||||
bridge:
|
|
||||||
# Localpart template of MXIDs for Discord users.
|
|
||||||
# {{.}} is replaced with the internal ID of the Discord user.
|
|
||||||
username_template: discord_{{.}}
|
|
||||||
# Displayname template for Discord users. This is also used as the room name in DMs if private_chat_portal_meta is enabled.
|
|
||||||
# Available variables:
|
|
||||||
# .ID - Internal user ID
|
|
||||||
# .Username - Legacy display/username on Discord
|
|
||||||
# .GlobalName - New displayname on Discord
|
|
||||||
# .Discriminator - The 4 numbers after the name on Discord
|
|
||||||
# .Bot - Whether the user is a bot
|
|
||||||
# .System - Whether the user is an official system user
|
|
||||||
# .Webhook - Whether the user is a webhook and is not an application
|
|
||||||
# .Application - Whether the user is an application
|
|
||||||
displayname_template: '{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}'
|
|
||||||
# Displayname template for Discord channels (bridged as rooms, or spaces when type=4).
|
|
||||||
# Available variables:
|
|
||||||
# .Name - Channel name, or user displayname (pre-formatted with displayname_template) in DMs.
|
|
||||||
# .ParentName - Parent channel name (used for categories).
|
|
||||||
# .GuildName - Guild name.
|
|
||||||
# .NSFW - Whether the channel is marked as NSFW.
|
|
||||||
# .Type - Channel type (see values at https://github.com/bwmarrin/discordgo/blob/v0.25.0/structs.go#L251-L267)
|
|
||||||
channel_name_template: '{{if or (eq .Type 3) (eq .Type 4)}}{{.Name}}{{else}}#{{.Name}}{{end}}'
|
|
||||||
# Displayname template for Discord guilds (bridged as spaces).
|
|
||||||
# Available variables:
|
|
||||||
# .Name - Guild name
|
|
||||||
guild_name_template: '{{.Name}}'
|
|
||||||
# Whether to explicitly set the avatar and room name for private chat portal rooms.
|
|
||||||
# If set to `default`, this will be enabled in encrypted rooms and disabled in unencrypted rooms.
|
|
||||||
# If set to `always`, all DM rooms will have explicit names and avatars set.
|
|
||||||
# If set to `never`, DM rooms will never have names and avatars set.
|
|
||||||
private_chat_portal_meta: default
|
|
||||||
|
|
||||||
portal_message_buffer: 128
|
|
||||||
|
|
||||||
# Number of private channel portals to create on bridge startup.
|
|
||||||
# Other portals will be created when receiving messages.
|
|
||||||
startup_private_channel_create_limit: 5
|
|
||||||
# Should the bridge send a read receipt from the bridge bot when a message has been sent to Discord?
|
|
||||||
delivery_receipts: false
|
|
||||||
# Whether the bridge should send the message status as a custom com.beeper.message_send_status event.
|
|
||||||
message_status_events: false
|
|
||||||
# Whether the bridge should send error notices via m.notice events when a message fails to bridge.
|
|
||||||
message_error_notices: true
|
|
||||||
# Should the bridge use space-restricted join rules instead of invite-only for guild rooms?
|
|
||||||
# This can avoid unnecessary invite events in guild rooms when members are synced in.
|
|
||||||
restricted_rooms: true
|
|
||||||
# Should the bridge automatically join the user to threads on Discord when the thread is opened on Matrix?
|
|
||||||
# This only works with clients that support thread read receipts (MSC3771 added in Matrix v1.4).
|
|
||||||
autojoin_thread_on_open: true
|
|
||||||
# Should inline fields in Discord embeds be bridged as HTML tables to Matrix?
|
|
||||||
# Tables aren't supported in all clients, but are the only way to emulate the Discord inline field UI.
|
|
||||||
embed_fields_as_tables: true
|
|
||||||
# Should guild channels be muted when the portal is created? This only meant for single-user instances,
|
|
||||||
# it won't mute it for all users if there are multiple Matrix users in the same Discord guild.
|
|
||||||
mute_channels_on_create: false
|
|
||||||
# Should the bridge update the m.direct account data event when double puppeting is enabled.
|
|
||||||
# Note that updating the m.direct event is not atomic (except with mautrix-asmux)
|
|
||||||
# and is therefore prone to race conditions.
|
|
||||||
sync_direct_chat_list: false
|
|
||||||
# Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run.
|
|
||||||
# This field will automatically be changed back to false after it, except if the config file is not writable.
|
|
||||||
resend_bridge_info: false
|
|
||||||
# Should incoming custom emoji reactions be bridged as mxc:// URIs?
|
|
||||||
# If set to false, custom emoji reactions will be bridged as the shortcode instead, and the image won't be available.
|
|
||||||
custom_emoji_reactions: true
|
|
||||||
# Should the bridge attempt to completely delete portal rooms when a channel is deleted on Discord?
|
|
||||||
# If true, the bridge will try to kick Matrix users from the room. Otherwise, the bridge only makes ghosts leave.
|
|
||||||
delete_portal_on_channel_delete: false
|
|
||||||
# Should the bridge delete all portal rooms when you leave a guild on Discord?
|
|
||||||
# This only applies if the guild has no other Matrix users on this bridge instance.
|
|
||||||
delete_guild_on_leave: true
|
|
||||||
# Whether or not created rooms should have federation enabled.
|
|
||||||
# If false, created portal rooms will never be federated.
|
|
||||||
federate_rooms: true
|
|
||||||
# Prefix messages from webhooks with the profile info? This can be used along with a custom displayname_template
|
|
||||||
# to better handle webhooks that change their name all the time (like ones used by bridges).
|
|
||||||
prefix_webhook_messages: false
|
|
||||||
# Bridge webhook avatars?
|
|
||||||
enable_webhook_avatars: true
|
|
||||||
# Should the bridge upload media to the Discord CDN directly before sending the message when using a user token,
|
|
||||||
# like the official client does? The other option is sending the media in the message send request as a form part
|
|
||||||
# (which is always used by bots and webhooks).
|
|
||||||
use_discord_cdn_upload: true
|
|
||||||
# Should mxc uris copied from Discord be cached?
|
|
||||||
# This can be `never` to never cache, `unencrypted` to only cache unencrypted mxc uris, or `always` to cache everything.
|
|
||||||
# If you have a media repo that generates non-unique mxc uris, you should set this to never.
|
|
||||||
cache_media: unencrypted
|
|
||||||
# Settings for converting Discord media to custom mxc:// URIs instead of reuploading.
|
|
||||||
# More details can be found at https://docs.mau.fi/bridges/go/discord/direct-media.html
|
|
||||||
direct_media:
|
|
||||||
# Should custom mxc:// URIs be used instead of reuploading media?
|
|
||||||
enabled: false
|
|
||||||
# The server name to use for the custom mxc:// URIs.
|
|
||||||
# This server name will effectively be a real Matrix server, it just won't implement anything other than media.
|
|
||||||
# You must either set up .well-known delegation from this domain to the bridge, or proxy the domain directly to the bridge.
|
|
||||||
server_name: discord-media.example.com
|
|
||||||
# Optionally a custom .well-known response. This defaults to `server_name:443`
|
|
||||||
well_known_response:
|
|
||||||
# The bridge supports MSC3860 media download redirects and will use them if the requester supports it.
|
|
||||||
# Optionally, you can force redirects and not allow proxying at all by setting this to false.
|
|
||||||
allow_proxy: true
|
|
||||||
# Matrix server signing key to make the federation tester pass, same format as synapse's .signing.key file.
|
|
||||||
# This key is also used to sign the mxc:// URIs to ensure only the bridge can generate them.
|
|
||||||
server_key: generate
|
|
||||||
# Settings for converting animated stickers.
|
|
||||||
animated_sticker:
|
|
||||||
# Format to which animated stickers should be converted.
|
|
||||||
# disable - No conversion, send as-is (lottie JSON)
|
|
||||||
# png - converts to non-animated png (fastest)
|
|
||||||
# gif - converts to animated gif
|
|
||||||
# webm - converts to webm video, requires ffmpeg executable with vp9 codec and webm container support
|
|
||||||
# webp - converts to animated webp, requires ffmpeg executable with webp codec/container support
|
|
||||||
target: webp
|
|
||||||
# Arguments for converter. All converters take width and height.
|
|
||||||
args:
|
|
||||||
width: 320
|
|
||||||
height: 320
|
|
||||||
fps: 25 # only for webm, webp and gif (2, 5, 10, 20 or 25 recommended)
|
|
||||||
# Servers to always allow double puppeting from
|
|
||||||
double_puppet_server_map:
|
|
||||||
example.com: https://example.com
|
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
|
||||||
double_puppet_allow_discovery: false
|
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
|
||||||
#
|
|
||||||
# If set, double puppeting will be enabled automatically for local users
|
|
||||||
# instead of users having to find an access token and run `login-matrix`
|
|
||||||
# manually.
|
|
||||||
login_shared_secret_map:
|
|
||||||
example.com: foobar
|
|
||||||
|
|
||||||
# The prefix for commands. Only required in non-management rooms.
|
|
||||||
command_prefix: '!discord'
|
|
||||||
# Messages sent upon joining a management room.
|
|
||||||
# Markdown is supported. The defaults are listed below.
|
|
||||||
management_room_text:
|
|
||||||
# Sent when joining a room.
|
|
||||||
welcome: "Hello, I'm a Discord bridge bot."
|
|
||||||
# Sent when joining a management room and the user is already logged in.
|
|
||||||
welcome_connected: "Use `help` for help."
|
|
||||||
# Sent when joining a management room and the user is not logged in.
|
|
||||||
welcome_unconnected: "Use `help` for help or `login` to log in."
|
|
||||||
# Optional extra text sent when joining a management room.
|
|
||||||
additional_help: ""
|
|
||||||
|
|
||||||
# Settings for backfilling messages.
|
|
||||||
backfill:
|
|
||||||
# Limits for forward backfilling.
|
|
||||||
forward_limits:
|
|
||||||
# Initial backfill (when creating portal). 0 means backfill is disabled.
|
|
||||||
# A special unlimited value is not supported, you must set a limit. Initial backfill will
|
|
||||||
# fetch all messages first before backfilling anything, so high limits can take a lot of time.
|
|
||||||
initial:
|
|
||||||
dm: 0
|
|
||||||
channel: 0
|
|
||||||
thread: 0
|
|
||||||
# Missed message backfill (on startup).
|
|
||||||
# 0 means backfill is disabled, -1 means fetch all messages since last bridged message.
|
|
||||||
# When using unlimited backfill (-1), messages are backfilled as they are fetched.
|
|
||||||
# With limits, all messages up to the limit are fetched first and backfilled afterwards.
|
|
||||||
missed:
|
|
||||||
dm: 0
|
|
||||||
channel: 0
|
|
||||||
thread: 0
|
|
||||||
# Maximum members in a guild to enable backfilling. Set to -1 to disable limit.
|
|
||||||
# This can be used as a rough heuristic to disable backfilling in channels that are too active.
|
|
||||||
# Currently only applies to missed message backfill.
|
|
||||||
max_guild_members: -1
|
|
||||||
|
|
||||||
# End-to-bridge encryption support options.
|
|
||||||
#
|
|
||||||
# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info.
|
|
||||||
encryption:
|
|
||||||
# Allow encryption, work in group chat rooms with e2ee enabled
|
|
||||||
allow: false
|
|
||||||
# Default to encryption, force-enable encryption in all portals the bridge creates
|
|
||||||
# This will cause the bridge bot to be in private chats for the encryption to work properly.
|
|
||||||
default: false
|
|
||||||
# Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.
|
|
||||||
appservice: false
|
|
||||||
# Require encryption, drop any unencrypted messages.
|
|
||||||
require: false
|
|
||||||
# Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled.
|
|
||||||
# You must use a client that supports requesting keys from other users to use this feature.
|
|
||||||
allow_key_sharing: false
|
|
||||||
# Should users mentions be in the event wire content to enable the server to send push notifications?
|
|
||||||
plaintext_mentions: false
|
|
||||||
# Options for deleting megolm sessions from the bridge.
|
|
||||||
delete_keys:
|
|
||||||
# Beeper-specific: delete outbound sessions when hungryserv confirms
|
|
||||||
# that the user has uploaded the key to key backup.
|
|
||||||
delete_outbound_on_ack: false
|
|
||||||
# Don't store outbound sessions in the inbound table.
|
|
||||||
dont_store_outbound: false
|
|
||||||
# Ratchet megolm sessions forward after decrypting messages.
|
|
||||||
ratchet_on_decrypt: false
|
|
||||||
# Delete fully used keys (index >= max_messages) after decrypting messages.
|
|
||||||
delete_fully_used_on_decrypt: false
|
|
||||||
# Delete previous megolm sessions from same device when receiving a new one.
|
|
||||||
delete_prev_on_new_session: false
|
|
||||||
# Delete megolm sessions received from a device when the device is deleted.
|
|
||||||
delete_on_device_delete: false
|
|
||||||
# Periodically delete megolm sessions when 2x max_age has passed since receiving the session.
|
|
||||||
periodically_delete_expired: false
|
|
||||||
# Delete inbound megolm sessions that don't have the received_at field used for
|
|
||||||
# automatic ratcheting and expired session deletion. This is meant as a migration
|
|
||||||
# to delete old keys prior to the bridge update.
|
|
||||||
delete_outdated_inbound: false
|
|
||||||
# What level of device verification should be required from users?
|
|
||||||
#
|
|
||||||
# Valid levels:
|
|
||||||
# unverified - Send keys to all device in the room.
|
|
||||||
# cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys.
|
|
||||||
# cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes).
|
|
||||||
# cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot.
|
|
||||||
# Note that creating user signatures from the bridge bot is not currently possible.
|
|
||||||
# verified - Require manual per-device verification
|
|
||||||
# (currently only possible by modifying the `trust` column in the `crypto_device` database table).
|
|
||||||
verification_levels:
|
|
||||||
# Minimum level for which the bridge should send keys to when bridging messages from WhatsApp to Matrix.
|
|
||||||
receive: unverified
|
|
||||||
# Minimum level that the bridge should accept for incoming Matrix messages.
|
|
||||||
send: unverified
|
|
||||||
# Minimum level that the bridge should require for accepting key requests.
|
|
||||||
share: cross-signed-tofu
|
|
||||||
# Options for Megolm room key rotation. These options allow you to
|
|
||||||
# configure the m.room.encryption event content. See:
|
|
||||||
# https://spec.matrix.org/v1.3/client-server-api/#mroomencryption for
|
|
||||||
# more information about that event.
|
|
||||||
rotation:
|
|
||||||
# Enable custom Megolm room key rotation settings. Note that these
|
|
||||||
# settings will only apply to rooms created after this option is
|
|
||||||
# set.
|
|
||||||
enable_custom: false
|
|
||||||
# The maximum number of milliseconds a session should be used
|
|
||||||
# before changing it. The Matrix spec recommends 604800000 (a week)
|
|
||||||
# as the default.
|
|
||||||
milliseconds: 604800000
|
|
||||||
# The maximum number of messages that should be sent with a given a
|
|
||||||
# session before changing it. The Matrix spec recommends 100 as the
|
|
||||||
# default.
|
|
||||||
messages: 100
|
|
||||||
|
|
||||||
# Disable rotating keys when a user's devices change?
|
|
||||||
# You should not enable this option unless you understand all the implications.
|
|
||||||
disable_device_change_key_rotation: false
|
|
||||||
|
|
||||||
# Settings for provisioning API
|
|
||||||
provisioning:
|
|
||||||
# Prefix for the provisioning API paths.
|
|
||||||
prefix: /_matrix/provision
|
|
||||||
# Shared secret for authentication. If set to "generate", a random secret will be generated,
|
|
||||||
# or if set to "disable", the provisioning API will be disabled.
|
|
||||||
shared_secret: generate
|
|
||||||
# Enable debug API at /debug with provisioning authentication.
|
|
||||||
debug_endpoints: false
|
|
||||||
|
|
||||||
# Permissions for using the bridge.
|
|
||||||
# Permitted values:
|
|
||||||
# relay - Talk through the relaybot (if enabled), no access otherwise
|
|
||||||
# user - Access to use the bridge to chat with a Discord account.
|
|
||||||
# admin - User level and some additional administration tools
|
|
||||||
# Permitted keys:
|
|
||||||
# * - All Matrix users
|
|
||||||
# domain - All users on that homeserver
|
|
||||||
# mxid - Specific user
|
|
||||||
permissions:
|
|
||||||
"*": relay
|
|
||||||
"example.com": user
|
|
||||||
"@admin:example.com": admin
|
|
||||||
|
|
||||||
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
|
||||||
logging:
|
|
||||||
min_level: debug
|
|
||||||
writers:
|
|
||||||
- type: stdout
|
|
||||||
format: pretty-colored
|
|
||||||
- type: file
|
|
||||||
format: json
|
|
||||||
filename: ./logs/mautrix-discord.log
|
|
||||||
max_size: 100
|
|
||||||
max_backups: 10
|
|
||||||
compress: true
|
|
||||||
|
|
||||||
# registration.yml contents
|
|
||||||
existingRegistrationSecret: ""
|
|
||||||
registration:
|
|
||||||
rate_limited: false
|
|
||||||
sender_localpart: discordbridgebot
|
|
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: mautrix-whatsapp
|
|
||||||
version: 0.0.2
|
|
||||||
description: Chart for Matrix Whatsapp Bridge
|
|
||||||
keywords:
|
|
||||||
- matrix
|
|
||||||
- mautrix-whatsapp
|
|
||||||
- bridge
|
|
||||||
- whatsapp
|
|
||||||
sources:
|
|
||||||
- https://github.com/mautrix/whatsapp
|
|
||||||
maintainers:
|
|
||||||
- name: alexlebens
|
|
||||||
icon: https://avatars.githubusercontent.com/u/88519669?s=48&v=4
|
|
||||||
appVersion: v0.10.6
|
|
@@ -1,41 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Helper for secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-whatsapp.secretName" -}}
|
|
||||||
{{- if .Values.mautrixWhatsapp.existingSecret }}
|
|
||||||
{{- printf "%s" .Values.mautrixWhatsapp.existingSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "mautrix-whatsapp-config-secret" | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Helper for registration secret name
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-whatsapp.registrationSecretName" -}}
|
|
||||||
{{- if .Values.mautrixWhatsapp.existingRegistrationSecret }}
|
|
||||||
{{- printf "%s" .Values.mautrixWhatsapp.existingRegistrationSecret -}}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "mautrix-whatsapp-registration-secret" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Generate registration.yaml if not from existing secret
|
|
||||||
*/}}
|
|
||||||
{{- define "mautrix-whatsapp.registration-yaml" -}}
|
|
||||||
id: {{ .Values.mautrixWhatsapp.config.appservice.id | quote }}
|
|
||||||
as_token: {{ .Values.mautrixWhatsapp.config.appservice.as_token | quote }}
|
|
||||||
hs_token: {{ .Values.mautrixWhatsapp.config.appservice.hs_token | quote }}
|
|
||||||
namespaces:
|
|
||||||
users:
|
|
||||||
- regex: {{ printf "^@whatsappbot:%s$" (replace "." "\\." .Values.mautrixWhatsapp.config.homeserver.domain) }}
|
|
||||||
exclusive: true
|
|
||||||
- regex: {{ printf "^@%s:%s$" (replace "{{.}}" ".*" (tpl .Values.mautrixWhatsapp.config.bridge.username_template .)) (replace "." "\\." .Values.mautrixWhatsapp.config.homeserver.domain) }}
|
|
||||||
exclusive: true
|
|
||||||
url: {{ .Values.mautrixWhatsapp.config.appservice.address | quote }}
|
|
||||||
sender_localpart: {{ .Values.mautrixWhatsapp.registration.sender_localpart | quote }}
|
|
||||||
rate_limited: {{ .Values.mautrixWhatsapp.registration.rate_limited }}
|
|
||||||
de.sorunome.msc2409.push_ephemeral: true
|
|
||||||
push_ephemeral: true
|
|
||||||
{{- end -}}
|
|
@@ -1,96 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mautrix-whatsapp
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-whatsapp
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
replicas: {{ .Values.deployment.replicas }}
|
|
||||||
strategy:
|
|
||||||
type: {{ .Values.deployment.strategy }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: mautrix-whatsapp
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-whatsapp
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: mautrix-whatsapp
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
containers:
|
|
||||||
- name: mautrix-whatsapp
|
|
||||||
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
|
|
||||||
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: {{ .Values.service.port }}
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
{{- range $k,$v := .Values.deployment.env }}
|
|
||||||
- name: {{ $k }}
|
|
||||||
value: {{ $v | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.envFrom }}
|
|
||||||
envFrom:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /_matrix/mau/live
|
|
||||||
port: http
|
|
||||||
failureThreshold: {{ .Values.deployment.probes.liveness.failureThreshold }}
|
|
||||||
periodSeconds: {{ .Values.deployment.probes.liveness.periodSeconds }}
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /_matrix/mau/ready
|
|
||||||
port: http
|
|
||||||
failureThreshold: {{ .Values.deployment.probes.readiness.failureThreshold }}
|
|
||||||
periodSeconds: {{ .Values.deployment.probes.readiness.periodSeconds }}
|
|
||||||
resources:
|
|
||||||
{{- toYaml .Values.deployment.resources | nindent 12 }}
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /data/config.yaml
|
|
||||||
subPath: config.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: registration
|
|
||||||
mountPath: /data/registration.yaml
|
|
||||||
subPath: registration.yaml
|
|
||||||
readOnly: true
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "mautrix-whatsapp.secretName" . }}
|
|
||||||
- name: registration
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "mautrix-whatsapp.registrationSecretName" . }}
|
|
||||||
- name: data
|
|
||||||
{{- if .Values.persistence.enabled }}
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.existingClaim | default "mautrix-whatsapp-data" }}
|
|
||||||
{{- else }}
|
|
||||||
emptyDir: {}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.affinity }}
|
|
||||||
affinity:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with .Values.deployment.tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{- toYaml . | nindent 8 }}
|
|
||||||
{{- end }}
|
|
@@ -1,32 +0,0 @@
|
|||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: mautrix-whatsapp
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-whatsapp
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
ingressClassName: {{ .Values.ingress.className }}
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- {{ .Values.ingress.host }}
|
|
||||||
secretName: {{ .Release.Name }}-secret-tls
|
|
||||||
rules:
|
|
||||||
- host: {{ .Values.ingress.host }}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: mautrix-whatsapp
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
{{- end }}
|
|
@@ -1,26 +0,0 @@
|
|||||||
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: mautrix-whatsapp-data
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: mautrix-whatsapp
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/component: web
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- {{ .Values.persistence.accessMode | quote }}
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.size | quote }}
|
|
||||||
{{- if .Values.persistence.storageClass }}
|
|
||||||
{{- if not .Values.persistence.storageClass }}
|
|
||||||
storageClassName: ""
|
|
||||||
{{- else }}
|
|
||||||
storageClassName: {{ .Values.persistence.storageClass | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user