diff --git a/README.md b/README.md index 87e2d82c..b62cf894 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![](docs/logo/kubero-logo-horizontal.png) +![](https://raw.githubusercontent.com/kubero-dev/docs/refs/heads/main/static/assets/logo/kubero-logo-horizontal.png) --- @@ -10,19 +10,12 @@ Kubero [pronounced: Kube Hero] is a self-hosted PaaS (Platform as a Service) that allows any developer to deploy their application on Kubernetes without specialized knowledge. Kubero follows the principles of 12-factor apps. It is possible to run apps based on existing containers or from source code. -![](docs/screenshots/createapp.gif) +![](https://raw.githubusercontent.com/kubero-dev/docs/refs/heads/main/static/assets/screenshots/createapp.gif) -More [Screenshots](https://docs.kubero.dev/screenshots) and a full video on +More [Screenshots](https://www.kubero.dev/docs/screenshots) and a full video on [YouTube](https://www.youtube.com/watch?v=kmqhddc6UlI) -## How GitOps Works ([DEMO](https://demo.kubero.dev)) -1. Create a pipeline with the phases you need (review, test, stage, production) -2. (optional) Connect the pipeline to your git repository (GitHub, Bitbucket, GiLab, Gitea, Gogs) -3. Configure your apps with cronjobs and addons - -Kubero starts now building your app. Once the build is complete, Kubero will launch the final container and make it accessible via the configured domain. - -## Features +## Features ([DEMO](https://demo.kubero.dev)) - Create unlimited CI/CD pipelines with up to 4 separate **staging environments** for all your applications - Automatically build, start, and cleanup **review-apps** after opening/closing a pull request - Automatic **redeployment** of the app based on a push to a branch or tag @@ -39,24 +32,12 @@ Kubero starts now building your app. Once the build is complete, Kubero will lau - Integrated **metrics and monitoring** - **SSO** with GitHub and Oauth2 -## Supported GIT repositories (hosted and self-hosted) -- Gitea / Forgejo -- Gogs -- Github -- Gitlab -- Bitbucket -## Tested languages/frameworks -Basically *everything* that can be packaged in a single container can be deployed by Kubero. +## Basic Concept +Kubero is Kubernetes native and runs with two containers on any Kubernetes instance (kubero-ui and Operator). All data is stored on your Kubernetes etcd without an extra database. -- GoLang (including Hugo, gin-gonic) -- Python (including Flask) -- JavaScript/NodeJS -- PHP (including Laravel) -- Ruby (including Rails) -- Static HTML -- Rust (including Rocket) -- ... + +![kubero concept overview](https://raw.githubusercontent.com/kubero-dev/docs/refs/heads/main/docs/img/kubero-concept.png) ## Add-ons @@ -78,11 +59,13 @@ Basically *everything* that can be packaged in a single container can be deploye | | Crunchy Postgres Cluster | [Crunchy Data](https://artifacthub.io/packages/olm/community-operators/postgresql) | | | | Redis Cluster | [Opstree](https://artifacthub.io/packages/olm/community-operators/redis-operator) | | | | CockroachDB | [CockroachDB](https://artifacthub.io/packages/olm/community-operators/cockroachdb) | | +| | Clickhouse | [Altinity ](https://artifacthub.io/packages/olm/community-operators/clickhouse) | | + \* Ships with the Kubero Operator -## 125+ Application templates (similar to Heroku Buttons) +## 139+ Application templates (similar to Heroku Buttons) - WordPress - Grafana - Bitwarden @@ -92,12 +75,6 @@ Basically *everything* that can be packaged in a single container can be deploye Check out the full [list here](https://www.kubero.dev/templates/) or submit your own app! [Read here](https://github.com/kubero-dev/kubero/blob/main/services/) how to do it. -## Basic Concept -Kubero is Kubernetes native and runs with two containers on any Kubernetes instance (kubero-ui and Operator). All data is stored on your Kubernetes etcd without an extra database. - - -![](https://raw.githubusercontent.com/kubero-dev/docs/refs/heads/main/static/assets/img/kubero-concept.png) - ## Quickstart **1) Download and unpack the Kubero CLI** (MacOS, Linux, Windows)

@@ -123,8 +100,35 @@ You can bring your own existing cluster or create one with the kubero install on - Linode - Kind (local) + +## Supported GIT repositories (hosted and self-hosted) +- Gitea / Forgejo +- Gogs +- Github +- Gitlab +- Bitbucket + +## Tested languages/frameworks +Basically *everything* that can be packaged in a single container can be deployed by Kubero. + +- GoLang (including Hugo, gin-gonic) +- Python (including Flask) +- JavaScript/NodeJS +- PHP (including Laravel) +- Ruby (including Rails) +- Static HTML +- Rust (including Rocket) +- ... + +## How GitOps Works +1. Create a pipeline with the phases you need (review, test, stage, production) +2. (optional) Connect the pipeline to your git repository (GitHub, Bitbucket, GiLab, Gitea, Gogs) +3. Configure your apps with cronjobs and addons + +Kubero starts now building your app. Once the build is complete, Kubero will launch the final container and make it accessible via the configured domain. + ## Documentation -https://docs.kubero.dev/ +https://www.kubero.dev/docs/quickstart ## Roadmap https://github.com/orgs/kubero-dev/projects/1/views/3 diff --git a/client/public/img/addons/clickhouse.svg b/client/public/img/addons/clickhouse.svg new file mode 100644 index 00000000..689aca37 --- /dev/null +++ b/client/public/img/addons/clickhouse.svg @@ -0,0 +1 @@ +ClickHouse \ No newline at end of file diff --git a/client/public/img/icons/hexagon1-empty-bold-tp.svg b/client/public/img/icons/hexagon1-empty-bold-tp.svg new file mode 100644 index 00000000..e62613d1 --- /dev/null +++ b/client/public/img/icons/hexagon1-empty-bold-tp.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + diff --git a/client/public/img/icons/hexagon1-empty-bold.svg b/client/public/img/icons/hexagon1-empty-bold.svg new file mode 100644 index 00000000..aa9c17ac --- /dev/null +++ b/client/public/img/icons/hexagon1-empty-bold.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/client/public/img/icons/hexagon1.svg b/client/public/img/icons/hexagon1.svg new file mode 100644 index 00000000..a4735f80 --- /dev/null +++ b/client/public/img/icons/hexagon1.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/client/public/img/icons/hexagon3-empty-bold-tp.svg b/client/public/img/icons/hexagon3-empty-bold-tp.svg new file mode 100644 index 00000000..fb179f1b --- /dev/null +++ b/client/public/img/icons/hexagon3-empty-bold-tp.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/public/img/icons/hexagon3-empty-bold.svg b/client/public/img/icons/hexagon3-empty-bold.svg new file mode 100644 index 00000000..151dc7fc --- /dev/null +++ b/client/public/img/icons/hexagon3-empty-bold.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/client/public/img/icons/hexagon3-empty.svg b/client/public/img/icons/hexagon3-empty.svg new file mode 100644 index 00000000..88607412 --- /dev/null +++ b/client/public/img/icons/hexagon3-empty.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/client/public/img/icons/hexagon3.svg b/client/public/img/icons/hexagon3.svg new file mode 100644 index 00000000..b4cfc1a0 --- /dev/null +++ b/client/public/img/icons/hexagon3.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/client/src/components/addons/index.vue b/client/src/components/addons/index.vue index 5e72b7d4..755f0824 100644 --- a/client/src/components/addons/index.vue +++ b/client/src/components/addons/index.vue @@ -49,6 +49,7 @@ style="top: -50px;" color="primary" dark + elevation="0" @click="openInstallDialog(addon)" > Installation diff --git a/client/src/components/apps/detail.vue b/client/src/components/apps/detail.vue index f28d4978..c461be0d 100644 --- a/client/src/components/apps/detail.vue +++ b/client/src/components/apps/detail.vue @@ -108,7 +108,7 @@ export default defineComponent({ tab: null, breadcrumbItems: [ { - title: 'dashboard.-', + title: 'Dashboard.Pipelines', disabled: false, to: { name: 'Pipelines', params: {}} }, diff --git a/client/src/components/apps/form.vue b/client/src/components/apps/form.vue index 771bc835..3941d13c 100644 --- a/client/src/components/apps/form.vue +++ b/client/src/components/apps/form.vue @@ -3,13 +3,25 @@ - -

+ + + + +

Create a new App in {{ pipeline }} -

-

+

+

Edit {{ app }} in {{ pipeline }} -

+

in phase {{ phase }}

@@ -70,7 +82,7 @@ @@ -93,7 +105,7 @@ > - + + + Basic Auth + + + + + + + + + + + + + + + + + + + + + mdi-minus + + + + + + + + + + mdi-plus + + + + + + + + Security @@ -717,10 +806,12 @@ - + - ServiceAcccount Annotations + Kubernetes + +

Serviceaccount Annotation

Environment Variables - - - - - - - - - - mdi-minus - - - - + + + + + + + + + mdi-minus + + + + - - - + - - mdi-plus - - - - + + + mdi-plus + + +
+
@@ -1289,7 +1380,7 @@ type GitRepo = { visibility: string, } -type EnvVar = { +export type EnvVar = { name: string, value: string, } @@ -1299,6 +1390,15 @@ type SAAnnotations = { value: string, } +type Phase = { + name: string; + enabled: boolean; + context: string; + domain: string; + defaultTTL?: number; + defaultEnvvars: EnvVar[]; +} + export default defineComponent({ props: { pipeline: { @@ -1347,6 +1447,10 @@ export default defineComponent({ sleepEnabled: false, envFile: [], buildpacks: [] as { text: string, value: Buildpack }[], + basicAuth: { + realm: 'Authentication required', + accounts: [] as { user: string, pass: string }[], + }, buildpack: { run: { readOnlyAppStorage: true, @@ -1418,7 +1522,7 @@ export default defineComponent({ }, } as Buildpack, imageTag: '', - deploymentstrategy: "git", + deploymentstrategy: "docker", buildstrategy: "plain", pipelineData: { domain: '', @@ -1429,7 +1533,8 @@ export default defineComponent({ repository: {} as GitRepo, }, buildstrategy: 'plain', - deploymentstrategy: 'git', + deploymentstrategy: 'docker', + phases: [] as Phase[], }, appname: '', resourceVersion: '', @@ -1741,16 +1846,16 @@ export default defineComponent({ // Open Panel if there is some data to show if (this.envvars.length > 0) { - this.panel.push(5) + this.panel.push(6) } if (Object.keys(this.sAAnnotations).length > 0) { - this.panel.push(4) + this.panel.push(5) } if (this.extraVolumes.length > 0) { - this.panel.push(7) + this.panel.push(8) } if (this.cronjobs.length > 0) { - this.panel.push(8) + this.panel.push(9) } // Backward compatibility older v1.11.1 @@ -1776,7 +1881,27 @@ export default defineComponent({ this.deploymentstrategy = this.pipelineData.deploymentstrategy; if (this.app == 'new') { - this.ingress.hosts[0].host = this.pipelineData.domain; + + // extract domain from pipeline phase + for (let i = 0; i < this.pipelineData.phases.length; i++) { + if (this.pipelineData.phases[i].name == this.phase) { + this.pipelineData.domain = this.pipelineData.phases[i].domain; + this.ingress.hosts[0].host = this.pipelineData.domain; + } + } + + // extract defaultEnvvars from pipeline phase + for (let i = 0; i < this.pipelineData.phases.length; i++) { + if (this.pipelineData.phases[i].name == this.phase) { + this.envvars = this.pipelineData.phases[i].defaultEnvvars; + } + } + + // Open Panel if there is some data to show + if (this.envvars.length > 0) { + this.panel.push(5) + } + if (this.pipelineData.git.repository.admin == true) { this.gitrepo = this.pipelineData.git.repository; @@ -1925,6 +2050,7 @@ export default defineComponent({ this.buildstrategy = response.data.spec.buildstrategy || 'plain'; this.appname = response.data.spec.name; this.sleep = response.data.spec.sleep; + this.basicAuth = response.data.spec.basicAuth || { realm: 'Authentication required', accounts: [] }; this.buildpack = { run: response.data.spec.image.run, build: response.data.spec.image.build, @@ -2047,6 +2173,7 @@ export default defineComponent({ buildpack: this.buildpack, appname: this.appname, sleep: this.sleep, + basicAuth: this.basicAuth, gitrepo: this.gitrepo, branch: this.branch, deploymentstrategy: this.deploymentstrategy, @@ -2146,6 +2273,7 @@ export default defineComponent({ phase: this.phase, appname: this.appname.toLowerCase(), sleep: this.sleep, + basicAuth: this.basicAuth, gitrepo: this.gitrepo, branch: this.branch, deploymentstrategy: this.deploymentstrategy, @@ -2226,6 +2354,19 @@ export default defineComponent({ console.log(error); }); }, + addAuthLine() { + this.basicAuth.accounts.push({ + user: '', + pass: '', + }); + }, + removeAuthLine(index: string) { + for (let i = 0; i < this.basicAuth.accounts.length; i++) { + if (this.basicAuth.accounts[i].user === index) { + this.basicAuth.accounts.splice(i, 1); + } + } + }, addEnvLine() { this.envvars.push({ name: '', diff --git a/client/src/components/pipelines/appcard.vue b/client/src/components/pipelines/appcard.vue index 346a9377..d10e252b 100644 --- a/client/src/components/pipelines/appcard.vue +++ b/client/src/components/pipelines/appcard.vue @@ -17,7 +17,12 @@ > - + + app icon {{ app.name }} diff --git a/client/src/components/pipelines/detail.vue b/client/src/components/pipelines/detail.vue index af9531ab..bb8bee4f 100644 --- a/client/src/components/pipelines/detail.vue +++ b/client/src/components/pipelines/detail.vue @@ -4,11 +4,19 @@ -

{{ pipeline }}

+ -

{{phase.name}}
[{{phase.context}}]

+

{{phase.name}}

+ + + {{phase.context}} + - - - +
+ + +
@@ -180,7 +190,7 @@ export default defineComponent({ data () {return { breadcrumbItems: [ { - title: 'Dashboard.-', + title: 'Dashboard.Pipelines', disabled: false, to: { name: 'Pipelines', params: {}} }, diff --git a/client/src/components/pipelines/form.vue b/client/src/components/pipelines/form.vue index 40bee646..05157a45 100644 --- a/client/src/components/pipelines/form.vue +++ b/client/src/components/pipelines/form.vue @@ -3,7 +3,18 @@ - + + + +

Create a new Pipeline @@ -19,7 +30,7 @@ - - - - - + @@ -66,12 +67,11 @@ md="8" > - mdi-githubGithub - Gitea - mdi-gitlabGitlab - - Gogs - mdi-bitbucketBitbucket + mdi-githubGithub + Gitea + mdi-gitlabGitlab + Gogs + mdi-bitbucketBitbucket @@ -79,21 +79,21 @@ @@ -192,7 +192,7 @@ @@ -263,7 +263,7 @@

External CI/CD

-
You are building your image on a external CI/CD and deploy it by changing the image tag thrue the API
+
You are building your image on a external CI/CD and deploy it by changing the image tag via the API
@@ -273,7 +273,7 @@ - Phases + Environments - +
+ @@ -363,11 +365,118 @@ v-model="phase.context" :items="contextList" label="Cluster" - v-if="phase.enabled" + v-if="phase.enabled && phase.name != 'review'" dense > +
+ + + + + + + + + + + + + + + +
Default Environment Variables
+ + + + + + + + + + + mdi-minus + + + + + + + + + + mdi-plus + + + + +
+
+
@@ -410,6 +519,7 @@ import axios from "axios"; import { defineComponent } from 'vue' import Breadcrumbs from "../breadcrumbs.vue"; +import { EnvVar } from '../apps/form.vue' type Buildpack = { name?: string, @@ -447,7 +557,7 @@ export default defineComponent({ return { breadcrumbItems: [ { - title: 'dashboard.-', + title: 'Dashboard.Pipelines', disabled: false, to: { name: 'Pipelines', params: {}} }, @@ -513,21 +623,33 @@ export default defineComponent({ name: 'review', enabled: false, context: '', + domain: '', + defaultTTL: undefined as number | undefined, + defaultEnvvars: [] as EnvVar[], }, { name: 'test', enabled: false, context: '', + domain: '', + defaultTTL: undefined as number | undefined, + defaultEnvvars: [] as EnvVar[], }, { name: 'stage', enabled: false, context: '', + domain: '', + defaultTTL: undefined as number | undefined, + defaultEnvvars: [] as EnvVar[], }, { name: 'production', enabled: true, context: '', + domain: '', + defaultTTL: undefined as number | undefined, + defaultEnvvars: [] as EnvVar[], }, ], imageRules: [ @@ -766,6 +888,13 @@ export default defineComponent({ this.dockerimage = p.dockerimage; this.deploymentstrategy = p.deploymentstrategy; this.buildpack = p.buildpack; + + // Backward compatibility for < v2.4.6 + for (let i = 0; i < this.phases.length; i++) { + if (this.phases[i].defaultEnvvars === undefined) { + this.phases[i].defaultEnvvars = [] as EnvVar[]; + } + } }).catch(error => { console.log(error); }); @@ -839,6 +968,19 @@ export default defineComponent({ console.log(error); }); }, + addEnvLine(phase: any) { + phase.defaultEnvvars.push({ + name: '', + value: '', + }); + }, + removeEnvLine(phase: any, index: string) { + for (let i = 0; i < phase.defaultEnvvars.length; i++) { + if (phase.defaultEnvvars[i].name === index) { + phase.defaultEnvvars.splice(i, 1); + } + } + }, }, }) diff --git a/client/src/components/pipelines/list.vue b/client/src/components/pipelines/list.vue index 78cb71ad..59572957 100644 --- a/client/src/components/pipelines/list.vue +++ b/client/src/components/pipelines/list.vue @@ -3,9 +3,6 @@ - -

Pipelines

-
- - - - - - - - - {{ item.name }} - - - {{ item.git.repository.description }} - - - - - - {{ phase.name }} - - - - - - - mdi-delete - - - - - mdi-pencil - - - +
+
+ + + Pipeline + + +

+ {{ item.name }} +

+

+ mdi-link + {{ item.git.repository.description }} +

+
+ + + + {{ phase.name }} + + -
- + + + + mdi-delete + + + + + mdi-pencil + + + - - - + + +
@@ -139,6 +134,8 @@ type Pipeline = { repository: { admin: boolean, description: string, + clone_url: string, + ssh_url: string, } }, phases: { @@ -184,7 +181,7 @@ export default defineComponent({ breadcrumbItems: [ { - title: 'Dashboard.-', + title: 'Dashboard.Pipelines', disabled: true, href: '/', } @@ -276,6 +273,10 @@ export default defineComponent({ content: ""; } +.row:hover { + background-color: rgb(var(--v-theme-cardBackground)); +} + .disconnected{ background-image: url('./../../../public/img/icons/disconnected.svg'); background-size: contain; diff --git a/client/src/components/templates/index.vue b/client/src/components/templates/index.vue index 60d5e623..85209100 100644 --- a/client/src/components/templates/index.vue +++ b/client/src/components/templates/index.vue @@ -40,100 +40,110 @@ - - -
- - - -
- - {{ template.name }} - - - - {{ template.stars }} - {{ template.spdx_id }} - +
+ + + +
+ + {{ template.name }} + + + {{ template.stars }} + {{ template.spdx_id }} + + + {{ template.description }} + + - - {{ template.description }} - - -
+ + + + install + +
-
- - details - -
- - - - {{clickedTemplate.description}} - - - - - - - - - - - - Load template - - - + + + {{clickedTemplate.name}} + + + {{clickedTemplate.description}} + + + + + + + + + + + + + + + close + + + Load template + + diff --git a/client/src/plugins/vuetify.ts b/client/src/plugins/vuetify.ts index 3c3297b4..26e9520e 100644 --- a/client/src/plugins/vuetify.ts +++ b/client/src/plugins/vuetify.ts @@ -7,6 +7,7 @@ // Styles import '@mdi/font/css/materialdesignicons.css' import 'vuetify/styles' +import colors from 'vuetify/util/colors' // Composables diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 467588ef..00000000 --- a/docs/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Documentation - -Read the docs at https://docs.kubero.dev \ No newline at end of file diff --git a/docs/img/highlevel.png b/docs/img/highlevel.png deleted file mode 100644 index 5a90064b..00000000 Binary files a/docs/img/highlevel.png and /dev/null differ diff --git a/docs/logo/discord.svg b/docs/logo/discord.svg deleted file mode 100644 index 99d106f6..00000000 --- a/docs/logo/discord.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/logo/kubero-logo-asci.txt b/docs/logo/kubero-logo-asci.txt deleted file mode 100644 index 39a12f68..00000000 --- a/docs/logo/kubero-logo-asci.txt +++ /dev/null @@ -1,12 +0,0 @@ - - -,--. ,--. ,--. -| .' /,--.,--.| |-. ,---. ,--.--. ,---. -| . ' | || || .-. '| .-. :| .--'| .-. | -| |\ \' '' '| `-' |\ --.| | ' '-' ' -`--' '--' `----' `---' `----'`--' `---' - -Fonts: -- https://www.dafont.com/de/shash.font?text=Kubero&psize=l&l[]=10&back=theme -- https://www.dafont.com/de/kaph.font?text=Kubero&psize=l&l[]=10&back=theme -- https://www.dafont.com/de/help-me.font?l[]=10&text=Kubero \ No newline at end of file diff --git a/docs/logo/kubero-logo-hat-square-bold.png b/docs/logo/kubero-logo-hat-square-bold.png deleted file mode 100644 index edab3451..00000000 Binary files a/docs/logo/kubero-logo-hat-square-bold.png and /dev/null differ diff --git a/docs/logo/kubero-logo-hat-square-bold.svg b/docs/logo/kubero-logo-hat-square-bold.svg deleted file mode 100644 index ec960731..00000000 --- a/docs/logo/kubero-logo-hat-square-bold.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - diff --git a/docs/logo/kubero-logo-hat-square-negative-bold.png b/docs/logo/kubero-logo-hat-square-negative-bold.png deleted file mode 100644 index 2d0cf419..00000000 Binary files a/docs/logo/kubero-logo-hat-square-negative-bold.png and /dev/null differ diff --git a/docs/logo/kubero-logo-hat-square-negative-bold.svg b/docs/logo/kubero-logo-hat-square-negative-bold.svg deleted file mode 100644 index 7f46aa02..00000000 --- a/docs/logo/kubero-logo-hat-square-negative-bold.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - diff --git a/docs/logo/kubero-logo-hat-square-negative.png b/docs/logo/kubero-logo-hat-square-negative.png deleted file mode 100644 index aa2b48f8..00000000 Binary files a/docs/logo/kubero-logo-hat-square-negative.png and /dev/null differ diff --git a/docs/logo/kubero-logo-hat-square-negative.svg b/docs/logo/kubero-logo-hat-square-negative.svg deleted file mode 100644 index 26bc136c..00000000 --- a/docs/logo/kubero-logo-hat-square-negative.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - diff --git a/docs/logo/kubero-logo-hat-square.png b/docs/logo/kubero-logo-hat-square.png deleted file mode 100644 index 0b7dd829..00000000 Binary files a/docs/logo/kubero-logo-hat-square.png and /dev/null differ diff --git a/docs/logo/kubero-logo-hat-square.svg b/docs/logo/kubero-logo-hat-square.svg deleted file mode 100644 index c67d55a1..00000000 --- a/docs/logo/kubero-logo-hat-square.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - diff --git a/docs/logo/kubero-logo-hat.png b/docs/logo/kubero-logo-hat.png deleted file mode 100644 index bad668e2..00000000 Binary files a/docs/logo/kubero-logo-hat.png and /dev/null differ diff --git a/docs/logo/kubero-logo-hat.svg b/docs/logo/kubero-logo-hat.svg deleted file mode 100644 index d289ce23..00000000 --- a/docs/logo/kubero-logo-hat.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - diff --git a/docs/logo/kubero-logo-horizontal.png b/docs/logo/kubero-logo-horizontal.png deleted file mode 100644 index b893174f..00000000 Binary files a/docs/logo/kubero-logo-horizontal.png and /dev/null differ diff --git a/docs/logo/kubero-logo-horizontal.svg b/docs/logo/kubero-logo-horizontal.svg deleted file mode 100644 index da0eea4c..00000000 --- a/docs/logo/kubero-logo-horizontal.svg +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - KUBERO - - - - - diff --git a/docs/logo/kubero-logo-vertical.svg b/docs/logo/kubero-logo-vertical.svg deleted file mode 100644 index a9794063..00000000 --- a/docs/logo/kubero-logo-vertical.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - KUBERO - - - - diff --git a/docs/logo/kubero.svg b/docs/logo/kubero.svg deleted file mode 100644 index 8d4ed22c..00000000 --- a/docs/logo/kubero.svg +++ /dev/null @@ -1,190 +0,0 @@ - - - -KUBEROKUBERO -Kubero -Kubero diff --git a/docs/screenshots/activity.png b/docs/screenshots/activity.png deleted file mode 100644 index 589fe2d4..00000000 Binary files a/docs/screenshots/activity.png and /dev/null differ diff --git a/docs/screenshots/addons-overview.png b/docs/screenshots/addons-overview.png deleted file mode 100644 index ed19e172..00000000 Binary files a/docs/screenshots/addons-overview.png and /dev/null differ diff --git a/docs/screenshots/api.png b/docs/screenshots/api.png deleted file mode 100644 index e4c02020..00000000 Binary files a/docs/screenshots/api.png and /dev/null differ diff --git a/docs/screenshots/app-console.png b/docs/screenshots/app-console.png deleted file mode 100644 index ee451f41..00000000 Binary files a/docs/screenshots/app-console.png and /dev/null differ diff --git a/docs/screenshots/app-events.png b/docs/screenshots/app-events.png deleted file mode 100644 index 21b8a189..00000000 Binary files a/docs/screenshots/app-events.png and /dev/null differ diff --git a/docs/screenshots/app-logs.png b/docs/screenshots/app-logs.png deleted file mode 100644 index 4ff30ca5..00000000 Binary files a/docs/screenshots/app-logs.png and /dev/null differ diff --git a/docs/screenshots/app-metrics.png b/docs/screenshots/app-metrics.png deleted file mode 100644 index 8ae1b44d..00000000 Binary files a/docs/screenshots/app-metrics.png and /dev/null differ diff --git a/docs/screenshots/app-new-addon.png b/docs/screenshots/app-new-addon.png deleted file mode 100644 index ba650f1c..00000000 Binary files a/docs/screenshots/app-new-addon.png and /dev/null differ diff --git a/docs/screenshots/app-new-full.png b/docs/screenshots/app-new-full.png deleted file mode 100644 index 12420fc5..00000000 Binary files a/docs/screenshots/app-new-full.png and /dev/null differ diff --git a/docs/screenshots/app-new.png b/docs/screenshots/app-new.png deleted file mode 100644 index fbad62fc..00000000 Binary files a/docs/screenshots/app-new.png and /dev/null differ diff --git a/docs/screenshots/app-overview.png b/docs/screenshots/app-overview.png deleted file mode 100644 index e4dd215a..00000000 Binary files a/docs/screenshots/app-overview.png and /dev/null differ diff --git a/docs/screenshots/app-vulnerabilities.png b/docs/screenshots/app-vulnerabilities.png deleted file mode 100644 index f3c71667..00000000 Binary files a/docs/screenshots/app-vulnerabilities.png and /dev/null differ diff --git a/docs/screenshots/cli.png b/docs/screenshots/cli.png deleted file mode 100644 index 8f6765d0..00000000 Binary files a/docs/screenshots/cli.png and /dev/null differ diff --git a/docs/screenshots/createapp.gif b/docs/screenshots/createapp.gif deleted file mode 100644 index cd94fcb8..00000000 Binary files a/docs/screenshots/createapp.gif and /dev/null differ diff --git a/docs/screenshots/createpipeline.gif b/docs/screenshots/createpipeline.gif deleted file mode 100644 index 19c9d52f..00000000 Binary files a/docs/screenshots/createpipeline.gif and /dev/null differ diff --git a/docs/screenshots/dark-mode.png b/docs/screenshots/dark-mode.png deleted file mode 100644 index e3605aad..00000000 Binary files a/docs/screenshots/dark-mode.png and /dev/null differ diff --git a/docs/screenshots/gitrepositories.png b/docs/screenshots/gitrepositories.png deleted file mode 100644 index 2f0bdc8e..00000000 Binary files a/docs/screenshots/gitrepositories.png and /dev/null differ diff --git a/docs/screenshots/login.png b/docs/screenshots/login.png deleted file mode 100644 index b0869b6b..00000000 Binary files a/docs/screenshots/login.png and /dev/null differ diff --git a/docs/screenshots/pipeline-list.png b/docs/screenshots/pipeline-list.png deleted file mode 100644 index 53aa8dc7..00000000 Binary files a/docs/screenshots/pipeline-list.png and /dev/null differ diff --git a/docs/screenshots/pipeline-new.png b/docs/screenshots/pipeline-new.png deleted file mode 100644 index 12668d3e..00000000 Binary files a/docs/screenshots/pipeline-new.png and /dev/null differ diff --git a/docs/screenshots/pipeline-overview.png b/docs/screenshots/pipeline-overview.png deleted file mode 100644 index 1c149f27..00000000 Binary files a/docs/screenshots/pipeline-overview.png and /dev/null differ diff --git a/docs/screenshots/server-startup.png b/docs/screenshots/server-startup.png deleted file mode 100644 index 14a4ae2d..00000000 Binary files a/docs/screenshots/server-startup.png and /dev/null differ diff --git a/docs/screenshots/template-new.png b/docs/screenshots/template-new.png deleted file mode 100644 index 930be227..00000000 Binary files a/docs/screenshots/template-new.png and /dev/null differ diff --git a/docs/screenshots/templates.png b/docs/screenshots/templates.png deleted file mode 100644 index 4df292f7..00000000 Binary files a/docs/screenshots/templates.png and /dev/null differ diff --git a/docs/screenshots/youtube-screen.png b/docs/screenshots/youtube-screen.png deleted file mode 100644 index 5eed8f62..00000000 Binary files a/docs/screenshots/youtube-screen.png and /dev/null differ diff --git a/server/src/addons/clickhouse.ts b/server/src/addons/clickhouse.ts new file mode 100644 index 00000000..f12be36e --- /dev/null +++ b/server/src/addons/clickhouse.ts @@ -0,0 +1,181 @@ +import {Plugin, IPlugin, IPluginFormFields} from './plugin'; + +// Classname must be same as the CRD's Name +export class ClickHouseInstallation extends Plugin implements IPlugin { + public id: string = 'clickhouse-operator';//same as operator name + public displayName = 'ClickHouse Cluster' + public icon = '/img/addons/clickhouse.svg' + public install = 'curl -s https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator-web-installer/clickhouse-operator-install.sh | OPERATOR_NAMESPACE=clickhouse-operator-system bash' + public url = 'https://github.com/Altinity/clickhouse-operator/' + public description: string = 'ClickHouse is an open source column-oriented database management system capable of real time generation of analytical data reports. Check ClickHouse documentation for more complete details.' + public links = [ + { + name: 'Altinity', url: 'https://altinity.com/', + }, + { + name: 'Operator homepage', url: 'https://www.altinity.com/kubernetes-operator' + }, + { + name: 'Documentation', url: 'https://github.com/Altinity/clickhouse-operator/tree/master/docs' + } + ] + public maintainers = [ + { + name: 'Altinity', + email: 'support@altinity.com', + url: 'https://altinity.com', + github: 'altinity' + } + ] + public artifact_url = 'https://artifacthub.io/api/v1/packages/olm/community-operators/clickhouse' + public beta: boolean = true; + + public formfields: {[key: string]: IPluginFormFields} = { + 'ClickHouseInstallation.metadata.name':{ + type: 'text', + label: 'Name *', + name: 'metadata.name', + required: true, + default: 'clickhouse', + description: 'The name of the Clickhouse instance' + }, + 'ClickHouseInstallation.spec.configuration.clusters[0].layout.shardsCount':{ + type: 'number', + label: 'Shards Count *', + name: 'spec.configuration.clusters[0].layout.shardsCount', + default: 1, + required: true, + description: 'Number of shards' + }, + 'ClickHouseInstallation.spec.configuration.clusters[0].layout.replicasCount':{ + type: 'number', + label: 'Replicas Count *', + name: 'spec.configuration.clusters[0].layout.replicasCount', + default: 1, + required: true, + description: 'Number of replicas' + }, + "ClickHouseInstallation.spec.configuration.users['admin/password']":{ + type: 'text', + label: 'Admin Password *', + name: "ClickHouseInstallation.spec.configuration.users['admin/password']", + default: 'ChangeMe', + required: true, + description: 'Password for user "user"' + }, + "ClickHouseInstallation.spec.configuration.users['admin/networks/ip'][0]":{ + type: 'text', + label: 'Admin Access Network *', + name: "ClickHouseInstallation.spec.configuration.users['admin/networks/ip'][0]", + default: '0.0.0.0/0', + required: true, + description: 'Allowed Network access for "admin"' + }, + "ClickHouseInstallation.spec.configuration.users['user/password']":{ + type: 'text', + label: 'User Password *', + name: "ClickHouseInstallation.spec.configuration.users['user/password']", + default: 'ChangeMe', + required: true, + description: 'Password for user "user"' + }, + "ClickHouseInstallation.spec.configuration.users['user/networks/ip'][0]":{ + type: 'text', + label: 'User Access Network *', + name: "ClickHouseInstallation.spec.configuration.users['user/networks/ip'][0]", + default: '0.0.0.0/0', + required: true, + description: 'Allowed Network access for "user"' + }, + 'ClickHouseInstallation.spec.templates.volumeClaimTemplates[0].spec.resources.requests.storage':{ + type: 'text', + label: 'Data Storage Size*', + name: 'ClickHouseInstallation.spec.templates.volumeClaimTemplates[0].spec.resources.requests.storage', + default: '1Gi', + required: true, + description: 'Size of the data storage' + }, + 'ClickHouseInstallation.spec.templates.volumeClaimTemplates[1].spec.resources.requests.storage':{ + type: 'text', + label: 'Log Storage Size*', + name: 'ClickHouseInstallation.spec.templates.volumeClaimTemplates[0].spec.resources.requests.storage', + default: '1Gi', + required: true, + description: 'Size of the log storage' + }, + }; + + public env: any[] = [] + + protected additionalResourceDefinitions: Object = {} + + constructor(availableOperators: any) { + super(); + super.init(availableOperators); + } + + public resourceDefinitions: any = { + ClickHouseInstallation: { + apiVersion: "clickhouse.altinity.com/v1", + kind: "ClickHouseInstallation", + metadata: { + name: "example" + }, + spec: { + configuration: { + users: { + 'user/password': "user_password", + 'user/networks/ip': [ + "0.0.0.0/0" + ], + 'admin/password': "admin_password", + 'admin/networks/ip': [ + "0.0.0.0/0" + ] + }, + clusters: [ + { + name: "example", + layout: { + shardsCount: 1, + replicasCount: 2 + } + } + ] + }, + templates: { + volumeClaimTemplates: [ + { + name: "data-volume-template", + spec: { + accessModes: [ + "ReadWriteOnce" + ], + resources: { + requests: { + storage: "1Gi" + } + } + } + }, + { + name: "log-volume-template", + spec: { + accessModes: [ + "ReadWriteOnce" + ], + resources: { + requests: { + storage: "100Mi" + } + } + } + } + ] + } + } + } + } + +} + diff --git a/server/src/addons/cockroachDB.ts b/server/src/addons/cockroachDB.ts index 2d307431..8b58c207 100644 --- a/server/src/addons/cockroachDB.ts +++ b/server/src/addons/cockroachDB.ts @@ -6,6 +6,7 @@ export class Cockroachdb extends Plugin implements IPlugin { public displayName = 'CockroachDB' public icon = '/img/addons/CockroachDB.svg' public install: string = 'kubectl create -f https://operatorhub.io/install/cockroachdb.yaml' + public install_olm: string = 'kubectl create -f https://operatorhub.io/install/cockroachdb.yaml' public url = 'https://artifacthub.io/packages/olm/community-operators/cockroachdb' public docs = [ { diff --git a/server/src/addons/plugin.ts b/server/src/addons/plugin.ts index 616e3f19..3a568afd 100644 --- a/server/src/addons/plugin.ts +++ b/server/src/addons/plugin.ts @@ -158,7 +158,7 @@ export abstract class Plugin { private loadOperatorData(availableOperators: any): any { for (const operatorCRD of availableOperators) { - // console.log(operatorCRD.spec.names.kind, this.constructor.name) // debug CRD + console.log(operatorCRD.spec.names.kind, this.constructor.name) // debug CRD if (operatorCRD.spec.names.kind === this.constructor.name) { this.enabled = true; this.version.installed = operatorCRD.spec.version diff --git a/server/src/kubero.ts b/server/src/kubero.ts index 3969286b..c0eea3fb 100644 --- a/server/src/kubero.ts +++ b/server/src/kubero.ts @@ -705,7 +705,7 @@ export class Kubero { let appOptions:IApp = { name: websaveTitle, pipeline: pipelaneName, - sleep: '600s', //TODO use config value + sleep: 'disabled', //TODO use config value. This is BETA and should be disabled by default gitrepo: pipeline.git.repository, buildpack: pipeline.buildpack.name, deploymentstrategy: pipeline.deploymentstrategy, @@ -715,7 +715,11 @@ export class Kubero { autodeploy: true, podsize: this.config.podSizeList[0], //TODO select from podsizelist autoscale: false, - envVars: [], //TODO use custom env vars, + basicAuth: { + realm: '', + accounts: [] + }, + envVars: pipeline.phases.find(p => p.name == phaseName)?.defaultEnvvars || [], extraVolumes: [], //TODO Not sure how to handlle extra Volumes on PR Apps serviceAccount: { annotations: {}, @@ -767,7 +771,7 @@ export class Kubero { enabled: true, hosts: [ { - host: websaveTitle+"."+pipeline.domain, + host: websaveTitle+"."+pipeline.phases.find(p => p.name == phaseName)?.domain, paths: [ { path: "/", diff --git a/server/src/modules/addons.ts b/server/src/modules/addons.ts index d61517ed..7b14c35c 100644 --- a/server/src/modules/addons.ts +++ b/server/src/modules/addons.ts @@ -17,6 +17,7 @@ import { KuberoKafka } from '../addons/kuberoKafka'; import { KuberoMail } from '../addons/kuberoMail'; import { KuberoRabbitMQ } from '../addons/kuberoRabbitMQ'; import { Cockroachdb } from '../addons/cockroachDB'; +import { ClickHouseInstallation } from '../addons/clickhouse'; import { MongoDB } from '../addons/mongoDB'; import { Tenant } from '../addons/minio'; import { Tunnel } from '../addons/cloudflare'; @@ -133,6 +134,9 @@ export class Addons { const minio = new Tenant(this.CRDList) this.addonsList.push(minio) + + const clickhouse = new ClickHouseInstallation(this.CRDList) + this.addonsList.push(clickhouse) } public async getAddonsList(): Promise { diff --git a/server/src/modules/application.ts b/server/src/modules/application.ts index b9df23ec..7fd88729 100644 --- a/server/src/modules/application.ts +++ b/server/src/modules/application.ts @@ -35,6 +35,7 @@ export class App implements IApp{ public podsize: IPodSize public autoscale: boolean //public envVars: {[key: string]: string} = {} + public basicAuth: { realm: string; accounts: { user: string; password: string; }[]; }; public envVars: {}[] = [] public extraVolumes: IExtraVolume[] = [] public cronjobs: ICronjob[] = [] @@ -152,6 +153,8 @@ export class App implements IApp{ this.podsize = app.podsize this.autoscale = app.autoscale // TODO: may be redundant with autoscaling.enabled + this.basicAuth = app.basicAuth + this.envVars = app.envVars this.serviceAccount = app.serviceAccount; diff --git a/server/src/routes/apps.ts b/server/src/routes/apps.ts index 832215a1..b50ab91e 100644 --- a/server/src/routes/apps.ts +++ b/server/src/routes/apps.ts @@ -213,6 +213,7 @@ function createApp(req: Request) : IApp { autodeploy: req.body.autodeploy, podsize: req.body.podsize, autoscale: req.body.autoscale, + basicAuth: req.body.basicAuth, envVars: req.body.envvars, extraVolumes: req.body.extraVolumes, serviceAccount: req.body.serviceAccount, @@ -275,6 +276,7 @@ Router.put('/pipelines/:pipeline/:phase/:app', authMiddleware, async function (r podsize: req.body.podsize, autoscale: req.body.autoscale, extraVolumes: req.body.extraVolumes, + basicAuth: req.body.basicAuth, envVars: req.body.envvars, serviceAccount: req.body.serviceAccount, image: { diff --git a/server/src/types.ts b/server/src/types.ts index 36e0edf6..2a5cf5c3 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -12,6 +12,13 @@ export interface IApp { autodeploy: boolean, podsize: IPodSize, autoscale: boolean, + basicAuth: { + realm: string, + accounts: { + user: string, + password: string, + }[] + }, envVars: {}[], image : { repository: string, @@ -243,7 +250,9 @@ export interface IPipelinePhase { name: string; enabled: boolean; context: string; - apps: IApp[]; + defaultEnvvars: {}[]; + domain: string; + //apps: IApp[]; } // TODO replace with default kubeclt Interface diff --git a/services/adminerevo/app.yaml b/services/adminerevo/app.yaml new file mode 100644 index 00000000..aa44dd93 --- /dev/null +++ b/services/adminerevo/app.yaml @@ -0,0 +1,33 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: adminerevo + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "Database management in a single PHP file" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/132262423" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://github.com/adminerevo/adminerevo" + kubero.dev/template.categories: '["database", "administration", "development"]' + kubero.dev/template.title: "AdminerEvo" + kubero.dev/template.website: "https://docs.adminerevo.org/" + labels: + manager: kubero +spec: + name: adminerevo + deploymentstrategy: docker + envVars: [] + extraVolumes: [] + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: 8080 + pullPolicy: Always + repository: ghcr.io/shyim/adminerevo + tag: latest diff --git a/services/archivebox/app.yaml b/services/archivebox/app.yaml new file mode 100644 index 00000000..67601075 --- /dev/null +++ b/services/archivebox/app.yaml @@ -0,0 +1,55 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: archivebox + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "ArchiveBox is a powerful, self-hosted internet archiving solution to collect, save, and view websites offline." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/74894248" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: '["https://github-production-user-asset-6210df.s3.amazonaws.com/511499/294289510-e8e0b6f8-8fdf-4b7f-8124-c10d8699bdb2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20241220%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241220T155851Z&X-Amz-Expires=300&X-Amz-Signature=9d8be033a8c15bfbea945d4e60dd54b54e569576c014fd87b5e91603906b448d&X-Amz-SignedHeaders=host"]' + kubero.dev/template.source: "https://github.com/ArchiveBox/ArchiveBox" + kubero.dev/template.categories: '["utility","work"]' + kubero.dev/template.title: "Archivebox" + kubero.dev/template.website: "https://archivebox.io/" + labels: + manager: kubero +spec: + name: archivebox + deploymentstrategy: docker + envVars: + - name: ADMIN_USERNAME + value: admin + - name: ADMIN_PASSWORD + value: random24 + - name: CSRF_TRUSTED_ORIGINS + value: archivebox.localhost + - name: ALLOWED_HOSTS + value: "*" + - name: PUBLIC_INDEX + value: "True" + - name: PUBLIC_SNAPSHOTS + value: "True" + - name: PUBLIC_ADD_VIEW + value: "False" + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /data + name: arvicebox-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "8000" + pullPolicy: Always + repository: archivebox/archivebox + tag: latest diff --git a/services/browserless/app.yaml b/services/browserless/app.yaml new file mode 100644 index 00000000..482dc553 --- /dev/null +++ b/services/browserless/app.yaml @@ -0,0 +1,45 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: browserless + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "Deploy headless browsers in Docker. Run on our cloud or bring your own. Free for non-commercial uses." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/51244358" + kubero.dev/template.installation: "" + kubero.dev/template.links: '["https://docs.browserless.io/"]' + kubero.dev/template.screenshots: '["https://raw.githubusercontent.com/browserless/browserless/main/assets/debugger.png"]' + kubero.dev/template.source: "https://github.com/browserless/browserless" + kubero.dev/template.categories: '[ "testing", "development" ]' + kubero.dev/template.title: "browserless" + kubero.dev/template.website: "https://browserless.io/" + labels: + manager: kubero +spec: + name: browserless + deploymentstrategy: docker + envVars: + - name: TOKEN + value: 6R0W53R135510 + - name: CONCURRENT + value: "10" + - name: QUEUED + value: "10" + - name: TIMEOUT + value: "60000" + - name: HEALTH + value: "true" + - name: ALLOW_GET + value: "true" + extraVolumes: [] + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "3000" + pullPolicy: Always + repository: ghcr.io/browserless/chromium + tag: latest diff --git a/services/corteza/app.yaml b/services/corteza/app.yaml index 7da34793..a9c22a89 100644 --- a/services/corteza/app.yaml +++ b/services/corteza/app.yaml @@ -71,4 +71,3 @@ spec: nginx.ingress.kubernetes.io/cors-allow-origin: '*' nginx.ingress.kubernetes.io/cors-expose-headers: '*' nginx.ingress.kubernetes.io/enable-cors: "true" - diff --git a/services/directus/app.yaml b/services/directus/app.yaml new file mode 100644 index 00000000..d6c3370b --- /dev/null +++ b/services/directus/app.yaml @@ -0,0 +1,75 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: directus + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "The flexible backend for all your projects. Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/15967950" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://github.com/directus/directus" + kubero.dev/template.categories: '["database", "cms", "api"]' + kubero.dev/template.title: "Directus" + kubero.dev/template.website: "https://directus.io/" + labels: + manager: kubero +spec: + name: directus + deploymentstrategy: docker + envVars: + - name: ADMIN_EMAIL + value: admin@example.com + - name: ADMIN_PASSWORD + value: example + - name: DB_CLIENT + value: sqlite3 + - name: DB_FILENAME + value: /directus/database/data.db + - name: WEBSOCKETS_ENABLED + value: "true" + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /directus/database + name: directus-db-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /directus/uploads + name: directus-uploads-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /directus/extensions + name: directus-extensions-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /directus/templates + name: directus-templates-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "8055" + pullPolicy: Always + repository: directus/directus + tag: "11" diff --git a/services/doccano/doccano.yaml b/services/doccano/doccano.yaml new file mode 100644 index 00000000..d3f26ffd --- /dev/null +++ b/services/doccano/doccano.yaml @@ -0,0 +1,47 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: doccano + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64"]' + kubero.dev/template.description: "Open source annotation tool for machine learning practitioners." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/58067660" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://doccano.github.io/doccano/" + kubero.dev/template.categories: '["ai"]' + kubero.dev/template.title: "Doccano" + kubero.dev/template.website: "https://doccano.github.io/doccano/" + labels: + manager: kubero +spec: + name: doccano + deploymentstrategy: docker + envVars: + - name: ADMIN_USERNAME + value: admin + - name: ADMIN_EMAIL + value: admin@example.com + - name: ADMIN_PASSWORD + value: random16 + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /data + name: doccano-data-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "8000" + pullPolicy: Always + repository: doccano/doccano + tag: latest diff --git a/services/fider/app.yaml b/services/fider/app.yaml new file mode 100644 index 00000000..6a09b368 --- /dev/null +++ b/services/fider/app.yaml @@ -0,0 +1,77 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: fider + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64"]' + kubero.dev/template.description: "Open platform to collect and prioritize feedback" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/25187431" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: '["https://fider.io/_next/image?url=%2Fimages%2Fscreenshot%2Fhome2.png&w=1920&q=75"]' + kubero.dev/template.source: "https://github.com/getfider/fider" + kubero.dev/template.categories: '["collaboration","productivity"]' + kubero.dev/template.title: "Fider" + kubero.dev/template.website: "https://fider.io" + labels: + manager: kubero +spec: + name: fider + deploymentstrategy: docker + envVars: + - name: BASE_URL + value: https://fider.localhost + - name: DATABASE_URL + value: postgres://fider:fider@fider-postgresql/fider?sslmode=disable + - name: JWT_SECRET + value: random64 + - name: EMAIL_NOREPLY + value: noreply@example.com + - name: EMAIL_SMTP_HOST + value: smtp.yourdomain.com + - name: EMAIL_SMTP_PORT + value: "587" + - name: EMAIL_SMTP_USERNAME + value: user@yourdomain.com + - name: EMAIL_SMTP_PASSWORD + value: s0m3p4ssw0rd + - name: EMAIL_SMTP_ENABLE_STARTTLS + value: "true" + extraVolumes: [] + cronjobs: [] + addons: + - displayName: Postgresql + env: [] + icon: /img/addons/pgsql.svg + id: kubero-operator + kind: KuberoPostgresql + resourceDefinitions: + KuberoPostgresql: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoPostgresql + metadata: + name: fider-postgresql + spec: + postgresql: + global: + postgresql: + auth: + database: fider + password: fider + postgresPassword: fider + username: fider + storageClass: standard + primary: + persistence: + size: 1Gi + version: + latest: 0.1.5 + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "3000" + pullPolicy: Always + repository: getfider/fider + tag: stable diff --git a/services/firefox/app.yaml b/services/firefox/app.yaml new file mode 100644 index 00000000..574a184a --- /dev/null +++ b/services/firefox/app.yaml @@ -0,0 +1,41 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: firefox + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64", "linux/arm/v7", "linux/386"]' + kubero.dev/template.description: "Start a Firefox web browser in a Docker container" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/109460230" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://github.com/jlesage/docker-firefox" + kubero.dev/template.categories: '["security", "utility"]' + kubero.dev/template.title: "Firefox" + kubero.dev/template.website: "https://www.mozilla.org/en-US/firefox/new/" + labels: + manager: kubero +spec: + name: firefox + deploymentstrategy: docker + envVars: [] + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /config + name: firefox-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "5800" + pullPolicy: Always + repository: jlesage/firefox + tag: latest diff --git a/services/flightlog/app.yaml b/services/flightlog/app.yaml new file mode 100644 index 00000000..61f13705 --- /dev/null +++ b/services/flightlog/app.yaml @@ -0,0 +1,43 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: flightlog + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "Flight log web application that keeps track of your personal flight history" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/4271779" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: '["https://raw.githubusercontent.com/perdian/flightlog/main/docs/screenshots/home.png"]' + kubero.dev/template.source: "https://github.com/perdian/flightlog" + kubero.dev/template.categories: '["management", "log"]' + kubero.dev/template.title: "Flightlog" + kubero.dev/template.website: "https://github.com/perdian/flightlog" + labels: + manager: kubero +spec: + name: flightlog + deploymentstrategy: docker + envVars: + - name: FLIGHTLOG_SERVER_CONTEXT_PATH + value: / + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /var/flightlog/database + name: flightlog-db-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: 8080 + pullPolicy: Always + repository: perdian/flightlog + tag: latest diff --git a/services/logto/app.yaml b/services/logto/app.yaml new file mode 100644 index 00000000..25ec339f --- /dev/null +++ b/services/logto/app.yaml @@ -0,0 +1,68 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: logto + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "Logto is an open-source Identity and Access Management (IAM) platform designed to streamline Customer Identity and Access Management (CIAM) and Workforce Identity Management. " + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/84981374" + kubero.dev/template.installation: "run kubectl `apply -f https://raw.githubusercontent.com/kubero-dev/kubero/main/services/logto/logto-admin-ingress.yaml` to enable the admin interface. + A list of all available environment variables can be found here : https://docs.logto.io/docs/references/core/configuration/" + kubero.dev/template.links: '["https://docs.logto.io/"]' + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://github.com/logto-io/logto" + kubero.dev/template.categories: '["identity", "access", "management"]' + kubero.dev/template.title: "logto" + kubero.dev/template.website: "https://logto.io/" + labels: + manager: kubero +spec: + name: logto + deploymentstrategy: docker + envVars: + - name: DB_URL + value: postgresql://postgres:logto@logto-postgresql:5432/logto + - name: TRUST_PROXY_HEADER + value: "1" + - name: ENDPOINT + value: https://logto.localhost + - name: ADMIN_ENDPOINT + value: https://admin.logto.localhost + extraVolumes: [] + cronjobs: [] + addons: + - displayName: Postgresql + env: [] + icon: /img/addons/pgsql.svg + id: kubero-operator + kind: KuberoPostgresql + resourceDefinitions: + KuberoPostgresql: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoPostgresql + metadata: + name: logto-postgresql + spec: + postgresql: + global: + postgresql: + auth: + database: postgresql + password: logto + postgresPassword: logto + username: logto + storageClass: standard + primary: + persistence: + size: 1Gi + version: + latest: 0.1.5 + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: 8080 + pullPolicy: Always + repository: svhd/logto + tag: latest diff --git a/services/logto/logto-admin-ingress.yaml b/services/logto/logto-admin-ingress.yaml new file mode 100644 index 00000000..e2a4225f --- /dev/null +++ b/services/logto/logto-admin-ingress.yaml @@ -0,0 +1,44 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + kubernetes.io/tls-acme: "true" + name: logto-kuberoapp-admin +spec: + ingressClassName: nginx + rules: + - host: admin.logto.localhost + http: + paths: + - backend: + service: + name: logto-kuberoapp-admin + port: + number: 81 + path: / + pathType: ImplementationSpecific + tls: + - secretName: logto-tls +status: + loadBalancer: + ingress: + - hostname: localhost +--- +apiVersion: v1 +kind: Service +metadata: + name: logto-kuberoapp-admin +spec: + ports: + - name: http + port: 81 + protocol: TCP + targetPort: 3002 + selector: + app.kubernetes.io/instance: logto-web + app.kubernetes.io/name: kuberoapp + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} \ No newline at end of file diff --git a/services/paperless-ngx-postgresql/app.yaml b/services/paperless-ngx-postgresql/app.yaml new file mode 100644 index 00000000..ccd55d37 --- /dev/null +++ b/services/paperless-ngx-postgresql/app.yaml @@ -0,0 +1,140 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: paperless-ngx + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "A community-supported supercharged version of paperless: scan, index and archive all your physical documents" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/99562962" + kubero.dev/template.installation: "run `python3 manage.py createsuperuser` from within the container to create an admin user" + kubero.dev/template.links: '["https://docs.paperless-ngx.com/setup/#docker"]' + kubero.dev/template.screenshots: '["https://docs.paperless-ngx.com/assets/screenshots/dashboard.png", "https://docs.paperless-ngx.com/assets/screenshots/documents-largecards.png"]' + kubero.dev/template.source: "https://github.com/paperless-ngx/paperless-ngx" + kubero.dev/template.categories: '["productivity", "work", "utilities"]' + kubero.dev/template.title: "Paperless-NGX PostgreSQL" + kubero.dev/template.website: "https://docs.paperless-ngx.com/" + labels: + manager: kubero +spec: + name: paperless-ngx + deploymentstrategy: docker + envVars: + - name: PAPERLESS_SECRET_KEY + value: 70zcjuy9cy9NcIrj++eK2FR0E/Kdb3d3VZhRw8UmDSg= + - name: PAPERLESS_REDIS + value: redis://:paperless@paperless-ngx-redis-master:6379 + - name: PAPERLESS_URL + value: https://paperless-ngx.localhost + - name: PAPERLESS_DBHOST + value: paperless-ngx-postgresql + - name: PAPERLESS_DBNAME + value: paperless + - name: PAPERLESS_DBPORT + value: "5432" + - name: PAPERLESS_DBUSER + value: paperless + - name: PAPERLESS_DBPASS + value: paperless + - name: PAPERLESS_ADMIN_USER + value: administrator + - name: PAPERLESS_ADMIN_MAIL + value: admin@example.com + - name: PAPERLESS_ADMIN_PASSWORD + value: administrator + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /usr/src/paperless/export + name: paperless-export-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /usr/src/paperless/consume + name: paperless-consume-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /usr/src/paperless/media + name: paperless-media-volume + size: 1Gi + storageClass: standard + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /usr/src/paperless/data + name: paperless-data-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: + - displayName: Redis + env: [] + icon: /img/addons/redis.svg + id: kubero-operator + kind: KuberoRedis + resourceDefinitions: + KuberoRedis: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoRedis + metadata: + name: paperless-ngx-redis + spec: + redis: + architecture: replication + global: + redis: + password: paperless + storageClass: standard + master: + persistence: + size: 1Gi + replica: + persistence: + size: 1Gi + replicaCount: 1 + version: + latest: 0.1.5 + - displayName: Postgresql + env: [] + icon: /img/addons/pgsql.svg + id: kubero-operator + kind: KuberoPostgresql + resourceDefinitions: + KuberoPostgresql: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoPostgresql + metadata: + name: paperless-ngx-postgresql + spec: + postgresql: + global: + postgresql: + auth: + database: paperless + password: paperless + postgresPassword: paperless + username: paperless + storageClass: standard + primary: + persistence: + size: 1Gi + version: + latest: 0.1.5 + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "8000" + pullPolicy: Always + repository: ghcr.io/paperless-ngx/paperless-ngx + tag: latest diff --git a/services/penpot-backend/app.yaml b/services/penpot-backend/app.yaml new file mode 100644 index 00000000..23b45f8e --- /dev/null +++ b/services/penpot-backend/app.yaml @@ -0,0 +1,120 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: penpot-backend + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64"]' + kubero.dev/template.description: "Penpot is a open-source design tool for design and code collaboration." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/30179644" + kubero.dev/template.installation: "Make sure you have all three services running: penpot-backend, penpot-exporter, penpot-frontend" + kubero.dev/template.links: '["https://community.penpot.app/"]' + kubero.dev/template.screenshots: '["https://penpot.app/blog/content/images/size/w2000/2024/02/PenpotUI-flexlayout.png", "https://penpot.app/blog/content/images/size/w1000/2024/02/Penpot_workspace.png"]' + kubero.dev/template.source: "https://github.com/penpot/penpot" + kubero.dev/template.categories: '["work","collaboration"]' + kubero.dev/template.title: "Penpot (Backend)" + kubero.dev/template.website: "https://penpot.app/" + labels: + manager: kubero +spec: + name: penpot-backend + deploymentstrategy: docker + envVars: + - name: PENPOT_SECRET_KEY + value: super-secret-devenv-key + - name: PENPOT_SMTP_ENABLED + value: "false" + - name: PENPOT_DATABASE_URI + value: postgresql://penpot-backend-postgresql/penpot + - name: PENPOT_REDIS_URI + value: redis://penpot@penpot-backend-redis-master:6379/0?verifyPeer=NONE + - name: PENPOT_TELEMETRY_ENABLED + value: "true" + - name: PENPOT_HTTP_SERVER_PORT + value: "6060" + - name: PENPOT_STORAGE_ASSETS_FS_DIRECTORY + value: /opt/data/assets + - name: PENPOT_ASSETS_STORAGE_BACKEND + value: assets-fs + - name: PENPOT_DATABASE_USERNAME + value: penpot + - name: PENPOT_DATABASE_PASSWORD + value: penpot + - name: PENPOT_EXPORTER_URI + value: http://penpot-exporter-kuberoapp + - name: PENPOT_BACKEND_URI + value: http://penpot-backend-kuberoapp + - name: PENPOT_PUBLIC_URI + value: https://penpot-frontend.localhost/ + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /opt/data/assets + name: penpot-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: + - displayName: Postgresql + env: [] + icon: /img/addons/pgsql.svg + id: kubero-operator + kind: KuberoPostgresql + resourceDefinitions: + KuberoPostgresql: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoPostgresql + metadata: + name: penpot-backend-postgresql + spec: + postgresql: + global: + postgresql: + auth: + database: penpot + password: penpot + postgresPassword: penpot + username: penpot + storageClass: standard + primary: + persistence: + size: 1Gi + version: + latest: 0.1.5 + - displayName: Redis + env: [] + icon: /img/addons/redis.svg + id: kubero-operator + kind: KuberoRedis + resourceDefinitions: + KuberoRedis: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoRedis + metadata: + name: penpot-backend-redis + spec: + redis: + architecture: replication + global: + redis: + password: penpot + storageClass: standard + master: + persistence: + size: 1Gi + replica: + persistence: + size: 1Gi + replicaCount: 1 + version: + latest: 0.1.5 + web: + replicaCount: 0 + worker: + replicaCount: 1 + image: + containerPort: 8080 + pullPolicy: Always + repository: penpotapp/backend + tag: latest diff --git a/services/penpot-exporter/app.yaml b/services/penpot-exporter/app.yaml new file mode 100644 index 00000000..6d8af187 --- /dev/null +++ b/services/penpot-exporter/app.yaml @@ -0,0 +1,37 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: penpot-exporter + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64"]' + kubero.dev/template.description: "Penpot is a open-source design tool for design and code collaboration." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/30179644" + kubero.dev/template.installation: "Make sure you have all three services running: penpot-backend, penpot-exporter, penpot-frontend" + kubero.dev/template.links: '["https://community.penpot.app/"]' + kubero.dev/template.screenshots: '["https://penpot.app/blog/content/images/size/w2000/2024/02/PenpotUI-flexlayout.png", "https://penpot.app/blog/content/images/size/w1000/2024/02/Penpot_workspace.png"]' + kubero.dev/template.source: "https://github.com/penpot/penpot" + kubero.dev/template.categories: '["work","collaboration"]' + kubero.dev/template.title: "Penpot (Exporter)" + kubero.dev/template.website: "https://penpot.app/" + labels: + manager: kubero +spec: + name: penpot-exporter + deploymentstrategy: docker + envVars: + - name: PENPOT_PUBLIC_URI + value: penpot-frontend + - name: PENPOT_REDIS_URI + value: redis://penpot@penpot-backend-redis-master:6379/0?verifyPeer=NONE + extraVolumes: [] + cronjobs: [] + addons: [] + web: + replicaCount: 0 + worker: + replicaCount: 1 + image: + containerPort: 8080 + pullPolicy: Always + repository: penpotapp/exporter + tag: latest diff --git a/services/penpot-frontend/app.yaml b/services/penpot-frontend/app.yaml new file mode 100644 index 00000000..95a4e441 --- /dev/null +++ b/services/penpot-frontend/app.yaml @@ -0,0 +1,40 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: penpot-frontend + annotations: + kubero.dev/template.architecture: '["linux/amd64", "linux/arm64"]' + kubero.dev/template.description: "Penpot is a open-source design tool for design and code collaboration." + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/30179644" + kubero.dev/template.installation: "Make sure you have all three services running: penpot-backend, penpot-exporter, penpot-frontend" + kubero.dev/template.links: '["https://community.penpot.app/"]' + kubero.dev/template.screenshots: '["https://penpot.app/blog/content/images/size/w2000/2024/02/PenpotUI-flexlayout.png", "https://penpot.app/blog/content/images/size/w1000/2024/02/Penpot_workspace.png"]' + kubero.dev/template.source: "https://github.com/penpot/penpot" + kubero.dev/template.categories: '["work","collaboration"]' + kubero.dev/template.title: "Penpot (Frontend)" + kubero.dev/template.website: "https://penpot.app/" + labels: + manager: kubero +spec: + name: penpot-frontend + deploymentstrategy: docker + envVars: + - name: PENPOT_FLAGS + value: enable-login-with-password enable-prepl-server + disable-secure-session-cookies + - name: PENPOT_BACKEND_URI + value: http://penpot-backend-kuberoapp + - name: PENPOT_EXPORTER_URI + value: http://penpot-exporter-kuberoapp + extraVolumes: [] + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "80" + pullPolicy: Always + repository: penpotapp/frontend + tag: latest diff --git a/services/tolgee/app.yaml b/services/tolgee/app.yaml new file mode 100644 index 00000000..e4d5ce68 --- /dev/null +++ b/services/tolgee/app.yaml @@ -0,0 +1,83 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: tolgee + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "Developer & translator friendly web-based localization platform" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/78480209" + kubero.dev/template.installation: "Make sure you have enough RAM and CPU resources available.The JWT secret is a long string of random characters. Please generate a new one for your installation." + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: "[]" + kubero.dev/template.source: "https://github.com/tolgee/tolgee-platform" + kubero.dev/template.categories: '["work","development","collaboration"]' + kubero.dev/template.title: "Tolgee" + kubero.dev/template.website: "https://tolgee.io/" + labels: + manager: kubero +spec: + name: tolgee + deploymentstrategy: docker + envVars: + - name: TOLGEE_AUTHENTICATION_ENABLED + value: "true" + - name: TOLGEE_AUTHENTICATION_INITIAL_PASSWORD + value: random24 + - name: TOLGEE_AUTHENTICATION_INITIAL_USERNAME + value: admin + - name: TOLGEE_AUTHENTICATION_JWT_SECRET + value: e106753fee68e054223a008638516ac00df6af5a651e74d1e003791e403292b14ae5d6afa76a3589baa62d57fa89384edcf81ddf0f0f824854ddd09d1f0dbbfb688f48f50f49f9d0277f856ff3b56fcd5cc216c96e654afbe1eefa4fb1aa2163a0e694a4683759d9ae48973ba30bbe493a67f6a328186aeb3564075785306fec7cae7166f8d7cd0267a1c49304ac23924d49a5c67fcdb3c7a8c091f713d366f6bcf0fd811990b3f96db59227c5af7782643a3aa30dc8989d378fa68f65dbac5a2c425539e1c989defe72a33a0f0b194b2aca03e693cd98af23adb4a10be34941bad0e71634021450b8a503f1353911b42fd0732cf811adb4e65d83a0894feb67 + - name: TOLGEE_POSTGRES_AUTOSTART_ENABLED + value: "false" + - name: SPRING_DATASOURCE_URL + value: jdbc:postgresql://tolgee-postgresql:5432/tolgee + - name: SPRING_DATASOURCE_USERNAME + value: tolgee + - name: SPRING_DATASOURCE_PASSWORD + value: tolgee + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: /data + name: tolgee-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: + - displayName: Postgresql + env: [] + icon: /img/addons/pgsql.svg + id: kubero-operator + kind: KuberoPostgresql + resourceDefinitions: + KuberoPostgresql: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoPostgresql + metadata: + name: tolgee-postgresql + spec: + postgresql: + global: + postgresql: + auth: + database: tolgee + password: tolgee + postgresPassword: tolgee + username: tolgee + storageClass: standard + primary: + persistence: + size: 1Gi + version: + latest: 0.1.5 + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: 8080 + pullPolicy: Always + repository: tolgee/tolgee + tag: latest diff --git a/services/web-check/app.yaml b/services/web-check/app.yaml new file mode 100644 index 00000000..72d26a69 --- /dev/null +++ b/services/web-check/app.yaml @@ -0,0 +1,33 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: web-check + annotations: + kubero.dev/template.architecture: "[]" + kubero.dev/template.description: "All-in-one OSINT tool for analysing any website web" + kubero.dev/template.icon: "https://camo.githubusercontent.com/e081ebebf2ef1dbe9ecffa081063db7c9f696e5913d75699f7d2968a186d0d72/68747470733a2f2f692e6962622e636f2f7131675a4e32702f7765622d636865636b2d6c6f676f2e706e67" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: '["https://camo.githubusercontent.com/5848c091c38749d187599505b7c2e1c9e4689dbc93e9c438ed785528da891d49/68747470733a2f2f692e6962622e636f2f72306a584e36732f7765622d636865636b2e706e67"]' + kubero.dev/template.source: "https://github.com/Lissy93/web-check" + kubero.dev/template.categories: '["security", "monitoring", "web"]' + kubero.dev/template.title: "web-check" + kubero.dev/template.website: "https://web-check.xyz/" + labels: + manager: kubero +spec: + name: web-check + deploymentstrategy: docker + envVars: [] + extraVolumes: [] + cronjobs: [] + addons: [] + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: "3000" + pullPolicy: Always + repository: lissy93/web-check + tag: latest diff --git a/services/wekan/app.yaml b/services/wekan/app.yaml new file mode 100644 index 00000000..5a65c4d1 --- /dev/null +++ b/services/wekan/app.yaml @@ -0,0 +1,89 @@ +apiVersion: application.kubero.dev/v1alpha1 +kind: KuberoApp +metadata: + name: wekan + annotations: + kubero.dev/template.architecture: '["linux/amd64"]' + kubero.dev/template.description: "The Open Source kanban board" + kubero.dev/template.icon: "https://avatars.githubusercontent.com/u/11725037" + kubero.dev/template.installation: "" + kubero.dev/template.links: "[]" + kubero.dev/template.screenshots: '["https://wekan.github.io/wekan-dark-mode.png"]' + kubero.dev/template.source: "https://github.com/wekan/wekan" + kubero.dev/template.categories: '["work", "development"]' + kubero.dev/template.title: "Wekan" + kubero.dev/template.website: "https://wekan.github.io/" + labels: + manager: kubero +spec: + name: wekan + deploymentstrategy: docker + envVars: + - name: WRITABLE_PATH + value: /data + - name: MONGO_URL + value: mongodb://wekan:wekan@wekan-mongodb:27017/wekan + - name: ROOT_URL + value: https://wekan.localhost + - name: WITH_API + value: "true" + - name: RICHER_CARD_COMMENT_EDITOR + value: "false" + - name: CARD_OPENED_WEBHOOK_ENABLED + value: "false" + - name: BIGEVENTS_PATTERN + value: NONE + - name: BROWSER_POLICY_ENABLED + value: "true" + extraVolumes: + - accessMode: ReadWriteOnce + accessModes: + - ReadWriteOnce + emptyDir: false + mountPath: WRITABLE_PATH + name: wekan-volume + size: 1Gi + storageClass: standard + cronjobs: [] + addons: + - displayName: MongoDB + env: [] + icon: /img/addons/mongo.svg + id: kubero-operator + kind: KuberoMongoDB + resourceDefinitions: + KuberoMongoDB: + apiVersion: application.kubero.dev/v1alpha1 + kind: KuberoMongoDB + metadata: + name: wekan-mongodb + spec: + mongodb: + architecture: standalone + auth: + databases: + - wekan + passwords: + - wekan + rootPassword: wekan + rootUser: root + usernames: + - wekan + directoryPerDB: false + disableJavascript: false + global: + storageClass: standard + persistence: + size: 1Gi + replicaCount: 1 + version: + latest: 0.1.5 + web: + replicaCount: 1 + worker: + replicaCount: 0 + image: + containerPort: 8080 + pullPolicy: Always + repository: ghcr.io/wekan/wekan + tag: latest