Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 29 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,27 +45,35 @@ Kubero is Kubernetes native and runs with two containers on any Kubernetes insta

| | Addon | Maintainer | Built in* |
|-------------------------------------------------------------------------------------------------------------------|---------------------------|---------------------------------------------------------------------------------------|-----------|
| <img src="client/public/img/addons/mysql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MySQL | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/mysql) | ✅ |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | PostgreSQL | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) | ✅ |
| <img src="client/public/img/addons/redis.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Redis | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/redis) | ✅ |
| <img src="client/public/img/addons/mongo.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MongoDB | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/mongodb) | ✅ |
| <img src="client/public/img/addons/elasticsearch.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Elasticsearch | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/elasticsearch) | ✅ |
| <img src="client/public/img/addons/kafka.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Kafka | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/kafka) | ✅ |
| <img src="client/public/img/addons/couchdb.svg" width="30px" style="vertical-align: middle; margin: 10px"> | CouchDB | [Apache](https://apache.github.io/couchdb-helm) | ✅ |
| <img src="client/public/img/addons/Haraka.png" width="30px" style="vertical-align: middle; margin: 10px"> | Haraka Mail Server | [Kubero](https://github.com/kubero-dev/haraka-docker) | ✅ |
| <img src="client/public/img/addons/memcached.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Memcache | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/memcached) | ✅ |
| <img src="client/public/img/addons/RabbitMQ.svg" width="30px" style="vertical-align: middle; margin: 10px"> | RabbitMQ | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/rabbitmq) | ✅ |
| <img src="client/public/img/addons/cloudflare.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Cludflare Tunnels | [Adianth](https://github.com/adyanth/cloudflare-operator) | |
| <img src="client/public/img/addons/Minio.png" width="30px" style="vertical-align: middle; margin: 10px"> | Minio | [Minio](https://artifacthub.io/packages/olm/community-operators/minio-operator) | |
| <img src="client/public/img/addons/mongo.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Percona MongoDB Cluster | [Percona](https://artifacthub.io/packages/olm/community-operators/mongodb-operator) | |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Crunchy Postgres Cluster | [Crunchy Data](https://artifacthub.io/packages/olm/community-operators/postgresql) | |
| <img src="client/public/img/addons/redis.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Redis Cluster | [Opstree](https://artifacthub.io/packages/olm/community-operators/redis-operator) | |
| <img src="client/public/img/addons/CockroachDB.svg" width="30px" style="vertical-align: middle; margin: 10px"> | CockroachDB | [CockroachDB](https://artifacthub.io/packages/olm/community-operators/cockroachdb) | |
| <img src="client/public/img/addons/clickhouse.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Clickhouse | [Altinity ](https://artifacthub.io/packages/olm/community-operators/clickhouse) | |



\* Ships with the Kubero Operator
| <img src="client/public/img/addons/mysql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MySQL | [groundhog2k](https://github.com/groundhog2k/helm-charts/tree/master/charts/mysql) | ✅ |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | PostgreSQL | [groundhog2k](https://github.com/groundhog2k/helm-charts/tree/master/charts/postgres) | ✅ |
| <img src="client/public/img/addons/redis.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Redis | [groundhog2k](https://github.com/groundhog2k/helm-charts/tree/master/charts/redis) | ✅ |
| <img src="client/public/img/addons/mongo.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MongoDB | [groundhog2k](https://github.com/groundhog2k/helm-charts/tree/master/charts/mongodb) | ✅ |
| <img src="client/public/img/addons/RabbitMQ.svg" width="30px" style="vertical-align: middle; margin: 10px"> | RabbitMQ | [groundhog2k](https://github.com/groundhog2k/helm-charts/tree/master/charts/rabbitmq) | ✅ |
| <img src="client/public/img/addons/couchdb.svg" width="30px" style="vertical-align: middle; margin: 10px"> | CouchDB | [Apache](https://apache.github.io/couchdb-helm) | ✅ |
| <img src="client/public/img/addons/Haraka.png" width="30px" style="vertical-align: middle; margin: 10px"> | Haraka Mail Server | [Kubero](https://github.com/kubero-dev/haraka-docker) | ✅ |
| <img src="client/public/img/addons/mysql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MySQL | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/mysql) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | PostgreSQL | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/redis.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Redis | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/redis) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/mongo.svg" width="30px" style="vertical-align: middle; margin: 10px"> | MongoDB | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/mongodb) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/elasticsearch.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Elasticsearch | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/elasticsearch) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/kafka.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Kafka | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/kafka) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/memcached.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Memcache | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/memcached) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/RabbitMQ.svg" width="30px" style="vertical-align: middle; margin: 10px"> | RabbitMQ | [Bitnami](https://github.com/bitnami/charts/tree/main/bitnami/rabbitmq) | ⚠️ (deprecated) |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | PostgreSQL HA | [CloudNative](https://github.com/cloudnative-pg/cloudnative-pg) | |
| <img src="client/public/img/addons/cloudflare.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Cludflare Tunnels | [Adianth](https://github.com/adyanth/cloudflare-operator) | |
| <img src="client/public/img/addons/Minio.png" width="30px" style="vertical-align: middle; margin: 10px"> | Minio | [Minio](https://artifacthub.io/packages/olm/community-operators/minio-operator) | |
| <img src="client/public/img/addons/mongo.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Percona MongoDB Cluster | [Percona](https://artifacthub.io/packages/olm/community-operators/mongodb-operator) | |
| <img src="client/public/img/addons/pgsql.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Crunchy Postgres Cluster | [Crunchy Data](https://artifacthub.io/packages/olm/community-operators/postgresql) | |
| <img src="client/public/img/addons/redis.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Redis Cluster | [Opstree](https://artifacthub.io/packages/olm/community-operators/redis-operator) | |
| <img src="client/public/img/addons/CockroachDB.svg" width="30px" style="vertical-align: middle; margin: 10px"> | CockroachDB | [CockroachDB](https://artifacthub.io/packages/olm/community-operators/cockroachdb) | |
| <img src="client/public/img/addons/clickhouse.svg" width="30px" style="vertical-align: middle; margin: 10px"> | Clickhouse | [Altinity ](https://artifacthub.io/packages/olm/community-operators/clickhouse) | |



\* These add-ons are shipped with the Kubero Operator. They are not High Availability (HA) ready but greate to to get you started as fast as possible.

\*\* All Bitnami add-ons are deprecated and will be removed in future releases due to Broadcom's image repository removal. [read more here](https://github.com/bitnami/charts/issues/35164)

## 164+ Application templates (similar to Heroku Buttons)
- WordPress
Expand Down
7 changes: 7 additions & 0 deletions client/src/components/addons/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@
content="beta"
>
</v-badge>
<v-badge
v-if="addon.deprecated"
color="red"
content="deprecated"
>
</v-badge>
</div>
<v-card-title>
<a :href="addon.url" target="_blank">{{ addon.displayName }}</a>
Expand Down Expand Up @@ -123,6 +129,7 @@ type Addon = {
}[],
url: string,
icon: string,
deprecated: boolean,
beta: boolean,
enabled: boolean,
}
Expand Down
110 changes: 73 additions & 37 deletions client/src/components/apps/addons.vue
Original file line number Diff line number Diff line change
Expand Up @@ -47,56 +47,83 @@


</v-col>
</v-row>

<v-row>
<v-col
cols="12"
md="3">
<v-dialog
v-model="dialog"
persistent
max-width="600px"
>
<template v-slot:activator="{ props }" v-if="showButtons">

<v-col cols="12">
<v-btn
elevation="2"
icon
small
v-bind="props"
@click="openNewDialog()"
>
<v-icon dark >
mdi-plus
</v-icon>
</v-btn>
</v-col>
<v-card
color="cardBackground"
variant="flat"
class="d-flex flex-column align-center justify-center add-addon-card"
style="height: 198.08px; cursor: pointer; border: 2px dashed rgb(var(--v-theme-primary), 0.25); transition: border-color 0.2s;"
v-bind="props"
@click="openNewDialog()"

>
<v-avatar size="57" rounded class="bg-primary-lighten-2 mb-2" style="background-color: rgb(var(--v-theme-secondary));" >
<v-icon size="36">mdi-plus</v-icon>
</v-avatar>
<span class="text-subtitle-1 font-weight-medium mt-2 text-primary">Add Addon</span>
</v-card>
</template>
<v-card>
<v-card-title>
<v-card-title v-if="mode==='create'">
<span class="text-h5">Addon</span>
</v-card-title>
<v-card-title v-if="mode==='edit'">
<v-container class="pb-0">
<v-avatar
size="50"
rounded
:image="selectedAddon.icon"
:alt="selectedAddon.displayName"
></v-avatar>
<span class="text-h5 ml-4">{{ selectedAddon.displayName }}</span>
</v-container>
</v-card-title>
<v-card-text>
<v-container>
<v-container class="pt-0">
<v-row>
<v-col cols="12">
<v-select
:items="availableAddons"
label="Addon"
outlined
item-title="text"
item-value="value"
v-if="mode==='create'"
v-model="selectedAddon"
></v-select>
</v-col>

<v-col cols="12">
<v-text-field
label="Instance Name"
:rules="baseRule"
v-model="selectedAddon.id"
outlined
></v-text-field>
:items="availableAddons"
label="Addon"
outlined
item-title="text"
item-value="value"
v-if="mode==='create'"
v-model="selectedAddon"
>
<template #item="{ item, props }">
<v-list-item v-bind="props">
<template v-slot:prepend>
<v-avatar
v-if="item.value && item.value.icon"
size="24"
class="mr-2"
:image="item.value.icon"
:alt="item.value.displayName"
></v-avatar>
</template>
</v-list-item>
</template>
<template #selection="{ item }">
<v-avatar
v-if="item.value && item.value.icon"
size="24"
class="mr-2"
:image="item.value.icon"
:alt="item.value.displayName"
></v-avatar>
<span>{{ item.value.displayName }}</span>
</template>
</v-select>
</v-col>

<v-col cols="12" v-for="field in selectedAddon.formfields" v-bind:key="field.name">
Expand Down Expand Up @@ -165,7 +192,7 @@
<v-btn
color="blue darken-1"
variant="text"
@click="dialog = false"
@click="dialog = false; selectedAddon = {} as Addon"
>
Close
</v-btn>
Expand All @@ -180,6 +207,7 @@
</v-card-actions>
</v-card>
</v-dialog>
</v-col>
</v-row>
</v-form>
</template>
Expand Down Expand Up @@ -321,7 +349,15 @@ export default defineComponent({
Object.entries(this.selectedAddon.formfields as FormField[]).forEach(([field, value]) => {
const fieldvalue = get(addon.resourceDefinitions, field, value.default)
//console.log(field, value, fieldvalue);
value.default = fieldvalue;

if (value.name === 'metadata.name' && typeof value.default === 'string') {
if (fieldvalue.startsWith(this.appname)) {
// remove appname prefix
value.default = fieldvalue.replace(`${this.appname}-`, '');
}
} else {
value.default = fieldvalue;
}
});
//console.log(this.selectedAddon.formfields);

Expand Down
Loading
Loading