diff --git a/README.md b/README.md
index 87e2d82c..b62cf894 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
---
@@ -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.
-
+
-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)
-- ...
+
+
## 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.
-
-
-
-
## 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.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-github Github
- Gitea
- mdi-gitlab Gitlab
-
- Gogs
- mdi-bitbucket Bitbucket
+ mdi-github Github
+ Gitea
+ mdi-gitlab Gitlab
+ Gogs
+ mdi-bitbucket Bitbucket
@@ -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
-
-
-
+
+
+
+
+
+
+
+
+ {{ 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 @@
-
-
-
-
- Kubero KUBERO KUBERO
- 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