feat: add more services
This commit is contained in:
1
.vscode/extensions.json
vendored
1
.vscode/extensions.json
vendored
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"yzhang.markdown-all-in-one",
|
||||
"dbaeumer.vscode-eslint"
|
||||
]
|
||||
}
|
||||
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Alex Sun
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
12
package.json
12
package.json
@@ -14,10 +14,18 @@
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
"prepare": "simple-git-hooks"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@antfu/eslint-config": "^7.4.3",
|
||||
"eslint": "^10.0.1"
|
||||
"eslint": "^10.0.1",
|
||||
"lint-staged": "^16.2.7",
|
||||
"simple-git-hooks": "^2.13.1"
|
||||
},
|
||||
"simple-git-hooks": {
|
||||
"pre-commit": "pnpm lint-staged"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*": "pnpm lint:fix"
|
||||
}
|
||||
}
|
||||
|
||||
274
pnpm-lock.yaml
generated
274
pnpm-lock.yaml
generated
@@ -14,6 +14,12 @@ importers:
|
||||
eslint:
|
||||
specifier: ^10.0.1
|
||||
version: 10.0.1
|
||||
lint-staged:
|
||||
specifier: ^16.2.7
|
||||
version: 16.2.7
|
||||
simple-git-hooks:
|
||||
specifier: ^2.13.1
|
||||
version: 2.13.1
|
||||
|
||||
packages:
|
||||
|
||||
@@ -337,6 +343,18 @@ packages:
|
||||
ajv@6.14.0:
|
||||
resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
|
||||
|
||||
ansi-escapes@7.3.0:
|
||||
resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
ansi-regex@6.2.2:
|
||||
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
ansi-styles@6.2.3:
|
||||
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
ansis@4.2.0:
|
||||
resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -361,6 +379,10 @@ packages:
|
||||
resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
braces@3.0.3:
|
||||
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
browserslist@4.28.1:
|
||||
resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
|
||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||
@@ -394,6 +416,21 @@ packages:
|
||||
resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
cli-cursor@5.0.0:
|
||||
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
cli-truncate@5.1.1:
|
||||
resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
colorette@2.0.20:
|
||||
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
|
||||
|
||||
commander@14.0.3:
|
||||
resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
comment-parser@1.4.1:
|
||||
resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
@@ -453,6 +490,9 @@ packages:
|
||||
electron-to-chromium@1.5.302:
|
||||
resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==}
|
||||
|
||||
emoji-regex@10.6.0:
|
||||
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
|
||||
|
||||
empathic@2.0.0:
|
||||
resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -465,6 +505,10 @@ packages:
|
||||
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
|
||||
engines: {node: '>=0.12'}
|
||||
|
||||
environment@1.1.0:
|
||||
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
escalade@3.2.0:
|
||||
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -682,6 +726,9 @@ packages:
|
||||
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
eventemitter3@5.0.4:
|
||||
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
|
||||
|
||||
exsolve@1.0.8:
|
||||
resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
|
||||
|
||||
@@ -710,6 +757,10 @@ packages:
|
||||
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
fill-range@7.1.1:
|
||||
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
find-up-simple@1.0.1:
|
||||
resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -729,6 +780,10 @@ packages:
|
||||
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
|
||||
engines: {node: '>=0.4.x'}
|
||||
|
||||
get-east-asian-width@1.5.0:
|
||||
resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
get-tsconfig@4.13.6:
|
||||
resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
|
||||
|
||||
@@ -787,10 +842,18 @@ packages:
|
||||
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
is-fullwidth-code-point@5.1.0:
|
||||
resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
is-glob@4.0.3:
|
||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
is-number@7.0.0:
|
||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
|
||||
isexe@2.0.0:
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
|
||||
@@ -827,6 +890,15 @@ packages:
|
||||
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
||||
lint-staged@16.2.7:
|
||||
resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==}
|
||||
engines: {node: '>=20.17'}
|
||||
hasBin: true
|
||||
|
||||
listr2@9.0.5:
|
||||
resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==}
|
||||
engines: {node: '>=20.0.0'}
|
||||
|
||||
local-pkg@1.1.2:
|
||||
resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -835,6 +907,10 @@ packages:
|
||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
log-update@6.1.0:
|
||||
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
longest-streak@3.1.0:
|
||||
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
||||
|
||||
@@ -967,6 +1043,14 @@ packages:
|
||||
micromark@4.0.2:
|
||||
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
|
||||
|
||||
micromatch@4.0.8:
|
||||
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
mimic-function@5.0.1:
|
||||
resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
minimatch@10.2.2:
|
||||
resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
@@ -981,6 +1065,10 @@ packages:
|
||||
ms@2.1.3:
|
||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||
|
||||
nano-spawn@2.0.0:
|
||||
resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==}
|
||||
engines: {node: '>=20.17'}
|
||||
|
||||
nanoid@3.3.11:
|
||||
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
@@ -1002,6 +1090,10 @@ packages:
|
||||
object-deep-merge@2.0.0:
|
||||
resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==}
|
||||
|
||||
onetime@7.0.0:
|
||||
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
optionator@0.9.4:
|
||||
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
@@ -1041,10 +1133,19 @@ packages:
|
||||
picocolors@1.1.1:
|
||||
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||
|
||||
picomatch@2.3.1:
|
||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
picomatch@4.0.3:
|
||||
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
pidtree@0.6.0:
|
||||
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
|
||||
engines: {node: '>=0.10'}
|
||||
hasBin: true
|
||||
|
||||
pkg-types@1.3.1:
|
||||
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
||||
|
||||
@@ -1100,6 +1201,13 @@ packages:
|
||||
resolve-pkg-maps@1.0.0:
|
||||
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
||||
|
||||
restore-cursor@5.1.0:
|
||||
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
rfdc@1.4.1:
|
||||
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
|
||||
|
||||
scslre@0.3.0:
|
||||
resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==}
|
||||
engines: {node: ^14.0.0 || >=16.0.0}
|
||||
@@ -1117,9 +1225,21 @@ packages:
|
||||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
signal-exit@4.1.0:
|
||||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
simple-git-hooks@2.13.1:
|
||||
resolution: {integrity: sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==}
|
||||
hasBin: true
|
||||
|
||||
sisteransi@1.0.5:
|
||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||
|
||||
slice-ansi@7.1.2:
|
||||
resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
source-map-js@1.2.1:
|
||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -1133,6 +1253,22 @@ packages:
|
||||
spdx-license-ids@3.0.23:
|
||||
resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
|
||||
|
||||
string-argv@0.3.2:
|
||||
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
||||
engines: {node: '>=0.6.19'}
|
||||
|
||||
string-width@7.2.0:
|
||||
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
string-width@8.2.0:
|
||||
resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
strip-ansi@7.1.2:
|
||||
resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
strip-indent@4.1.1:
|
||||
resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1153,6 +1289,10 @@ packages:
|
||||
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
engines: {node: '>=8.0'}
|
||||
|
||||
to-valid-identifier@1.0.0:
|
||||
resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==}
|
||||
engines: {node: '>=20'}
|
||||
@@ -1223,6 +1363,10 @@ packages:
|
||||
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
wrap-ansi@9.0.2:
|
||||
resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
xml-name-validator@4.0.0:
|
||||
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1599,6 +1743,14 @@ snapshots:
|
||||
json-schema-traverse: 0.4.1
|
||||
uri-js: 4.4.1
|
||||
|
||||
ansi-escapes@7.3.0:
|
||||
dependencies:
|
||||
environment: 1.1.0
|
||||
|
||||
ansi-regex@6.2.2: {}
|
||||
|
||||
ansi-styles@6.2.3: {}
|
||||
|
||||
ansis@4.2.0: {}
|
||||
|
||||
are-docs-informative@0.0.2: {}
|
||||
@@ -1613,6 +1765,10 @@ snapshots:
|
||||
dependencies:
|
||||
balanced-match: 4.0.4
|
||||
|
||||
braces@3.0.3:
|
||||
dependencies:
|
||||
fill-range: 7.1.1
|
||||
|
||||
browserslist@4.28.1:
|
||||
dependencies:
|
||||
baseline-browser-mapping: 2.10.0
|
||||
@@ -1639,6 +1795,19 @@ snapshots:
|
||||
dependencies:
|
||||
escape-string-regexp: 1.0.5
|
||||
|
||||
cli-cursor@5.0.0:
|
||||
dependencies:
|
||||
restore-cursor: 5.1.0
|
||||
|
||||
cli-truncate@5.1.1:
|
||||
dependencies:
|
||||
slice-ansi: 7.1.2
|
||||
string-width: 8.2.0
|
||||
|
||||
colorette@2.0.20: {}
|
||||
|
||||
commander@14.0.3: {}
|
||||
|
||||
comment-parser@1.4.1: {}
|
||||
|
||||
comment-parser@1.4.5: {}
|
||||
@@ -1681,6 +1850,8 @@ snapshots:
|
||||
|
||||
electron-to-chromium@1.5.302: {}
|
||||
|
||||
emoji-regex@10.6.0: {}
|
||||
|
||||
empathic@2.0.0: {}
|
||||
|
||||
enhanced-resolve@5.19.0:
|
||||
@@ -1690,6 +1861,8 @@ snapshots:
|
||||
|
||||
entities@7.0.1: {}
|
||||
|
||||
environment@1.1.0: {}
|
||||
|
||||
escalade@3.2.0: {}
|
||||
|
||||
escape-string-regexp@1.0.5: {}
|
||||
@@ -1983,6 +2156,8 @@ snapshots:
|
||||
|
||||
esutils@2.0.3: {}
|
||||
|
||||
eventemitter3@5.0.4: {}
|
||||
|
||||
exsolve@1.0.8: {}
|
||||
|
||||
fast-deep-equal@3.1.3: {}
|
||||
@@ -2003,6 +2178,10 @@ snapshots:
|
||||
dependencies:
|
||||
flat-cache: 4.0.1
|
||||
|
||||
fill-range@7.1.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
find-up-simple@1.0.1: {}
|
||||
|
||||
find-up@5.0.0:
|
||||
@@ -2019,6 +2198,8 @@ snapshots:
|
||||
|
||||
format@0.2.2: {}
|
||||
|
||||
get-east-asian-width@1.5.0: {}
|
||||
|
||||
get-tsconfig@4.13.6:
|
||||
dependencies:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
@@ -2057,10 +2238,16 @@ snapshots:
|
||||
|
||||
is-extglob@2.1.1: {}
|
||||
|
||||
is-fullwidth-code-point@5.1.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.5.0
|
||||
|
||||
is-glob@4.0.3:
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
|
||||
is-number@7.0.0: {}
|
||||
|
||||
isexe@2.0.0: {}
|
||||
|
||||
jsdoc-type-pratt-parser@7.0.0: {}
|
||||
@@ -2091,6 +2278,25 @@ snapshots:
|
||||
prelude-ls: 1.2.1
|
||||
type-check: 0.4.0
|
||||
|
||||
lint-staged@16.2.7:
|
||||
dependencies:
|
||||
commander: 14.0.3
|
||||
listr2: 9.0.5
|
||||
micromatch: 4.0.8
|
||||
nano-spawn: 2.0.0
|
||||
pidtree: 0.6.0
|
||||
string-argv: 0.3.2
|
||||
yaml: 2.8.2
|
||||
|
||||
listr2@9.0.5:
|
||||
dependencies:
|
||||
cli-truncate: 5.1.1
|
||||
colorette: 2.0.20
|
||||
eventemitter3: 5.0.4
|
||||
log-update: 6.1.0
|
||||
rfdc: 1.4.1
|
||||
wrap-ansi: 9.0.2
|
||||
|
||||
local-pkg@1.1.2:
|
||||
dependencies:
|
||||
mlly: 1.8.0
|
||||
@@ -2101,6 +2307,14 @@ snapshots:
|
||||
dependencies:
|
||||
p-locate: 5.0.0
|
||||
|
||||
log-update@6.1.0:
|
||||
dependencies:
|
||||
ansi-escapes: 7.3.0
|
||||
cli-cursor: 5.0.0
|
||||
slice-ansi: 7.1.2
|
||||
strip-ansi: 7.1.2
|
||||
wrap-ansi: 9.0.2
|
||||
|
||||
longest-streak@3.1.0: {}
|
||||
|
||||
magic-string@0.30.21:
|
||||
@@ -2420,6 +2634,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromatch@4.0.8:
|
||||
dependencies:
|
||||
braces: 3.0.3
|
||||
picomatch: 2.3.1
|
||||
|
||||
mimic-function@5.0.1: {}
|
||||
|
||||
minimatch@10.2.2:
|
||||
dependencies:
|
||||
brace-expansion: 5.0.3
|
||||
@@ -2437,6 +2658,8 @@ snapshots:
|
||||
|
||||
ms@2.1.3: {}
|
||||
|
||||
nano-spawn@2.0.0: {}
|
||||
|
||||
nanoid@3.3.11: {}
|
||||
|
||||
natural-compare@1.4.0: {}
|
||||
@@ -2451,6 +2674,10 @@ snapshots:
|
||||
|
||||
object-deep-merge@2.0.0: {}
|
||||
|
||||
onetime@7.0.0:
|
||||
dependencies:
|
||||
mimic-function: 5.0.1
|
||||
|
||||
optionator@0.9.4:
|
||||
dependencies:
|
||||
deep-is: 0.1.4
|
||||
@@ -2486,8 +2713,12 @@ snapshots:
|
||||
|
||||
picocolors@1.1.1: {}
|
||||
|
||||
picomatch@2.3.1: {}
|
||||
|
||||
picomatch@4.0.3: {}
|
||||
|
||||
pidtree@0.6.0: {}
|
||||
|
||||
pkg-types@1.3.1:
|
||||
dependencies:
|
||||
confbox: 0.1.8
|
||||
@@ -2542,6 +2773,13 @@ snapshots:
|
||||
|
||||
resolve-pkg-maps@1.0.0: {}
|
||||
|
||||
restore-cursor@5.1.0:
|
||||
dependencies:
|
||||
onetime: 7.0.0
|
||||
signal-exit: 4.1.0
|
||||
|
||||
rfdc@1.4.1: {}
|
||||
|
||||
scslre@0.3.0:
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
@@ -2556,8 +2794,17 @@ snapshots:
|
||||
|
||||
shebang-regex@3.0.0: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
simple-git-hooks@2.13.1: {}
|
||||
|
||||
sisteransi@1.0.5: {}
|
||||
|
||||
slice-ansi@7.1.2:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.3
|
||||
is-fullwidth-code-point: 5.1.0
|
||||
|
||||
source-map-js@1.2.1: {}
|
||||
|
||||
spdx-exceptions@2.5.0: {}
|
||||
@@ -2569,6 +2816,23 @@ snapshots:
|
||||
|
||||
spdx-license-ids@3.0.23: {}
|
||||
|
||||
string-argv@0.3.2: {}
|
||||
|
||||
string-width@7.2.0:
|
||||
dependencies:
|
||||
emoji-regex: 10.6.0
|
||||
get-east-asian-width: 1.5.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
string-width@8.2.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.5.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
strip-ansi@7.1.2:
|
||||
dependencies:
|
||||
ansi-regex: 6.2.2
|
||||
|
||||
strip-indent@4.1.1: {}
|
||||
|
||||
synckit@0.11.12:
|
||||
@@ -2584,6 +2848,10 @@ snapshots:
|
||||
fdir: 6.5.0(picomatch@4.0.3)
|
||||
picomatch: 4.0.3
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
to-valid-identifier@1.0.0:
|
||||
dependencies:
|
||||
'@sindresorhus/base62': 1.0.0
|
||||
@@ -2659,6 +2927,12 @@ snapshots:
|
||||
|
||||
word-wrap@1.2.5: {}
|
||||
|
||||
wrap-ansi@9.0.2:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.3
|
||||
string-width: 7.2.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
xml-name-validator@4.0.0: {}
|
||||
|
||||
yaml-eslint-parser@2.0.0:
|
||||
|
||||
15
src/apisix/Makefile
Normal file
15
src/apisix/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= apisix
|
||||
HELM_APPLICATION_NAME ?= apisix
|
||||
HELM_NAMESPACE ?= apisix
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= apisix
|
||||
HELM_REPO_URL ?= https://apache.github.io/apisix-helm-chart
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
70
src/apisix/README.md
Normal file
70
src/apisix/README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Apache APISIX
|
||||
|
||||
## Introduction
|
||||
|
||||
Apache APISIX is a dynamic, real-time, high-performance API gateway. It provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.
|
||||
|
||||
## Installation
|
||||
|
||||
To install APISIX, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation, access APISIX:
|
||||
|
||||
```bash
|
||||
# Port forward to access Admin API
|
||||
kubectl port-forward svc/apisix-admin -n apisix 9180:9180
|
||||
|
||||
# Access Admin API
|
||||
curl http://localhost:9180/apisix/admin/routes -H 'X-API-Key: edd1c9f034335f136f87ad84b625c8f1'
|
||||
```
|
||||
|
||||
Default Admin API key: `edd1c9f034335f136f87ad84b625c8f1`
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- APISIX server with Admin API enabled
|
||||
- etcd as configuration storage
|
||||
- Dashboard (if enabled)
|
||||
- Ingress Controller (if enabled)
|
||||
|
||||
## Components
|
||||
|
||||
- **APISIX**: Core API gateway server
|
||||
- **etcd**: Configuration storage backend
|
||||
- **Dashboard**: Web UI for management (optional)
|
||||
- **Ingress Controller**: Kubernetes ingress support (optional)
|
||||
|
||||
## Creating Routes
|
||||
|
||||
Example route configuration:
|
||||
|
||||
```bash
|
||||
curl http://localhost:9180/apisix/admin/routes/1 \
|
||||
-H 'X-API-Key: edd1c9f034335f136f87ad84b625c8f1' \
|
||||
-X PUT -d '
|
||||
{
|
||||
"uri": "/hello",
|
||||
"upstream": {
|
||||
"type": "roundrobin",
|
||||
"nodes": {
|
||||
"127.0.0.1:1980": 1
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall APISIX:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
70
src/apisix/README.zh.md
Normal file
70
src/apisix/README.zh.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Apache APISIX
|
||||
|
||||
## 简介
|
||||
|
||||
Apache APISIX 是一个动态、实时、高性能的 API 网关。它提供丰富的流量管理功能,如负载均衡、动态上游、灰度发布、熔断、认证、可观测性等。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 APISIX:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后,访问 APISIX:
|
||||
|
||||
```bash
|
||||
# 端口转发以访问 Admin API
|
||||
kubectl port-forward svc/apisix-admin -n apisix 9180:9180
|
||||
|
||||
# 访问 Admin API
|
||||
curl http://localhost:9180/apisix/admin/routes -H 'X-API-Key: edd1c9f034335f136f87ad84b625c8f1'
|
||||
```
|
||||
|
||||
默认 Admin API 密钥:`edd1c9f034335f136f87ad84b625c8f1`
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 启用 Admin API 的 APISIX 服务器
|
||||
- etcd 作为配置存储
|
||||
- Dashboard(如果启用)
|
||||
- Ingress Controller(如果启用)
|
||||
|
||||
## 组件
|
||||
|
||||
- **APISIX**: 核心 API 网关服务器
|
||||
- **etcd**: 配置存储后端
|
||||
- **Dashboard**: 管理 Web UI(可选)
|
||||
- **Ingress Controller**: Kubernetes 入口支持(可选)
|
||||
|
||||
## 创建路由
|
||||
|
||||
路由配置示例:
|
||||
|
||||
```bash
|
||||
curl http://localhost:9180/apisix/admin/routes/1 \
|
||||
-H 'X-API-Key: edd1c9f034335f136f87ad84b625c8f1' \
|
||||
-X PUT -d '
|
||||
{
|
||||
"uri": "/hello",
|
||||
"upstream": {
|
||||
"type": "roundrobin",
|
||||
"nodes": {
|
||||
"127.0.0.1:1980": 1
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 APISIX:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
53
src/apisix/values.yaml
Normal file
53
src/apisix/values.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
# Apache APISIX Configuration
|
||||
# https://github.com/apache/apisix-helm-chart
|
||||
|
||||
# APISIX server configuration
|
||||
apisix:
|
||||
enabled: true
|
||||
image:
|
||||
repository: apache/apisix
|
||||
tag: 3.9.0
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
|
||||
# Admin API configuration
|
||||
admin:
|
||||
enabled: true
|
||||
port: 9180
|
||||
credentials:
|
||||
admin: edd1c9f034335f136f87ad84b625c8f1
|
||||
viewer: 4054f7cf07e344346cd3f287985e76a2
|
||||
|
||||
# Proxy configuration
|
||||
proxy:
|
||||
http:
|
||||
enabled: true
|
||||
port: 9080
|
||||
tls:
|
||||
enabled: false
|
||||
|
||||
# etcd configuration
|
||||
etcd:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Dashboard configuration (disabled by default)
|
||||
dashboard:
|
||||
enabled: false
|
||||
|
||||
# Ingress Controller configuration (disabled by default)
|
||||
ingress-controller:
|
||||
enabled: false
|
||||
15
src/cassandra/Makefile
Normal file
15
src/cassandra/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= cassandra
|
||||
HELM_APPLICATION_NAME ?= cassandra
|
||||
HELM_NAMESPACE ?= cassandra
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= k8ssandra
|
||||
HELM_REPO_URL ?= https://helm.k8ssandra.io/stable
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/k8ssandra-operator
|
||||
|
||||
include ../_template/base.mk
|
||||
82
src/cassandra/README.md
Normal file
82
src/cassandra/README.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Apache Cassandra (K8ssandra)
|
||||
|
||||
## Introduction
|
||||
|
||||
Apache Cassandra is an open-source distributed NoSQL database management system designed to handle large amounts of data across many commodity servers. This deployment uses K8ssandra Operator, which provides a Kubernetes-native way to manage Cassandra clusters.
|
||||
|
||||
K8ssandra is a cloud-native distribution of Apache Cassandra that runs on Kubernetes. It includes automation for operational tasks such as repairs, backups, and monitoring.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Cassandra, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation, you can create a Cassandra cluster:
|
||||
|
||||
```bash
|
||||
# Check if operator is running
|
||||
kubectl get pods -n cassandra
|
||||
|
||||
# Create a Cassandra cluster
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: k8ssandra.io/v1alpha1
|
||||
kind: K8ssandraCluster
|
||||
metadata:
|
||||
name: demo
|
||||
namespace: cassandra
|
||||
spec:
|
||||
cassandra:
|
||||
serverVersion: "4.0.1"
|
||||
datacenters:
|
||||
- metadata:
|
||||
name: dc1
|
||||
size: 3
|
||||
storageConfig:
|
||||
cassandraDataVolumeClaimSpec:
|
||||
storageClassName: standard
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
config:
|
||||
jvmOptions:
|
||||
heapSize: 1Gi
|
||||
EOF
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- K8ssandra Operator for managing Cassandra clusters
|
||||
- Support for Cassandra 4.x
|
||||
- Medusa for backup management
|
||||
- Reaper for repair scheduling
|
||||
- Metrics collection via Prometheus
|
||||
|
||||
## Features
|
||||
|
||||
- **Automated Repairs**: Reaper handles repair scheduling
|
||||
- **Backup/Restore**: Medusa provides backup and restore capabilities
|
||||
- **Monitoring**: Integrated Prometheus metrics
|
||||
- **Multi-DC Support**: Deploy across multiple data centers
|
||||
|
||||
## Connecting to Cassandra
|
||||
|
||||
```bash
|
||||
# Get CQLSH access
|
||||
kubectl exec -it demo-dc1-default-sts-0 -n cassandra -c cassandra -- cqlsh
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
82
src/cassandra/README.zh.md
Normal file
82
src/cassandra/README.zh.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Apache Cassandra (K8ssandra)
|
||||
|
||||
## 简介
|
||||
|
||||
Apache Cassandra 是一个开源的分布式 NoSQL 数据库管理系统,设计用于在大量商用服务器上处理大量数据。此部署使用 K8ssandra Operator,它提供了一种 Kubernetes 原生的方式来管理 Cassandra 集群。
|
||||
|
||||
K8ssandra 是 Apache Cassandra 的云原生发行版,可在 Kubernetes 上运行。它包括修复、备份和监控等运维任务的自动化。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Cassandra:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后,您可以创建 Cassandra 集群:
|
||||
|
||||
```bash
|
||||
# 检查 operator 是否运行
|
||||
kubectl get pods -n cassandra
|
||||
|
||||
# 创建 Cassandra 集群
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: k8ssandra.io/v1alpha1
|
||||
kind: K8ssandraCluster
|
||||
metadata:
|
||||
name: demo
|
||||
namespace: cassandra
|
||||
spec:
|
||||
cassandra:
|
||||
serverVersion: "4.0.1"
|
||||
datacenters:
|
||||
- metadata:
|
||||
name: dc1
|
||||
size: 3
|
||||
storageConfig:
|
||||
cassandraDataVolumeClaimSpec:
|
||||
storageClassName: standard
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
config:
|
||||
jvmOptions:
|
||||
heapSize: 1Gi
|
||||
EOF
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 用于管理 Cassandra 集群的 K8ssandra Operator
|
||||
- 支持 Cassandra 4.x
|
||||
- Medusa 用于备份管理
|
||||
- Reaper 用于修复调度
|
||||
- 通过 Prometheus 收集指标
|
||||
|
||||
## 功能
|
||||
|
||||
- **自动修复**: Reaper 处理修复调度
|
||||
- **备份/恢复**: Medusa 提供备份和恢复功能
|
||||
- **监控**: 集成的 Prometheus 指标
|
||||
- **多 DC 支持**: 跨多个数据中心部署
|
||||
|
||||
## 连接 Cassandra
|
||||
|
||||
```bash
|
||||
# 获取 CQLSH 访问
|
||||
kubectl exec -it demo-dc1-default-sts-0 -n cassandra -c cassandra -- cqlsh
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
28
src/cassandra/values.yaml
Normal file
28
src/cassandra/values.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
# K8ssandra Operator Configuration
|
||||
# https://github.com/k8ssandra/k8ssandra-operator
|
||||
|
||||
# Operator configuration
|
||||
replicaCount: 1
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Medusa backup configuration
|
||||
medusa:
|
||||
enabled: false
|
||||
|
||||
# Prometheus monitoring
|
||||
monitoring:
|
||||
enabled: false
|
||||
|
||||
# Cluster-wide configuration
|
||||
clusterScoped: false
|
||||
|
||||
# Webhook configuration
|
||||
webhook:
|
||||
enabled: false
|
||||
15
src/dify/Makefile
Normal file
15
src/dify/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= dify
|
||||
HELM_APPLICATION_NAME ?= dify
|
||||
HELM_NAMESPACE ?= dify
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= dify
|
||||
HELM_REPO_URL ?= https://langgenius.github.io/dify-helm
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
103
src/dify/README.md
Normal file
103
src/dify/README.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# Dify
|
||||
|
||||
## Introduction
|
||||
|
||||
Dify is an open-source LLM (Large Language Model) application development platform. It helps developers build generative AI applications more easily by combining AI workflow, RAG pipeline, agent capabilities, model management, observability features, and more.
|
||||
|
||||
This Helm chart deploys Dify on Kubernetes, including:
|
||||
|
||||
- API Server
|
||||
- Web Frontend
|
||||
- Worker for background tasks
|
||||
- Weaviate for vector database
|
||||
- Redis for caching
|
||||
- PostgreSQL for data persistence
|
||||
|
||||
## Installation
|
||||
|
||||
To install Dify, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Dify requires the following components:
|
||||
|
||||
- PostgreSQL 14+ (or use built-in)
|
||||
- Redis 6+ (or use built-in)
|
||||
- Weaviate vector database (or use built-in)
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if Dify pods are running
|
||||
kubectl get pods -n dify
|
||||
|
||||
# Port forward to access Dify
|
||||
kubectl port-forward svc/dify-web -n dify 3000:3000
|
||||
kubectl port-forward svc/dify-api -n dify 5001:5001
|
||||
```
|
||||
|
||||
Then open <http://localhost:3000> in your browser.
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- Dify API server with default settings
|
||||
- Web frontend
|
||||
- Background worker
|
||||
- Built-in Weaviate vector database
|
||||
- Built-in Redis cache
|
||||
- Built-in PostgreSQL database
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Configure Dify using environment variables in values.yaml:
|
||||
|
||||
```yaml
|
||||
api:
|
||||
env:
|
||||
- name: APP_API_URL
|
||||
value: 'http://dify-api:5001'
|
||||
- name: SECRET_KEY
|
||||
value: your-secret-key
|
||||
- name: CONSOLE_API_URL
|
||||
value: 'http://dify-api:5001'
|
||||
- name: CONSOLE_WEB_URL
|
||||
value: 'http://dify-web:3000'
|
||||
```
|
||||
|
||||
## External Dependencies
|
||||
|
||||
To use external PostgreSQL/Redis:
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
externalPostgresql:
|
||||
host: your-postgres-host
|
||||
port: 5432
|
||||
database: dify
|
||||
username: dify
|
||||
password: your-password
|
||||
|
||||
redis:
|
||||
enabled: false
|
||||
externalRedis:
|
||||
host: your-redis-host
|
||||
port: 6379
|
||||
password: your-password
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Dify:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
103
src/dify/README.zh.md
Normal file
103
src/dify/README.zh.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# Dify
|
||||
|
||||
## 简介
|
||||
|
||||
Dify 是一个开源的 LLM(大语言模型)应用开发平台。它通过结合 AI 工作流、RAG 管道、Agent 能力、模型管理、可观测性功能等,帮助开发者更轻松地构建生成式 AI 应用。
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署 Dify,包括:
|
||||
|
||||
- API 服务器
|
||||
- Web 前端
|
||||
- 后台任务 Worker
|
||||
- Weaviate 向量数据库
|
||||
- Redis 缓存
|
||||
- PostgreSQL 数据持久化
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Dify:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 先决条件
|
||||
|
||||
Dify 需要以下组件:
|
||||
|
||||
- PostgreSQL 14+(或使用内置的)
|
||||
- Redis 6+(或使用内置的)
|
||||
- Weaviate 向量数据库(或使用内置的)
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 Dify pod 是否运行
|
||||
kubectl get pods -n dify
|
||||
|
||||
# 端口转发以访问 Dify
|
||||
kubectl port-forward svc/dify-web -n dify 3000:3000
|
||||
kubectl port-forward svc/dify-api -n dify 5001:5001
|
||||
```
|
||||
|
||||
然后在浏览器中打开 <http://localhost:3000>。
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 默认设置的 Dify API 服务器
|
||||
- Web 前端
|
||||
- 后台 worker
|
||||
- 内置 Weaviate 向量数据库
|
||||
- 内置 Redis 缓存
|
||||
- 内置 PostgreSQL 数据库
|
||||
|
||||
## 环境变量
|
||||
|
||||
在 values.yaml 中使用环境变量配置 Dify:
|
||||
|
||||
```yaml
|
||||
api:
|
||||
env:
|
||||
- name: APP_API_URL
|
||||
value: 'http://dify-api:5001'
|
||||
- name: SECRET_KEY
|
||||
value: your-secret-key
|
||||
- name: CONSOLE_API_URL
|
||||
value: 'http://dify-api:5001'
|
||||
- name: CONSOLE_WEB_URL
|
||||
value: 'http://dify-web:3000'
|
||||
```
|
||||
|
||||
## 外部依赖
|
||||
|
||||
使用外部 PostgreSQL/Redis:
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
externalPostgresql:
|
||||
host: your-postgres-host
|
||||
port: 5432
|
||||
database: dify
|
||||
username: dify
|
||||
password: your-password
|
||||
|
||||
redis:
|
||||
enabled: false
|
||||
externalRedis:
|
||||
host: your-redis-host
|
||||
port: 6379
|
||||
password: your-password
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Dify:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
119
src/dify/values.yaml
Normal file
119
src/dify/values.yaml
Normal file
@@ -0,0 +1,119 @@
|
||||
# Dify Configuration
|
||||
# https://github.com/langgenius/dify-helm
|
||||
|
||||
# API Server configuration
|
||||
api:
|
||||
replicaCount: 1
|
||||
image:
|
||||
repository: langgenius/dify-api
|
||||
tag: 0.6.9
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 5001
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
env:
|
||||
- name: MODE
|
||||
value: api
|
||||
- name: SECRET_KEY
|
||||
value: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiBacb72
|
||||
- name: LOG_LEVEL
|
||||
value: INFO
|
||||
|
||||
# Web Frontend configuration
|
||||
web:
|
||||
replicaCount: 1
|
||||
image:
|
||||
repository: langgenius/dify-web
|
||||
tag: 0.6.9
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 3000
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
env:
|
||||
- name: CONSOLE_API_URL
|
||||
value: http://dify-api:5001
|
||||
- name: APP_API_URL
|
||||
value: http://dify-api:5001
|
||||
|
||||
# Worker configuration
|
||||
worker:
|
||||
replicaCount: 1
|
||||
image:
|
||||
repository: langgenius/dify-api
|
||||
tag: 0.6.9
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
env:
|
||||
- name: MODE
|
||||
value: worker
|
||||
|
||||
# PostgreSQL configuration (built-in)
|
||||
postgresql:
|
||||
enabled: true
|
||||
auth:
|
||||
username: dify
|
||||
password: dify
|
||||
database: dify
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Redis configuration (built-in)
|
||||
redis:
|
||||
enabled: true
|
||||
auth:
|
||||
enabled: false
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
|
||||
# Weaviate vector database (built-in)
|
||||
weaviate:
|
||||
enabled: true
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
|
||||
# Ingress configuration (disabled by default)
|
||||
ingress:
|
||||
enabled: false
|
||||
15
src/docker-registry/Makefile
Normal file
15
src/docker-registry/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= registry
|
||||
HELM_APPLICATION_NAME ?= docker-registry
|
||||
HELM_NAMESPACE ?= registry
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= twuni
|
||||
HELM_REPO_URL ?= https://helm.twun.io
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
78
src/docker-registry/README.md
Normal file
78
src/docker-registry/README.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Docker Registry
|
||||
|
||||
## Introduction
|
||||
|
||||
Docker Registry is a stateless, highly scalable server-side application that stores and lets you distribute Docker images. It is open-source, licensed under the Apache-2.0 license.
|
||||
|
||||
This Helm chart deploys a private Docker Registry on Kubernetes, allowing you to store and manage your container images within your own infrastructure.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Docker Registry, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation, you can push and pull images from the registry:
|
||||
|
||||
```bash
|
||||
# Port forward to access registry locally
|
||||
kubectl port-forward svc/registry -n registry 5000:5000
|
||||
|
||||
# Tag an image for your private registry
|
||||
docker tag my-image localhost:5000/my-image
|
||||
|
||||
# Push to your private registry
|
||||
docker push localhost:5000/my-image
|
||||
|
||||
# Pull from your private registry
|
||||
docker pull localhost:5000/my-image
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- In-memory storage (for testing only)
|
||||
- No authentication
|
||||
- Service type: ClusterIP
|
||||
|
||||
## Storage Options
|
||||
|
||||
For production use, configure persistent storage:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
storageClass: standard
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
Enable basic authentication:
|
||||
|
||||
```yaml
|
||||
secrets:
|
||||
htpasswd: |
|
||||
admin:$2y$05$...
|
||||
```
|
||||
|
||||
## TLS
|
||||
|
||||
Enable TLS for secure communication:
|
||||
|
||||
```yaml
|
||||
tlsSecretName: registry-tls
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Docker Registry:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
78
src/docker-registry/README.zh.md
Normal file
78
src/docker-registry/README.zh.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Docker Registry
|
||||
|
||||
## 简介
|
||||
|
||||
Docker Registry 是一个无状态、高度可扩展的服务器端应用程序,用于存储和分发 Docker 镜像。它是开源的,采用 Apache-2.0 许可证。
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署一个私有 Docker Registry,允许您在自己的基础设施中存储和管理容器镜像。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Docker Registry:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后,您可以向 registry 推送和拉取镜像:
|
||||
|
||||
```bash
|
||||
# 端口转发以本地访问 registry
|
||||
kubectl port-forward svc/registry -n registry 5000:5000
|
||||
|
||||
# 为私有 registry 标记镜像
|
||||
docker tag my-image localhost:5000/my-image
|
||||
|
||||
# 推送到私有 registry
|
||||
docker push localhost:5000/my-image
|
||||
|
||||
# 从私有 registry 拉取
|
||||
docker pull localhost:5000/my-image
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 内存存储(仅用于测试)
|
||||
- 无认证
|
||||
- 服务类型:ClusterIP
|
||||
|
||||
## 存储选项
|
||||
|
||||
生产使用请配置持久存储:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
storageClass: standard
|
||||
```
|
||||
|
||||
## 认证
|
||||
|
||||
启用基本认证:
|
||||
|
||||
```yaml
|
||||
secrets:
|
||||
htpasswd: |
|
||||
admin:$2y$05$...
|
||||
```
|
||||
|
||||
## TLS
|
||||
|
||||
启用 TLS 进行安全通信:
|
||||
|
||||
```yaml
|
||||
tlsSecretName: registry-tls
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Docker Registry:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
43
src/docker-registry/values.yaml
Normal file
43
src/docker-registry/values.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
# Docker Registry Configuration
|
||||
# https://github.com/twuni/docker-registry.helm
|
||||
|
||||
# Registry image
|
||||
image:
|
||||
repository: registry
|
||||
tag: 2.8.3
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 5000
|
||||
|
||||
# Persistence (disabled by default - use S3 or other storage for production)
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 10Gi
|
||||
|
||||
# Storage configuration
|
||||
storage: memory
|
||||
|
||||
# Authentication (disabled by default)
|
||||
secrets:
|
||||
htpasswd: ''
|
||||
|
||||
# TLS configuration (disabled by default)
|
||||
tlsSecretName: ''
|
||||
|
||||
# Resource configuration
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Replicas
|
||||
replicaCount: 1
|
||||
|
||||
# Ingress configuration (disabled by default)
|
||||
ingress:
|
||||
enabled: false
|
||||
13
src/inngest/Makefile
Normal file
13
src/inngest/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
HELM_RELEASE_NAME ?= inngest
|
||||
HELM_APPLICATION_NAME ?= inngest
|
||||
HELM_NAMESPACE ?= inngest
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?= ghcr.io
|
||||
HELM_OCI_NAMESPACE ?= inngest/helm-charts
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_CHART_REPO ?= oci://$(HELM_OCI_REGISTRY)/$(HELM_OCI_NAMESPACE)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
83
src/inngest/README.md
Normal file
83
src/inngest/README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Inngest
|
||||
|
||||
## Introduction
|
||||
|
||||
Inngest is an open-source, event-driven job queue and workflow engine. It allows you to build reliable background jobs, scheduled tasks, and event-driven workflows using a declarative approach.
|
||||
|
||||
This Helm chart deploys the Inngest server on Kubernetes, enabling you to self-host your event processing infrastructure.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Inngest, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if Inngest server is running
|
||||
kubectl get pods -n inngest
|
||||
|
||||
# Port forward to access the dashboard
|
||||
kubectl port-forward svc/inngest -n inngest 8288:8288
|
||||
```
|
||||
|
||||
Then open <http://localhost:8288> in your browser to access the Inngest dashboard.
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- Inngest server with event processing capabilities
|
||||
- PostgreSQL for data persistence (when enabled)
|
||||
- Redis for event streaming (when enabled)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Inngest requires:
|
||||
|
||||
- PostgreSQL database for persistence
|
||||
- Redis for event streaming (optional but recommended)
|
||||
|
||||
Configure these in your values.yaml:
|
||||
|
||||
```yaml
|
||||
postgres:
|
||||
host: your-postgres-host
|
||||
port: 5432
|
||||
database: inngest
|
||||
user: inngest
|
||||
password: your-password
|
||||
|
||||
redis:
|
||||
host: your-redis-host
|
||||
port: 6379
|
||||
```
|
||||
|
||||
## Event Processing
|
||||
|
||||
Inngest processes events from your applications:
|
||||
|
||||
```javascript
|
||||
// Example: Sending events from your application
|
||||
import { Inngest } from 'inngest'
|
||||
|
||||
const inngest = new Inngest({ id: 'my-app' })
|
||||
|
||||
await inngest.send({
|
||||
name: 'user.signup',
|
||||
data: { userId: '123' }
|
||||
})
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Inngest:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
83
src/inngest/README.zh.md
Normal file
83
src/inngest/README.zh.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Inngest
|
||||
|
||||
## 简介
|
||||
|
||||
Inngest 是一个开源的、事件驱动的作业队列和工作流引擎。它允许您使用声明式方法构建可靠的后台作业、计划任务和事件驱动工作流。
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署 Inngest 服务器,使您能够自托管事件处理基础设施。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Inngest:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 Inngest 服务器是否运行
|
||||
kubectl get pods -n inngest
|
||||
|
||||
# 端口转发以访问仪表板
|
||||
kubectl port-forward svc/inngest -n inngest 8288:8288
|
||||
```
|
||||
|
||||
然后在浏览器中打开 <http://localhost:8288> 访问 Inngest 仪表板。
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 具有事件处理能力的 Inngest 服务器
|
||||
- PostgreSQL 用于数据持久化(启用时)
|
||||
- Redis 用于事件流(启用时)
|
||||
|
||||
## 先决条件
|
||||
|
||||
Inngest 需要:
|
||||
|
||||
- PostgreSQL 数据库用于持久化
|
||||
- Redis 用于事件流(可选但推荐)
|
||||
|
||||
在您的 values.yaml 中配置这些:
|
||||
|
||||
```yaml
|
||||
postgres:
|
||||
host: your-postgres-host
|
||||
port: 5432
|
||||
database: inngest
|
||||
user: inngest
|
||||
password: your-password
|
||||
|
||||
redis:
|
||||
host: your-redis-host
|
||||
port: 6379
|
||||
```
|
||||
|
||||
## 事件处理
|
||||
|
||||
Inngest 处理来自您应用程序的事件:
|
||||
|
||||
```javascript
|
||||
// 示例:从您的应用程序发送事件
|
||||
import { Inngest } from 'inngest'
|
||||
|
||||
const inngest = new Inngest({ id: 'my-app' })
|
||||
|
||||
await inngest.send({
|
||||
name: 'user.signup',
|
||||
data: { userId: '123' }
|
||||
})
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Inngest:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
49
src/inngest/values.yaml
Normal file
49
src/inngest/values.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
# Inngest Configuration
|
||||
# https://github.com/inngest/inngest-helm
|
||||
|
||||
# Server configuration
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: inngest/inngest
|
||||
tag: latest
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8288
|
||||
|
||||
# PostgreSQL configuration (required)
|
||||
postgres:
|
||||
enabled: false
|
||||
host: ''
|
||||
port: 5432
|
||||
database: inngest
|
||||
user: inngest
|
||||
password: ''
|
||||
|
||||
# Redis configuration (optional but recommended)
|
||||
redis:
|
||||
enabled: false
|
||||
host: ''
|
||||
port: 6379
|
||||
|
||||
# Event API configuration
|
||||
eventApi:
|
||||
enabled: true
|
||||
|
||||
# Dashboard configuration
|
||||
dashboard:
|
||||
enabled: true
|
||||
|
||||
# Ingress configuration (disabled by default)
|
||||
ingress:
|
||||
enabled: false
|
||||
13
src/kgateway/Makefile
Normal file
13
src/kgateway/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
HELM_RELEASE_NAME ?= kgateway
|
||||
HELM_APPLICATION_NAME ?= kgateway
|
||||
HELM_NAMESPACE ?= kgateway-system
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?= cr.kgateway.dev
|
||||
HELM_OCI_NAMESPACE ?= kgateway-dev/charts
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_CHART_REPO ?= oci://$(HELM_OCI_REGISTRY)/$(HELM_OCI_NAMESPACE)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
59
src/kgateway/README.md
Normal file
59
src/kgateway/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# kgateway
|
||||
|
||||
## Introduction
|
||||
|
||||
kgateway is a cloud-native API gateway built on Envoy Proxy. It provides a Kubernetes-native way to manage traffic, secure APIs, and observe your services. Formerly known as Gloo Gateway, kgateway offers advanced routing capabilities, traffic management, and extensibility through WebAssembly (Wasm) filters.
|
||||
|
||||
## Installation
|
||||
|
||||
To install kgateway, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation, you can configure kgateway using Kubernetes Gateway API resources:
|
||||
|
||||
```bash
|
||||
# Check if kgateway pods are running
|
||||
kubectl get pods -n kgateway-system
|
||||
|
||||
# View kgateway services
|
||||
kubectl get svc -n kgateway-system
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- Gateway controller for managing Gateway API resources
|
||||
- Envoy proxy deployment for traffic handling
|
||||
- Control plane components for configuration management
|
||||
|
||||
## Gateway API
|
||||
|
||||
kgateway supports the Kubernetes Gateway API standard. You can create Gateway and HTTPRoute resources to configure routing:
|
||||
|
||||
```yaml
|
||||
apiVersion: gateway.networking.k8s.io/v1
|
||||
kind: Gateway
|
||||
metadata:
|
||||
name: my-gateway
|
||||
namespace: kgateway-system
|
||||
spec:
|
||||
gatewayClassName: kgateway
|
||||
listeners:
|
||||
- name: http
|
||||
protocol: HTTP
|
||||
port: 80
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall kgateway:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
59
src/kgateway/README.zh.md
Normal file
59
src/kgateway/README.zh.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# kgateway
|
||||
|
||||
## 简介
|
||||
|
||||
kgateway 是一个基于 Envoy Proxy 的云原生 API 网关。它提供了一种 Kubernetes 原生的方式来管理流量、保护 API 和观测服务。kgateway 前身为 Gloo Gateway,提供高级路由功能、流量管理和通过 WebAssembly (Wasm) 过滤器的可扩展性。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 kgateway:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后,您可以使用 Kubernetes Gateway API 资源来配置 kgateway:
|
||||
|
||||
```bash
|
||||
# 检查 kgateway pod 是否运行
|
||||
kubectl get pods -n kgateway-system
|
||||
|
||||
# 查看 kgateway 服务
|
||||
kubectl get svc -n kgateway-system
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 用于管理 Gateway API 资源的网关控制器
|
||||
- 用于流量处理的 Envoy 代理部署
|
||||
- 用于配置管理的控制平面组件
|
||||
|
||||
## Gateway API
|
||||
|
||||
kgateway 支持 Kubernetes Gateway API 标准。您可以创建 Gateway 和 HTTPRoute 资源来配置路由:
|
||||
|
||||
```yaml
|
||||
apiVersion: gateway.networking.k8s.io/v1
|
||||
kind: Gateway
|
||||
metadata:
|
||||
name: my-gateway
|
||||
namespace: kgateway-system
|
||||
spec:
|
||||
gatewayClassName: kgateway
|
||||
listeners:
|
||||
- name: http
|
||||
protocol: HTTP
|
||||
port: 80
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 kgateway:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
45
src/kgateway/values.yaml
Normal file
45
src/kgateway/values.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
# kgateway Configuration
|
||||
# https://github.com/kgateway-dev/kgateway
|
||||
|
||||
# Controller configuration
|
||||
controller:
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
|
||||
# Envoy gateway configuration
|
||||
gateway:
|
||||
replicas: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
service:
|
||||
type: LoadBalancer
|
||||
|
||||
# Discovery configuration
|
||||
discovery:
|
||||
enabled: true
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Observability configuration
|
||||
observability:
|
||||
enabled: true
|
||||
|
||||
# GatewayClass configuration
|
||||
gatewayClass:
|
||||
name: kgateway
|
||||
15
src/logstash/Makefile
Normal file
15
src/logstash/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= logstash
|
||||
HELM_APPLICATION_NAME ?= logstash
|
||||
HELM_NAMESPACE ?= logstash
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= elastic
|
||||
HELM_REPO_URL ?= https://helm.elastic.co
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
92
src/logstash/README.md
Normal file
92
src/logstash/README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Logstash
|
||||
|
||||
## Introduction
|
||||
|
||||
Logstash is an open-source data processing pipeline that ingests data from multiple sources, transforms it, and then sends it to your favorite "stash" (like Elasticsearch). It is part of the Elastic Stack (ELK Stack) and is commonly used for log aggregation and analysis.
|
||||
|
||||
This Helm chart deploys Logstash on Kubernetes for processing and forwarding logs.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Logstash, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if Logstash is running
|
||||
kubectl get pods -n logstash
|
||||
|
||||
# View Logstash logs
|
||||
kubectl logs -f -n logstash -l app=logstash
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- Logstash pipeline with basic input/output configuration
|
||||
- Persistent volume for data persistence
|
||||
- Resource limits for stable operation
|
||||
|
||||
## Pipeline Configuration
|
||||
|
||||
Configure your Logstash pipeline in `values.yaml`:
|
||||
|
||||
```yaml
|
||||
logstashPipeline:
|
||||
logstash.conf: |
|
||||
input {
|
||||
beats {
|
||||
port => 5044
|
||||
}
|
||||
}
|
||||
filter {
|
||||
# Add your filters here
|
||||
}
|
||||
output {
|
||||
elasticsearch {
|
||||
hosts => ["http://elasticsearch:9200"]
|
||||
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Inputs and Outputs
|
||||
|
||||
Common input plugins:
|
||||
|
||||
- `beats`: Receive data from Beats shippers
|
||||
- `tcp`/`udp`: Receive data over network
|
||||
- `http`: Receive data via HTTP
|
||||
- `kafka`: Consume from Kafka topics
|
||||
|
||||
Common output plugins:
|
||||
|
||||
- `elasticsearch`: Send to Elasticsearch
|
||||
- `kafka`: Produce to Kafka topics
|
||||
- `s3`: Write to AWS S3
|
||||
- `stdout`: Output to console (for debugging)
|
||||
|
||||
## Persistence
|
||||
|
||||
Enable persistent storage for queue data:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Logstash:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
92
src/logstash/README.zh.md
Normal file
92
src/logstash/README.zh.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Logstash
|
||||
|
||||
## 简介
|
||||
|
||||
Logstash 是一个开源数据处理管道,可从多个来源摄取数据,对其进行转换,然后将其发送到您喜欢的"存储"(如 Elasticsearch)。它是 Elastic Stack(ELK Stack)的一部分,通常用于日志聚合和分析。
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署 Logstash,用于处理和转发日志。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Logstash:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 Logstash 是否运行
|
||||
kubectl get pods -n logstash
|
||||
|
||||
# 查看 Logstash 日志
|
||||
kubectl logs -f -n logstash -l app=logstash
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 具有基本输入/输出配置的 Logstash 管道
|
||||
- 用于数据持久化的持久卷
|
||||
- 稳定操作的资源限制
|
||||
|
||||
## 管道配置
|
||||
|
||||
在 `values.yaml` 中配置您的 Logstash 管道:
|
||||
|
||||
```yaml
|
||||
logstashPipeline:
|
||||
logstash.conf: |
|
||||
input {
|
||||
beats {
|
||||
port => 5044
|
||||
}
|
||||
}
|
||||
filter {
|
||||
# 在此处添加您的过滤器
|
||||
}
|
||||
output {
|
||||
elasticsearch {
|
||||
hosts => ["http://elasticsearch:9200"]
|
||||
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 输入和输出
|
||||
|
||||
常用输入插件:
|
||||
|
||||
- `beats`: 从 Beats 接收数据
|
||||
- `tcp`/`udp`: 通过网络接收数据
|
||||
- `http`: 通过 HTTP 接收数据
|
||||
- `kafka`: 从 Kafka 主题消费
|
||||
|
||||
常用输出插件:
|
||||
|
||||
- `elasticsearch`: 发送到 Elasticsearch
|
||||
- `kafka`: 生产到 Kafka 主题
|
||||
- `s3`: 写入 AWS S3
|
||||
- `stdout`: 输出到控制台(用于调试)
|
||||
|
||||
## 持久化
|
||||
|
||||
为队列数据启用持久存储:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Logstash:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
55
src/logstash/values.yaml
Normal file
55
src/logstash/values.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
# Logstash Configuration
|
||||
# https://github.com/elastic/helm-charts
|
||||
|
||||
# Logstash image
|
||||
image: docker.elastic.co/logstash/logstash
|
||||
imageTag: 8.11.0
|
||||
|
||||
# Replicas
|
||||
replicas: 1
|
||||
|
||||
# Resource configuration
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 2Gi
|
||||
|
||||
# Logstash Java options
|
||||
logstashJavaOpts: -Xmx1g -Xms1g
|
||||
|
||||
# Pipeline configuration
|
||||
logstashPipeline:
|
||||
logstash.conf: |
|
||||
input {
|
||||
beats {
|
||||
port => 5044
|
||||
}
|
||||
}
|
||||
output {
|
||||
stdout {
|
||||
codec => rubydebug
|
||||
}
|
||||
}
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: beats
|
||||
port: 5044
|
||||
protocol: TCP
|
||||
targetPort: 5044
|
||||
|
||||
# Persistence (disabled by default)
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 10Gi
|
||||
|
||||
# Volume mounts
|
||||
volumeMounts: []
|
||||
|
||||
# Volumes
|
||||
volumes: []
|
||||
15
src/nebulagraph/Makefile
Normal file
15
src/nebulagraph/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= nebula
|
||||
HELM_APPLICATION_NAME ?= nebula-cluster
|
||||
HELM_NAMESPACE ?= nebula
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= nebula-operator
|
||||
HELM_REPO_URL ?= https://vesoft-inc.github.io/nebula-operator/charts
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
77
src/nebulagraph/README.md
Normal file
77
src/nebulagraph/README.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# NebulaGraph
|
||||
|
||||
## Introduction
|
||||
|
||||
NebulaGraph is an open-source distributed graph database built for super large-scale graphs with milliseconds of latency. It delivers high performance, scalability, and availability for storing and processing graph data.
|
||||
|
||||
This Helm chart deploys NebulaGraph cluster using the NebulaGraph Operator on Kubernetes.
|
||||
|
||||
## Installation
|
||||
|
||||
To install NebulaGraph, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
NebulaGraph Operator must be installed first:
|
||||
|
||||
```bash
|
||||
helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
|
||||
helm install nebula-operator nebula-operator/nebula-operator --namespace nebula-operator --create-namespace
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if NebulaGraph cluster is running
|
||||
kubectl get pods -n nebula
|
||||
|
||||
# Access Graphd service
|
||||
kubectl port-forward svc/nebula-graphd -n nebula 9669:9669
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- NebulaGraph cluster with 3 graphd, 3 metad, and 3 storaged nodes
|
||||
- Persistent storage for data
|
||||
- Default port configurations
|
||||
|
||||
## Components
|
||||
|
||||
- **Graphd**: Query engine for graph processing
|
||||
- **Metad**: Metadata management
|
||||
- **Storaged**: Storage engine for graph data
|
||||
|
||||
## Connecting to NebulaGraph
|
||||
|
||||
Use Nebula Console to connect:
|
||||
|
||||
```bash
|
||||
# Install nebula-console
|
||||
# Connect to the cluster
|
||||
./nebula-console -addr 127.0.0.1 -port 9669 -u root -p nebula
|
||||
```
|
||||
|
||||
## Graph Data Model
|
||||
|
||||
NebulaGraph uses:
|
||||
|
||||
- **Vertices**: Represent entities
|
||||
- **Edges**: Represent relationships
|
||||
- **Tags**: Define vertex types
|
||||
- **Edge Types**: Define relationship types
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall NebulaGraph:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
77
src/nebulagraph/README.zh.md
Normal file
77
src/nebulagraph/README.zh.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# NebulaGraph
|
||||
|
||||
## 简介
|
||||
|
||||
NebulaGraph 是一个开源的分布式图数据库,专为超大规模图数据而设计,具有毫秒级延迟。它为存储和处理图数据提供高性能、可扩展性和可用性。
|
||||
|
||||
此 Helm Chart 使用 NebulaGraph Operator 在 Kubernetes 上部署 NebulaGraph 集群。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 NebulaGraph:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 先决条件
|
||||
|
||||
必须首先安装 NebulaGraph Operator:
|
||||
|
||||
```bash
|
||||
helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
|
||||
helm install nebula-operator nebula-operator/nebula-operator --namespace nebula-operator --create-namespace
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 NebulaGraph 集群是否运行
|
||||
kubectl get pods -n nebula
|
||||
|
||||
# 访问 Graphd 服务
|
||||
kubectl port-forward svc/nebula-graphd -n nebula 9669:9669
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- NebulaGraph 集群,包含 3 个 graphd、3 个 metad 和 3 个 storaged 节点
|
||||
- 数据持久化存储
|
||||
- 默认端口配置
|
||||
|
||||
## 组件
|
||||
|
||||
- **Graphd**: 图处理查询引擎
|
||||
- **Metad**: 元数据管理
|
||||
- **Storaged**: 图数据存储引擎
|
||||
|
||||
## 连接 NebulaGraph
|
||||
|
||||
使用 Nebula Console 连接:
|
||||
|
||||
```bash
|
||||
# 安装 nebula-console
|
||||
# 连接到集群
|
||||
./nebula-console -addr 127.0.0.1 -port 9669 -u root -p nebula
|
||||
```
|
||||
|
||||
## 图数据模型
|
||||
|
||||
NebulaGraph 使用:
|
||||
|
||||
- **顶点**: 表示实体
|
||||
- **边**: 表示关系
|
||||
- **标签**: 定义顶点类型
|
||||
- **边类型**: 定义关系类型
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 NebulaGraph:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
53
src/nebulagraph/values.yaml
Normal file
53
src/nebulagraph/values.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
# NebulaGraph Cluster Configuration
|
||||
# https://github.com/vesoft-inc/nebula-operator
|
||||
|
||||
# Cluster name
|
||||
nameOverride: nebula
|
||||
|
||||
# NebulaGraph version
|
||||
nebula:
|
||||
version: v3.6.0
|
||||
|
||||
# Graphd configuration (query engine)
|
||||
graphd:
|
||||
replicas: 3
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
service:
|
||||
type: ClusterIP
|
||||
|
||||
# Metad configuration (metadata service)
|
||||
metad:
|
||||
replicas: 3
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
storage:
|
||||
size: 10Gi
|
||||
|
||||
# Storaged configuration (storage engine)
|
||||
storaged:
|
||||
replicas: 3
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
storage:
|
||||
size: 50Gi
|
||||
|
||||
# Reference to existing nebula-operator
|
||||
operator:
|
||||
name: nebula-operator
|
||||
namespace: nebula-operator
|
||||
13
src/node-exporter/Makefile
Normal file
13
src/node-exporter/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
HELM_RELEASE_NAME ?= node-exporter
|
||||
HELM_APPLICATION_NAME ?= prometheus-node-exporter
|
||||
HELM_NAMESPACE ?= monitoring
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?= ghcr.io
|
||||
HELM_OCI_NAMESPACE ?= prometheus-community/charts
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_CHART_REPO ?= oci://$(HELM_OCI_REGISTRY)/$(HELM_OCI_NAMESPACE)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
81
src/node-exporter/README.md
Normal file
81
src/node-exporter/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Prometheus Node Exporter
|
||||
|
||||
## Introduction
|
||||
|
||||
Prometheus Node Exporter is a Prometheus exporter for hardware and OS metrics exposed by *NIX kernels. It collects system-level metrics such as CPU, memory, disk, and network usage from Linux/Unix systems.
|
||||
|
||||
This Helm chart deploys Node Exporter as a DaemonSet on Kubernetes, ensuring that one instance runs on each node to collect host-level metrics.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Node Exporter, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if Node Exporter pods are running on all nodes
|
||||
kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus-node-exporter
|
||||
|
||||
# View metrics
|
||||
curl http://<node-ip>:9100/metrics
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- DaemonSet deployment (one pod per node)
|
||||
- Host network access for system metrics
|
||||
- Host PID access for process metrics
|
||||
- Default port 9100 for metrics endpoint
|
||||
|
||||
## Metrics
|
||||
|
||||
Node Exporter exposes metrics at `:9100/metrics` including:
|
||||
|
||||
- **node_cpu_seconds_total**: CPU usage statistics
|
||||
- **node_memory_MemAvailable_bytes**: Memory availability
|
||||
- **node_filesystem_avail_bytes**: Filesystem availability
|
||||
- **node_network_receive_bytes_total**: Network receive statistics
|
||||
- **node_disk_io_time_seconds_total**: Disk I/O statistics
|
||||
|
||||
## Prometheus Integration
|
||||
|
||||
To scrape metrics with Prometheus, add this job configuration:
|
||||
|
||||
```yaml
|
||||
scrape_configs:
|
||||
- job_name: node-exporter
|
||||
kubernetes_sd_configs:
|
||||
- role: pod
|
||||
namespaces:
|
||||
names:
|
||||
- monitoring
|
||||
relabel_configs:
|
||||
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
|
||||
action: keep
|
||||
regex: prometheus-node-exporter
|
||||
- source_labels: [__meta_kubernetes_pod_ip]
|
||||
action: replace
|
||||
target_label: __address__
|
||||
regex: ([^:]+)(?::\d+)?;(\d+)
|
||||
replacement: $1:9100
|
||||
```
|
||||
|
||||
## RBAC
|
||||
|
||||
Node Exporter requires appropriate permissions to access host-level metrics. The Helm chart creates the necessary ServiceAccount, ClusterRole, and ClusterRoleBinding.
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Node Exporter:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
81
src/node-exporter/README.zh.md
Normal file
81
src/node-exporter/README.zh.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Prometheus Node Exporter
|
||||
|
||||
## 简介
|
||||
|
||||
Prometheus Node Exporter 是一个用于 *NIX 内核暴露的硬件和操作系统指标的 Prometheus 导出器。它从 Linux/Unix 系统收集系统级指标,如 CPU、内存、磁盘和网络使用情况。
|
||||
|
||||
此 Helm Chart 将 Node Exporter 作为 DaemonSet 部署在 Kubernetes 上,确保在每个节点上运行一个实例来收集主机级指标。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Node Exporter:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 Node Exporter pod 是否在所有节点上运行
|
||||
kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus-node-exporter
|
||||
|
||||
# 查看指标
|
||||
curl http://<node-ip>:9100/metrics
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- DaemonSet 部署(每个节点一个 pod)
|
||||
- 用于系统指标的主机网络访问
|
||||
- 用于进程指标的主机 PID 访问
|
||||
- 指标端点的默认端口 9100
|
||||
|
||||
## 指标
|
||||
|
||||
Node Exporter 在 `:9100/metrics` 暴露的指标包括:
|
||||
|
||||
- **node_cpu_seconds_total**: CPU 使用统计
|
||||
- **node_memory_MemAvailable_bytes**: 内存可用性
|
||||
- **node_filesystem_avail_bytes**: 文件系统可用性
|
||||
- **node_network_receive_bytes_total**: 网络接收统计
|
||||
- **node_disk_io_time_seconds_total**: 磁盘 I/O 统计
|
||||
|
||||
## Prometheus 集成
|
||||
|
||||
要使用 Prometheus 抓取指标,请添加此作业配置:
|
||||
|
||||
```yaml
|
||||
scrape_configs:
|
||||
- job_name: node-exporter
|
||||
kubernetes_sd_configs:
|
||||
- role: pod
|
||||
namespaces:
|
||||
names:
|
||||
- monitoring
|
||||
relabel_configs:
|
||||
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
|
||||
action: keep
|
||||
regex: prometheus-node-exporter
|
||||
- source_labels: [__meta_kubernetes_pod_ip]
|
||||
action: replace
|
||||
target_label: __address__
|
||||
regex: ([^:]+)(?::\d+)?;(\d+)
|
||||
replacement: $1:9100
|
||||
```
|
||||
|
||||
## RBAC
|
||||
|
||||
Node Exporter 需要适当的权限来访问主机级指标。Helm Chart 会创建必要的 ServiceAccount、ClusterRole 和 ClusterRoleBinding。
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Node Exporter:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
59
src/node-exporter/values.yaml
Normal file
59
src/node-exporter/values.yaml
Normal file
@@ -0,0 +1,59 @@
|
||||
# Prometheus Node Exporter Configuration
|
||||
# https://github.com/prometheus-community/helm-charts
|
||||
|
||||
# Image configuration
|
||||
image:
|
||||
repository: quay.io/prometheus/node-exporter
|
||||
tag: v1.7.0
|
||||
|
||||
# Run as DaemonSet
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 256Mi
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 9100
|
||||
targetPort: 9100
|
||||
|
||||
# Host networking
|
||||
hostNetwork: true
|
||||
|
||||
# Host PID
|
||||
hostPID: true
|
||||
|
||||
# Security context
|
||||
securityContext:
|
||||
privileged: true
|
||||
|
||||
# RBAC
|
||||
rbac:
|
||||
create: true
|
||||
pspEnabled: false
|
||||
|
||||
# Service account
|
||||
serviceAccount:
|
||||
create: true
|
||||
|
||||
# Pod security policy
|
||||
podSecurityPolicy:
|
||||
enabled: false
|
||||
|
||||
# Prometheus monitoring
|
||||
prometheus:
|
||||
monitor:
|
||||
enabled: false
|
||||
|
||||
# Node selector
|
||||
nodeSelector: {}
|
||||
|
||||
# Tolerations
|
||||
tolerations: []
|
||||
|
||||
# Affinity
|
||||
affinity: {}
|
||||
15
src/rocketmq/Makefile
Normal file
15
src/rocketmq/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= rocketmq
|
||||
HELM_APPLICATION_NAME ?= rocketmq
|
||||
HELM_NAMESPACE ?= rocketmq
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= rocketmq
|
||||
HELM_REPO_URL ?= https://apache.github.io/rocketmq-helm
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
72
src/rocketmq/README.md
Normal file
72
src/rocketmq/README.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Apache RocketMQ
|
||||
|
||||
## Introduction
|
||||
|
||||
Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.
|
||||
|
||||
This Helm chart deploys Apache RocketMQ on Kubernetes, including NameServer, Broker, and Console components.
|
||||
|
||||
## Installation
|
||||
|
||||
To install RocketMQ, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Check if RocketMQ components are running
|
||||
kubectl get pods -n rocketmq
|
||||
|
||||
# Port forward to access NameServer
|
||||
kubectl port-forward svc/rocketmq-nameserver -n rocketmq 9876:9876
|
||||
|
||||
# Port forward to access Console (if enabled)
|
||||
kubectl port-forward svc/rocketmq-console -n rocketmq 8080:8080
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- 2 NameServer replicas for high availability
|
||||
- 1 Broker master with 1 slave (2m-2s sync_flush)
|
||||
- Console for management UI
|
||||
- Persistent storage for message data
|
||||
|
||||
## Components
|
||||
|
||||
- **NameServer**: Service discovery and routing
|
||||
- **Broker**: Message storage and delivery
|
||||
- **Console**: Web UI for management and monitoring
|
||||
|
||||
## Client Connection
|
||||
|
||||
```java
|
||||
Properties props = new Properties();
|
||||
props.setProperty("namesrvAddr", "rocketmq-nameserver.rocketmq:9876");
|
||||
DefaultMQProducer producer = new DefaultMQProducer("TestProducer", props);
|
||||
```
|
||||
|
||||
## Storage
|
||||
|
||||
Configure persistent storage for brokers:
|
||||
|
||||
```yaml
|
||||
broker:
|
||||
storage:
|
||||
size: 50Gi
|
||||
class: standard
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall RocketMQ:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
72
src/rocketmq/README.zh.md
Normal file
72
src/rocketmq/README.zh.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Apache RocketMQ
|
||||
|
||||
## 简介
|
||||
|
||||
Apache RocketMQ 是一个分布式消息和流平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的扩展性。
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署 Apache RocketMQ,包括 NameServer、Broker 和 Console 组件。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 RocketMQ:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 检查 RocketMQ 组件是否运行
|
||||
kubectl get pods -n rocketmq
|
||||
|
||||
# 端口转发以访问 NameServer
|
||||
kubectl port-forward svc/rocketmq-nameserver -n rocketmq 9876:9876
|
||||
|
||||
# 端口转发以访问 Console(如果启用)
|
||||
kubectl port-forward svc/rocketmq-console -n rocketmq 8080:8080
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 2 个 NameServer 副本用于高可用
|
||||
- 1 个 Broker master 和 1 个 slave (2m-2s sync_flush)
|
||||
- 用于管理 UI 的 Console
|
||||
- 消息数据的持久存储
|
||||
|
||||
## 组件
|
||||
|
||||
- **NameServer**: 服务发现和路由
|
||||
- **Broker**: 消息存储和传递
|
||||
- **Console**: 管理和监控的 Web UI
|
||||
|
||||
## 客户端连接
|
||||
|
||||
```java
|
||||
Properties props = new Properties();
|
||||
props.setProperty("namesrvAddr", "rocketmq-nameserver.rocketmq:9876");
|
||||
DefaultMQProducer producer = new DefaultMQProducer("TestProducer", props);
|
||||
```
|
||||
|
||||
## 存储
|
||||
|
||||
为 broker 配置持久存储:
|
||||
|
||||
```yaml
|
||||
broker:
|
||||
storage:
|
||||
size: 50Gi
|
||||
class: standard
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 RocketMQ:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
53
src/rocketmq/values.yaml
Normal file
53
src/rocketmq/values.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
# Apache RocketMQ Configuration
|
||||
# https://github.com/apache/rocketmq-helm
|
||||
|
||||
# NameServer configuration
|
||||
nameserver:
|
||||
replicas: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
|
||||
# Broker configuration
|
||||
broker:
|
||||
size:
|
||||
master: 1
|
||||
replica: 1
|
||||
replicas:
|
||||
master: 1
|
||||
slave: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 2Gi
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 20Gi
|
||||
|
||||
# Console configuration
|
||||
console:
|
||||
enabled: true
|
||||
replicas: 1
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8080
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
nameserver:
|
||||
type: ClusterIP
|
||||
port: 9876
|
||||
broker:
|
||||
type: ClusterIP
|
||||
|
||||
# Image configuration
|
||||
image:
|
||||
repository: apache/rocketmq
|
||||
tag: 5.1.4
|
||||
15
src/verdaccio/Makefile
Normal file
15
src/verdaccio/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
HELM_RELEASE_NAME ?= verdaccio
|
||||
HELM_APPLICATION_NAME ?= verdaccio
|
||||
HELM_NAMESPACE ?= verdaccio
|
||||
HELM_DIR ?= ./helm
|
||||
HELM_CHART_VERSION ?=
|
||||
HELM_VALUES_FILE ?= ./values.yaml
|
||||
HELM_OCI_REGISTRY ?=
|
||||
HELM_OCI_NAMESPACE ?=
|
||||
HELM_OCI_USERNAME ?=
|
||||
HELM_OCI_PASSWORD ?=
|
||||
HELM_REPO_NAME ?= verdaccio
|
||||
HELM_REPO_URL ?= https://charts.verdaccio.org
|
||||
HELM_CHART_REPO ?= $(HELM_REPO_NAME)/$(HELM_APPLICATION_NAME)
|
||||
|
||||
include ../_template/base.mk
|
||||
106
src/verdaccio/README.md
Normal file
106
src/verdaccio/README.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Verdaccio
|
||||
|
||||
## Introduction
|
||||
|
||||
Verdaccio is a lightweight private npm proxy registry built in Node.js. It allows you to have a local npm registry with zero configuration, and provides features such as:
|
||||
|
||||
- Private package hosting
|
||||
- Proxy to npmjs.org (caching)
|
||||
- Local storage for offline access
|
||||
- Plugin support for authentication and storage
|
||||
|
||||
This Helm chart deploys Verdaccio on Kubernetes for hosting private npm packages.
|
||||
|
||||
## Installation
|
||||
|
||||
To install Verdaccio, run:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
After installation:
|
||||
|
||||
```bash
|
||||
# Port forward to access Verdaccio
|
||||
kubectl port-forward svc/verdaccio -n verdaccio 4873:4873
|
||||
```
|
||||
|
||||
Then configure npm to use your private registry:
|
||||
|
||||
```bash
|
||||
# Set registry
|
||||
npm set registry http://localhost:4873
|
||||
|
||||
# Login (if authentication is enabled)
|
||||
npm adduser --registry http://localhost:4873
|
||||
|
||||
# Publish a package
|
||||
npm publish
|
||||
|
||||
# Install packages
|
||||
npm install
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The default configuration includes:
|
||||
|
||||
- Anonymous access for reading packages
|
||||
- Proxy to npmjs.org for packages not found locally
|
||||
- Local file system storage
|
||||
- Basic web interface enabled
|
||||
|
||||
## Storage
|
||||
|
||||
Enable persistent storage for production:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
Enable authentication in config.yaml:
|
||||
|
||||
```yaml
|
||||
auth:
|
||||
htpasswd:
|
||||
file: /verdaccio/conf/htpasswd
|
||||
max_users: 1000
|
||||
```
|
||||
|
||||
## Uplink Configuration
|
||||
|
||||
Configure multiple uplinks for package proxying:
|
||||
|
||||
```yaml
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.npmjs.org/
|
||||
yarn:
|
||||
url: https://registry.yarnpkg.com
|
||||
```
|
||||
|
||||
## Package Access
|
||||
|
||||
Configure package access permissions:
|
||||
|
||||
```yaml
|
||||
packages:
|
||||
'@mycompany/*':
|
||||
access: $authenticated
|
||||
publish: $authenticated
|
||||
```
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall Verdaccio:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
106
src/verdaccio/README.zh.md
Normal file
106
src/verdaccio/README.zh.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Verdaccio
|
||||
|
||||
## 简介
|
||||
|
||||
Verdaccio 是一个用 Node.js 构建的轻量级私有 npm 代理 registry。它允许您拥有零配置的本地 npm registry,并提供以下功能:
|
||||
|
||||
- 私有包托管
|
||||
- 代理到 npmjs.org(缓存)
|
||||
- 本地存储供离线访问
|
||||
- 支持认证和存储插件
|
||||
|
||||
此 Helm Chart 在 Kubernetes 上部署 Verdaccio,用于托管私有 npm 包。
|
||||
|
||||
## 安装
|
||||
|
||||
安装 Verdaccio:
|
||||
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
## 使用
|
||||
|
||||
安装完成后:
|
||||
|
||||
```bash
|
||||
# 端口转发以访问 Verdaccio
|
||||
kubectl port-forward svc/verdaccio -n verdaccio 4873:4873
|
||||
```
|
||||
|
||||
然后配置 npm 以使用您的私有 registry:
|
||||
|
||||
```bash
|
||||
# 设置 registry
|
||||
npm set registry http://localhost:4873
|
||||
|
||||
# 登录(如果启用了认证)
|
||||
npm adduser --registry http://localhost:4873
|
||||
|
||||
# 发布包
|
||||
npm publish
|
||||
|
||||
# 安装包
|
||||
npm install
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
默认配置包括:
|
||||
|
||||
- 匿名访问读取包
|
||||
- 代理到 npmjs.org 获取本地找不到的包
|
||||
- 本地文件系统存储
|
||||
- 启用基本 Web 界面
|
||||
|
||||
## 存储
|
||||
|
||||
为生产环境启用持久存储:
|
||||
|
||||
```yaml
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
```
|
||||
|
||||
## 认证
|
||||
|
||||
在 config.yaml 中启用认证:
|
||||
|
||||
```yaml
|
||||
auth:
|
||||
htpasswd:
|
||||
file: /verdaccio/conf/htpasswd
|
||||
max_users: 1000
|
||||
```
|
||||
|
||||
## 上行链路配置
|
||||
|
||||
配置多个上行链路用于包代理:
|
||||
|
||||
```yaml
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.npmjs.org/
|
||||
yarn:
|
||||
url: https://registry.yarnpkg.com
|
||||
```
|
||||
|
||||
## 包访问
|
||||
|
||||
配置包访问权限:
|
||||
|
||||
```yaml
|
||||
packages:
|
||||
'@mycompany/*':
|
||||
access: $authenticated
|
||||
publish: $authenticated
|
||||
```
|
||||
|
||||
## 卸载
|
||||
|
||||
卸载 Verdaccio:
|
||||
|
||||
```bash
|
||||
make uninstall
|
||||
```
|
||||
67
src/verdaccio/values.yaml
Normal file
67
src/verdaccio/values.yaml
Normal file
@@ -0,0 +1,67 @@
|
||||
# Verdaccio Configuration
|
||||
# https://github.com/verdaccio/charts
|
||||
|
||||
# Image configuration
|
||||
image:
|
||||
repository: verdaccio/verdaccio
|
||||
tag: 5.29
|
||||
|
||||
# Replicas
|
||||
replicaCount: 1
|
||||
|
||||
# Service configuration
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 4873
|
||||
|
||||
# Resource configuration
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
# Persistence configuration
|
||||
persistence:
|
||||
enabled: false
|
||||
size: 10Gi
|
||||
|
||||
# ConfigMap configuration
|
||||
configMap:
|
||||
enabled: true
|
||||
data:
|
||||
config.yaml: |
|
||||
storage: /verdaccio/storage/data
|
||||
web:
|
||||
enable: true
|
||||
title: Verdaccio
|
||||
auth:
|
||||
htpasswd:
|
||||
file: /verdaccio/storage/htpasswd
|
||||
max_users: 1000
|
||||
uplinks:
|
||||
npmjs:
|
||||
url: https://registry.npmjs.org/
|
||||
packages:
|
||||
'@*/*':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
proxy: npmjs
|
||||
'**':
|
||||
access: $all
|
||||
publish: $authenticated
|
||||
proxy: npmjs
|
||||
middlewares:
|
||||
audit:
|
||||
enabled: true
|
||||
logs:
|
||||
- { type: stdout, format: pretty, level: http }
|
||||
max_body_size: 100mb
|
||||
listen:
|
||||
- 0.0.0.0:4873
|
||||
|
||||
# Ingress configuration (disabled by default)
|
||||
ingress:
|
||||
enabled: false
|
||||
Reference in New Issue
Block a user