From 4a3097c4da217a7471b874808dbf61f400a161d4 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Tue, 21 Jul 2026 16:43:34 +0600 Subject: [PATCH 1/9] Add kubestash homepage data Signed-off-by: mohin7 --- .../kubestash/homepage/capabilities.json | 5 ++++ data/products/kubestash/homepage/cta.json | 12 +++++++++ data/products/kubestash/homepage/hero.json | 10 +++++++ data/products/kubestash/homepage/stats.json | 8 ++++++ data/products/kubestash/homepage/steps.json | 26 +++++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100644 data/products/kubestash/homepage/capabilities.json create mode 100644 data/products/kubestash/homepage/cta.json create mode 100644 data/products/kubestash/homepage/hero.json create mode 100644 data/products/kubestash/homepage/stats.json create mode 100644 data/products/kubestash/homepage/steps.json diff --git a/data/products/kubestash/homepage/capabilities.json b/data/products/kubestash/homepage/capabilities.json new file mode 100644 index 00000000..ff0b6dc5 --- /dev/null +++ b/data/products/kubestash/homepage/capabilities.json @@ -0,0 +1,5 @@ +{ + "title": "Built for production reliability", + "subtitle": "Enterprise-grade features for encrypted, policy-driven, and verified Kubernetes backup at scale.", + "tags": ["Core", "Recovery", "Security", "Storage", "Performance", "Deployment"] +} diff --git a/data/products/kubestash/homepage/cta.json b/data/products/kubestash/homepage/cta.json new file mode 100644 index 00000000..503f6ce5 --- /dev/null +++ b/data/products/kubestash/homepage/cta.json @@ -0,0 +1,12 @@ +{ + "headline": "Ready to protect your Kubernetes workloads?", + "description": "KubeStash is free to use on any supported Kubernetes cluster. Deploy in minutes with a 30-day free license.", + "cta_primary": "Start Free Trial", + "cta_secondary": "Contact Us", + "trust_points": [ + "No credit card required", + "Works on any Kubernetes distribution", + "Open source core", + "Enterprise support available" + ] +} diff --git a/data/products/kubestash/homepage/hero.json b/data/products/kubestash/homepage/hero.json new file mode 100644 index 00000000..877249c9 --- /dev/null +++ b/data/products/kubestash/homepage/hero.json @@ -0,0 +1,10 @@ +{ + "headline": "Kubernetes-Native Backup & Recovery", + "cta_primary": "Get Started Free", + "cta_secondary": "Talk to Sales", + "trust_items": [ + { "icon": "heroicons:shield-check", "label": "Enterprise Ready" }, + { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, + { "icon": "heroicons:server-stack", "label": "Any Kubernetes Distribution" } + ] +} diff --git a/data/products/kubestash/homepage/stats.json b/data/products/kubestash/homepage/stats.json new file mode 100644 index 00000000..78fe2b10 --- /dev/null +++ b/data/products/kubestash/homepage/stats.json @@ -0,0 +1,8 @@ +{ + "items": [ + { "number": "25+", "label": "Database Engines" }, + { "number": "10K+", "label": "Active Databases Protected" }, + { "number": "30-Day", "label": "Free Trial License" }, + { "number": "99.9%", "label": "Uptime SLA" } + ] +} diff --git a/data/products/kubestash/homepage/steps.json b/data/products/kubestash/homepage/steps.json new file mode 100644 index 00000000..7b0d0c10 --- /dev/null +++ b/data/products/kubestash/homepage/steps.json @@ -0,0 +1,26 @@ +{ + "title": "Backup in 4 steps", + "subtitle": "From zero to automated, encrypted, verified Kubernetes backups — without rewriting your operational runbooks.", + "steps": [ + { + "title": "Install the Operator", + "description": "Deploy KubeStash via Helm into any Kubernetes cluster — EKS, GKE, AKS, or on-prem. One command, three minutes.", + "code": "helm install kubestash …" + }, + { + "title": "Define BackupConfiguration", + "description": "A single Kubernetes-native CRD declares what to back up, the schedule, retention policy, and which storage backend to use.", + "code": "kind: BackupConfiguration" + }, + { + "title": "Monitor Sessions", + "description": "BackupSession objects give you real-time status, per-component snapshots, and structured events — query with kubectl or your existing observability stack.", + "code": "✓ Snapshot verified" + }, + { + "title": "Restore Anytime", + "description": "Create a RestoreSession for full, granular, or point-in-time recovery. Works across namespaces and clusters.", + "code": "kubectl restore --pitr …" + } + ] +} From d5d2dd4e179e975cf3342545a46fafe34a9722f2 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Thu, 23 Jul 2026 17:06:12 +0600 Subject: [PATCH 2/9] Update illustrations Signed-off-by: mohin7 --- data/products/kubedb/databases/cassandra.json | 2 +- .../products/kubedb/databases/clickhouse.json | 2 +- data/products/kubedb/databases/db2.json | 2 +- .../products/kubedb/databases/documentdb.json | 2 +- data/products/kubedb/databases/druid.json | 2 +- .../kubedb/databases/elasticsearch.json | 2 +- data/products/kubedb/databases/hanadb.json | 2 +- data/products/kubedb/databases/hazelcast.json | 2 +- data/products/kubedb/databases/ignite.json | 2 +- data/products/kubedb/databases/kafka.json | 2 +- data/products/kubedb/databases/mariadb.json | 2 +- data/products/kubedb/databases/memcached.json | 2 +- data/products/kubedb/databases/milvus.json | 2 +- data/products/kubedb/databases/mongodb.json | 2 +- .../kubedb/databases/mssqlserver.json | 2 +- data/products/kubedb/databases/mysql.json | 2 +- data/products/kubedb/databases/neo4j.json | 2 +- .../products/kubedb/databases/opensearch.json | 2 +- data/products/kubedb/databases/oracle.json | 2 +- .../kubedb/databases/perconaxtradb.json | 2 +- data/products/kubedb/databases/pgbouncer.json | 2 +- data/products/kubedb/databases/pgpool.json | 2 +- .../products/kubedb/databases/postgresql.json | 2 +- data/products/kubedb/databases/proxysql.json | 2 +- data/products/kubedb/databases/qdrant.json | 2 +- data/products/kubedb/databases/rabbitmq.json | 2 +- data/products/kubedb/databases/redis.json | 2 +- .../kubedb/databases/singlestore.json | 2 +- data/products/kubedb/databases/solr.json | 2 +- data/products/kubedb/databases/valkey.json | 2 +- data/products/kubedb/databases/weaviate.json | 2 +- data/products/kubedb/databases/zookeeper.json | 2 +- data/products/kubeobj.json | 14 +-- data/products/kubestash.json | 68 +++++------ .../kubestash/addons/elasticsearch.json | 16 +-- data/products/kubestash/addons/etcd.json | 16 +-- data/products/kubestash/addons/kubedump.json | 12 +- data/products/kubestash/addons/mariadb.json | 16 +-- data/products/kubestash/addons/mongodb.json | 16 +-- data/products/kubestash/addons/mysql.json | 16 +-- data/products/kubestash/addons/nats.json | 16 +-- .../kubestash/addons/perconaxtradb.json | 16 +-- .../products/kubestash/addons/postgresql.json | 16 +-- data/products/kubestash/addons/redis.json | 16 +-- .../kubestash/homepage/capabilities.json | 2 +- .../kubestash/homepage/final-cta.json | 19 +++ data/products/kubestash/homepage/hero.json | 2 +- data/products/kubestash/homepage/stats.json | 2 +- data/products/kubestash/homepage/steps.json | 2 +- data/products/stash.json | 14 +-- .../stashed/addons/elasticsearch.json | 16 +-- data/products/stashed/addons/etcd.json | 16 +-- data/products/stashed/addons/kubedump.json | 12 +- data/products/stashed/addons/mariadb.json | 16 +-- data/products/stashed/addons/mongodb.json | 16 +-- data/products/stashed/addons/mysql.json | 16 +-- data/products/stashed/addons/nats.json | 16 +-- .../stashed/addons/perconaxtradb.json | 16 +-- data/products/stashed/addons/postgresql.json | 16 +-- data/products/stashed/addons/redis.json | 16 +-- data/products/virtualsecrets.json | 16 +-- .../observability_consulting.json | 2 +- .../backup-restore-databases.svg | 62 ++++++++++ .../addons/illustrations/data-encryption.svg | 72 ++++++++++++ .../addons/illustrations/declarative-api.svg | 110 ++++++++++++++++++ images/addons/illustrations/deduplication.svg | 106 +++++++++++++++++ .../addons/illustrations/logical-backup.svg | 75 ++++++++++++ images/addons/illustrations/monitoring.svg | 62 ++++++++++ .../multiple-storage-support.svg | 73 ++++++++++++ .../illustrations/policy-based-backup.svg | 70 +++++++++++ images/illustrations/backup-database.svg | 65 +++++++++++ .../backup-kubernetes-volumes.svg | 64 ++++++++++ images/illustrations/data-encryption.svg | 72 ++++++++++++ images/illustrations/declarative-api.svg | 110 ++++++++++++++++++ images/illustrations/deduplication.svg | 106 +++++++++++++++++ images/illustrations/monitoring.svg | 62 ++++++++++ .../multiple-storage-support.svg | 73 ++++++++++++ images/illustrations/policy-based-backup.svg | 70 +++++++++++ images/illustrations/volume-snapshot.svg | 77 ++++++++++++ 79 files changed, 1597 insertions(+), 249 deletions(-) create mode 100644 data/products/kubestash/homepage/final-cta.json create mode 100644 images/addons/illustrations/backup-restore-databases.svg create mode 100644 images/addons/illustrations/data-encryption.svg create mode 100644 images/addons/illustrations/declarative-api.svg create mode 100644 images/addons/illustrations/deduplication.svg create mode 100644 images/addons/illustrations/logical-backup.svg create mode 100644 images/addons/illustrations/monitoring.svg create mode 100644 images/addons/illustrations/multiple-storage-support.svg create mode 100644 images/addons/illustrations/policy-based-backup.svg create mode 100644 images/illustrations/backup-database.svg create mode 100644 images/illustrations/backup-kubernetes-volumes.svg create mode 100644 images/illustrations/data-encryption.svg create mode 100644 images/illustrations/declarative-api.svg create mode 100644 images/illustrations/deduplication.svg create mode 100644 images/illustrations/monitoring.svg create mode 100644 images/illustrations/multiple-storage-support.svg create mode 100644 images/illustrations/policy-based-backup.svg create mode 100644 images/illustrations/volume-snapshot.svg diff --git a/data/products/kubedb/databases/cassandra.json b/data/products/kubedb/databases/cassandra.json index a027353f..f5951367 100644 --- a/data/products/kubedb/databases/cassandra.json +++ b/data/products/kubedb/databases/cassandra.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Cassandra database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/clickhouse.json b/data/products/kubedb/databases/clickhouse.json index 8f827fac..0721c2ef 100644 --- a/data/products/kubedb/databases/clickhouse.json +++ b/data/products/kubedb/databases/clickhouse.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your ClickHouse database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/db2.json b/data/products/kubedb/databases/db2.json index caeae8a5..8054c3c3 100644 --- a/data/products/kubedb/databases/db2.json +++ b/data/products/kubedb/databases/db2.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your DB2 database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/documentdb.json b/data/products/kubedb/databases/documentdb.json index b714bd67..af0e2520 100644 --- a/data/products/kubedb/databases/documentdb.json +++ b/data/products/kubedb/databases/documentdb.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your DocumentDB database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/druid.json b/data/products/kubedb/databases/druid.json index 7b3d10f5..0a8c6c79 100644 --- a/data/products/kubedb/databases/druid.json +++ b/data/products/kubedb/databases/druid.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Druid database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/elasticsearch.json b/data/products/kubedb/databases/elasticsearch.json index 95037e2b..dbff314c 100644 --- a/data/products/kubedb/databases/elasticsearch.json +++ b/data/products/kubedb/databases/elasticsearch.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Elasticsearch database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/hanadb.json b/data/products/kubedb/databases/hanadb.json index 5959fbce..393d1750 100644 --- a/data/products/kubedb/databases/hanadb.json +++ b/data/products/kubedb/databases/hanadb.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your HanaDB database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/hazelcast.json b/data/products/kubedb/databases/hazelcast.json index f6962abe..f2466fd1 100644 --- a/data/products/kubedb/databases/hazelcast.json +++ b/data/products/kubedb/databases/hazelcast.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Hazelcast database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/ignite.json b/data/products/kubedb/databases/ignite.json index d2a07baf..35596850 100644 --- a/data/products/kubedb/databases/ignite.json +++ b/data/products/kubedb/databases/ignite.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Ignite database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/kafka.json b/data/products/kubedb/databases/kafka.json index a4867d9a..428b9717 100644 --- a/data/products/kubedb/databases/kafka.json +++ b/data/products/kubedb/databases/kafka.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Kafka database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/mariadb.json b/data/products/kubedb/databases/mariadb.json index ce3fde44..70b0da07 100644 --- a/data/products/kubedb/databases/mariadb.json +++ b/data/products/kubedb/databases/mariadb.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your MariaDB database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/memcached.json b/data/products/kubedb/databases/memcached.json index 54deca8c..0c850e3b 100644 --- a/data/products/kubedb/databases/memcached.json +++ b/data/products/kubedb/databases/memcached.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Memcached database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/milvus.json b/data/products/kubedb/databases/milvus.json index b21d9065..c6c82bd7 100644 --- a/data/products/kubedb/databases/milvus.json +++ b/data/products/kubedb/databases/milvus.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Milvus database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/mongodb.json b/data/products/kubedb/databases/mongodb.json index dd7ca77e..08e93cce 100644 --- a/data/products/kubedb/databases/mongodb.json +++ b/data/products/kubedb/databases/mongodb.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your MongoDB database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/mssqlserver.json b/data/products/kubedb/databases/mssqlserver.json index 877dedc0..f41a1d6d 100644 --- a/data/products/kubedb/databases/mssqlserver.json +++ b/data/products/kubedb/databases/mssqlserver.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Microsoft SQL Server database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/mysql.json b/data/products/kubedb/databases/mysql.json index 700e78ef..9adb74c2 100644 --- a/data/products/kubedb/databases/mysql.json +++ b/data/products/kubedb/databases/mysql.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your MySQL database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/neo4j.json b/data/products/kubedb/databases/neo4j.json index 736f97f5..22ef2c00 100644 --- a/data/products/kubedb/databases/neo4j.json +++ b/data/products/kubedb/databases/neo4j.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Neo4j database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/opensearch.json b/data/products/kubedb/databases/opensearch.json index 5cb20294..62a36d16 100644 --- a/data/products/kubedb/databases/opensearch.json +++ b/data/products/kubedb/databases/opensearch.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your OpenSearch database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/oracle.json b/data/products/kubedb/databases/oracle.json index 85b0cf36..ed7795ac 100644 --- a/data/products/kubedb/databases/oracle.json +++ b/data/products/kubedb/databases/oracle.json @@ -40,7 +40,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "Monitor Oracle Database workloads using Prometheus-compatible metrics and visualize them with Grafana dashboards." }, { diff --git a/data/products/kubedb/databases/perconaxtradb.json b/data/products/kubedb/databases/perconaxtradb.json index 22922b05..981ad431 100644 --- a/data/products/kubedb/databases/perconaxtradb.json +++ b/data/products/kubedb/databases/perconaxtradb.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Percona XtraDB database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/pgbouncer.json b/data/products/kubedb/databases/pgbouncer.json index 06282ed7..e1faacd9 100644 --- a/data/products/kubedb/databases/pgbouncer.json +++ b/data/products/kubedb/databases/pgbouncer.json @@ -33,7 +33,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your PgBouncer in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/pgpool.json b/data/products/kubedb/databases/pgpool.json index 9feed0e8..cea155be 100644 --- a/data/products/kubedb/databases/pgpool.json +++ b/data/products/kubedb/databases/pgpool.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Pgpool database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/postgresql.json b/data/products/kubedb/databases/postgresql.json index dfdd654b..ae2fe12f 100644 --- a/data/products/kubedb/databases/postgresql.json +++ b/data/products/kubedb/databases/postgresql.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your PostgreSQL database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/proxysql.json b/data/products/kubedb/databases/proxysql.json index d9a520c6..5dbc5012 100644 --- a/data/products/kubedb/databases/proxysql.json +++ b/data/products/kubedb/databases/proxysql.json @@ -31,7 +31,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your ProxySQL in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/qdrant.json b/data/products/kubedb/databases/qdrant.json index b7524377..28ba2501 100644 --- a/data/products/kubedb/databases/qdrant.json +++ b/data/products/kubedb/databases/qdrant.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Qdrant database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/rabbitmq.json b/data/products/kubedb/databases/rabbitmq.json index 4c1ae3cd..b93e7ed8 100644 --- a/data/products/kubedb/databases/rabbitmq.json +++ b/data/products/kubedb/databases/rabbitmq.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your RabbitMQ database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/redis.json b/data/products/kubedb/databases/redis.json index b6b000fc..a416dc0d 100644 --- a/data/products/kubedb/databases/redis.json +++ b/data/products/kubedb/databases/redis.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Redis database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/singlestore.json b/data/products/kubedb/databases/singlestore.json index 5ce27330..677a49e4 100644 --- a/data/products/kubedb/databases/singlestore.json +++ b/data/products/kubedb/databases/singlestore.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your SingleStore database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/solr.json b/data/products/kubedb/databases/solr.json index 964941ce..c838faa2 100644 --- a/data/products/kubedb/databases/solr.json +++ b/data/products/kubedb/databases/solr.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Solr database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/valkey.json b/data/products/kubedb/databases/valkey.json index ccb9ea6b..320b020c 100644 --- a/data/products/kubedb/databases/valkey.json +++ b/data/products/kubedb/databases/valkey.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Valkey database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/weaviate.json b/data/products/kubedb/databases/weaviate.json index 892bb1c7..70611727 100644 --- a/data/products/kubedb/databases/weaviate.json +++ b/data/products/kubedb/databases/weaviate.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your Weaviate database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubedb/databases/zookeeper.json b/data/products/kubedb/databases/zookeeper.json index a92b71a3..c7bc3531 100644 --- a/data/products/kubedb/databases/zookeeper.json +++ b/data/products/kubedb/databases/zookeeper.json @@ -43,7 +43,7 @@ }, { "title": "Monitoring", - "image": "/assets/images/databases/illustrations/monitoring.png", + "image": "/assets/images/databases/illustrations/monitoring.svg", "description": "KubeDB comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your ZooKeeper database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { diff --git a/data/products/kubeobj.json b/data/products/kubeobj.json index 7cd19d30..84a48061 100644 --- a/data/products/kubeobj.json +++ b/data/products/kubeobj.json @@ -55,7 +55,7 @@ { "title": "Unified Data Access", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.svg", "alt": "Unified Data Access" }, "icon": { @@ -81,7 +81,7 @@ { "title": "Scalability", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.svg", "alt": "Scalability" }, "icon": { @@ -94,7 +94,7 @@ { "title": "Data Replication Policy", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.svg", "alt": "Data Replication Policy" }, "icon": { @@ -107,7 +107,7 @@ { "title": "High Availability", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.svg", "alt": "High Availability" }, "icon": { @@ -120,7 +120,7 @@ { "title": "Data Migration", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.svg", "alt": "Data Migration" }, "icon": { @@ -146,7 +146,7 @@ { "title": "Monitoring and Analytics", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.svg", "alt": "Monitoring and Analytics" }, "icon": { @@ -159,7 +159,7 @@ { "title": "Kubernetes Native", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.svg", "alt": "Kubernetes Native" }, "icon": { diff --git a/data/products/kubestash.json b/data/products/kubestash.json index 3de136ed..67609433 100644 --- a/data/products/kubestash.json +++ b/data/products/kubestash.json @@ -14,31 +14,31 @@ "keywords": "kubernetes appscode backup disaster recovery volume", "heroSlider": [ { - "src": "https://cdn.appscode.com/images/products/stash/slider/applications.jpg", + "src": "/assets/images/products/stash/slider/applications.jpg", "alt": "Supported Applications" }, { - "src": "https://cdn.appscode.com/images/products/stash/slider/platforms.jpg", + "src": "/assets/images/products/stash/slider/platforms.jpg", "alt": "Supported Platforms" }, { - "src": "https://cdn.appscode.com/images/products/stash/slider/storage.jpg", + "src": "/assets/images/products/stash/slider/storage.jpg", "alt": "Supported Storage" } ], "logo": { - "src": "https://cdn.appscode.com/images/products/kubestash/kubestash.png", + "src": "/assets/images/products/kubestash/kubestash.png", "alt": "kubestash" }, "logoWhite": { - "src": "https://cdn.appscode.com/images/products/kubestash/kubestash-white.png", + "src": "/assets/images/products/kubestash/kubestash-white.png", "alt": "kubestash" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/stash-icon.svg", + "src": "/assets/images/products/stash/stash-icon.svg", "alt": "Stash", "sizes": { - "192x192": "https://cdn.appscode.com/images/products/stash/icons/android-icon-192x192.png" + "192x192": "/assets/images/products/stash/icons/android-icon-192x192.png" } }, "repoURL": "https://github.com/kubestash/docs", @@ -55,11 +55,11 @@ { "title": "Declarative API", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.png", - "alt": "http" + "src": "/assets/images/features/illustrations/declarative-api.svg", + "alt": "A declarative YAML configuration card being applied and reconciled" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/declarative-api.svg", + "src": "/assets/images/products/stash/features/declarative-api.svg", "alt": "http" }, "summary": "", @@ -68,11 +68,11 @@ { "title": "Backup Kubernetes Volumes", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.png", - "alt": "http" + "src": "/assets/images/features/illustrations/backup-kubernetes-volumes.svg", + "alt": "Multiple Kubernetes workloads mounting a shared volume that is continuously backed up" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/vol.svg", + "src": "/assets/images/products/stash/features/vol.svg", "alt": "http" }, "summary": "", @@ -81,11 +81,11 @@ { "title": "Backup Database", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.png", - "alt": "http" + "src": "/assets/images/features/illustrations/backup-database.svg", + "alt": "A database being copied into a point-in-time backup, marked by a clock" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/backup-icon.png", + "src": "/assets/images/products/stash/features/backup-icon.png", "alt": "http" }, "summary": "", @@ -94,11 +94,11 @@ { "title": "Multiple Storage Support", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.png", - "alt": "http" + "src": "/assets/images/features/illustrations/multiple-storage-support.svg", + "alt": "A single backup fanning out to a cloud storage service, a REST server, and a Kubernetes persistent volume" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/storage-icon.png", + "src": "/assets/images/products/stash/features/storage-icon.png", "alt": "http" }, "summary": "", @@ -107,11 +107,11 @@ { "title": "Deduplication", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.png", - "alt": "http" + "src": "/assets/images/features/illustrations/deduplication.svg", + "alt": "A file split into chunks where only the changed blobs, marked with a delta, are uploaded" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/compare-icon.png", + "src": "/assets/images/products/stash/features/compare-icon.png", "alt": "http" }, "summary": "", @@ -120,11 +120,11 @@ { "title": "Data Encryption", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.png", - "alt": "http" + "src": "/assets/images/features/illustrations/data-encryption.svg", + "alt": "Plain data passing through an AES-256 lock and becoming unreadable ciphertext in storage" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/encryption-icon.png", + "src": "/assets/images/products/stash/features/encryption-icon.png", "alt": "http" }, "summary": "", @@ -133,11 +133,11 @@ { "title": "Volume Snapshot", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.png", - "alt": "http" + "src": "/assets/images/features/illustrations/volume-snapshot.svg", + "alt": "A single BackupConfiguration automatically creating a VolumeSnapshot for every volume of a workload" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/volume-snapshot.png", + "src": "/assets/images/products/stash/features/volume-snapshot.png", "alt": "http" }, "summary": "", @@ -146,11 +146,11 @@ { "title": "Policy Based Backup", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.png", - "alt": "http" + "src": "/assets/images/features/illustrations/policy-based-backup.svg", + "alt": "One backup template governing many differently annotated workloads across the cluster" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/policy-based-icon.png", + "src": "/assets/images/products/stash/features/policy-based-icon.png", "alt": "http" }, "summary": "", @@ -159,11 +159,11 @@ { "title": "Monitoring", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.png", - "alt": "http" + "src": "/assets/images/features/illustrations/monitoring.svg", + "alt": "A database's live metrics pulsing into a Grafana-style dashboard of charts and gauges" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/prometheus.svg", + "src": "/assets/images/products/stash/features/prometheus.svg", "alt": "http" }, "summary": "", diff --git a/data/products/kubestash/addons/elasticsearch.json b/data/products/kubestash/addons/elasticsearch.json index 1804acd3..b7103262 100644 --- a/data/products/kubestash/addons/elasticsearch.json +++ b/data/products/kubestash/addons/elasticsearch.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. KubeStash offers Logical Backup for Elasticsearch databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. KubeStash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Kubetash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Backup & Restore Elasticsearch Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Elasticsearch databases deployed in Kubernetes. You can also restore your Elasticsearch databases using Kubetash. Kubetash simplifies the whole process of Backup & Restore your Elasticsearch databases on Kubernetes." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Kubetash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Kubetash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Kubetash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/etcd.json b/data/products/kubestash/addons/etcd.json index 6df573a4..77ea8e88 100644 --- a/data/products/kubestash/addons/etcd.json +++ b/data/products/kubestash/addons/etcd.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Etcd databases on Kubernetes." }, { "title": "Backup & Restore Etcd Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Etcd databases deployed in Kubernetes. You can also restore your Etcd databases using Stash. Stash simplifies the whole process of Backup & Restore your Etcd databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/kubedump.json b/data/products/kubestash/addons/kubedump.json index fa0127aa..6d2029cd 100644 --- a/data/products/kubestash/addons/kubedump.json +++ b/data/products/kubestash/addons/kubedump.json @@ -29,32 +29,32 @@ }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/mariadb.json b/data/products/kubestash/addons/mariadb.json index 2fbed16d..11a4ce05 100644 --- a/data/products/kubestash/addons/mariadb.json +++ b/data/products/kubestash/addons/mariadb.json @@ -18,42 +18,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Kubestash offers Logical Backup for MariaDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Kubestash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Kubestash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Backup & Restore MariaDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MariaDB databases deployed in Kubernetes. You can also restore your MariaDB databases using Kubestash. Kubestash simplifies the whole process of Backup & Restore your MariaDB databases on Kubernetes." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Kubestash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Kubestash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Kubestash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" } ], diff --git a/data/products/kubestash/addons/mongodb.json b/data/products/kubestash/addons/mongodb.json index dde68ea0..6e6df99b 100644 --- a/data/products/kubestash/addons/mongodb.json +++ b/data/products/kubestash/addons/mongodb.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for MongoDB databases on Kubernetes." }, { "title": "Backup & Restore MongoDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MongoDB databases deployed in Kubernetes. You can also restore your MongoDB databases using Stash. Stash simplifies the whole process of Backup & Restore your MongoDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/mysql.json b/data/products/kubestash/addons/mysql.json index 941061a3..76ad32e4 100644 --- a/data/products/kubestash/addons/mysql.json +++ b/data/products/kubestash/addons/mysql.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. KubeStash offers Logical Backup for MySQL databases on Kubernetes." }, { "title": "Backup & Restore MySQL Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MySQL databases deployed in Kubernetes. You can also restore your MySQL databases using KubeStash. KubeStash simplifies the whole process of Backup & Restore your MySQL databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. KubeStash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "KubeStash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. KubeStash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "KubeStash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. KubeStash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/nats.json b/data/products/kubestash/addons/nats.json index fd405748..22f7064f 100644 --- a/data/products/kubestash/addons/nats.json +++ b/data/products/kubestash/addons/nats.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for NATS server on Kubernetes." }, { "title": "Backup & Restore NATS Server", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your NATS server deployed in Kubernetes. You can also restore your NATS server using Stash. Stash simplifies the whole process of Backup & Restore your NATS server on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/perconaxtradb.json b/data/products/kubestash/addons/perconaxtradb.json index 8498fd80..7c0053f8 100644 --- a/data/products/kubestash/addons/perconaxtradb.json +++ b/data/products/kubestash/addons/perconaxtradb.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Percona XtraDB databases on Kubernetes." }, { "title": "Backup & Restore Percona XtraDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Percona XtraDB databases deployed in Kubernetes. You can also restore your Percona XtraDB databases using Stash. Stash simplifies the whole process of Backup & Restore your Percona XtraDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/postgresql.json b/data/products/kubestash/addons/postgresql.json index 15d0f761..d85a9105 100644 --- a/data/products/kubestash/addons/postgresql.json +++ b/data/products/kubestash/addons/postgresql.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. KubeStash offers Logical Backup for PostgreSQL databases on Kubernetes." }, { "title": "Backup & Restore PostgreSQL Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your PostgreSQL databases deployed in Kubernetes. You can also restore your PostgreSQL databases using KubeStash. KubeStash simplifies the whole process of Backup & Restore your PostgreSQL databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. KubeStash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "KubeStash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. KubeStash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "KubeStash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. KubeStash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/addons/redis.json b/data/products/kubestash/addons/redis.json index 65c7e828..4bf95431 100644 --- a/data/products/kubestash/addons/redis.json +++ b/data/products/kubestash/addons/redis.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Redis databases on Kubernetes." }, { "title": "Backup & Restore Redis Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Redis databases deployed in Kubernetes. You can also restore your Redis databases using Stash. Stash simplifies the whole process of Backup & Restore your Redis databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/kubestash/homepage/capabilities.json b/data/products/kubestash/homepage/capabilities.json index ff0b6dc5..4cf5f9fe 100644 --- a/data/products/kubestash/homepage/capabilities.json +++ b/data/products/kubestash/homepage/capabilities.json @@ -2,4 +2,4 @@ "title": "Built for production reliability", "subtitle": "Enterprise-grade features for encrypted, policy-driven, and verified Kubernetes backup at scale.", "tags": ["Core", "Recovery", "Security", "Storage", "Performance", "Deployment"] -} +} \ No newline at end of file diff --git a/data/products/kubestash/homepage/final-cta.json b/data/products/kubestash/homepage/final-cta.json new file mode 100644 index 00000000..8fc8bea7 --- /dev/null +++ b/data/products/kubestash/homepage/final-cta.json @@ -0,0 +1,19 @@ +{ + "badge": "Start Protecting Today", + "title_plain": "Ready to Safeguard Your", + "title_gradient": "Kubernetes Workloads?", + "description": "Join platform teams running encrypted, verified, disaster-recovery-ready backups for databases and volumes on Kubernetes with KubeStash.", + "checklist": [ + "Encrypted, deduplicated backups by default", + "Multi-cloud & on-prem storage portability", + "Point-in-time recovery for databases & volumes" + ], + "cta_primary": "Start Free Trial", + "cta_secondary": "Talk to Sales", + "stats": [ + { "icon": "lucide:hard-drive-download", "value": "12+", "label": "Storage Backends", "gradient": "linear-gradient(135deg, #60a5fa, #06b6d4)" }, + { "icon": "lucide:shield-check", "value": "AES-256", "label": "Backup Encryption", "gradient": "linear-gradient(135deg, #4ade80, #10b981)" }, + { "icon": "lucide:history", "value": "PITR", "label": "Point-in-Time Recovery", "gradient": "linear-gradient(135deg, #c084fc, #ec4899)" }, + { "icon": "lucide:life-buoy", "value": "24/7", "label": "Expert Support", "gradient": "linear-gradient(135deg, #fb923c, #ef4444)" } + ] +} diff --git a/data/products/kubestash/homepage/hero.json b/data/products/kubestash/homepage/hero.json index 877249c9..03ac5c61 100644 --- a/data/products/kubestash/homepage/hero.json +++ b/data/products/kubestash/homepage/hero.json @@ -7,4 +7,4 @@ { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, { "icon": "heroicons:server-stack", "label": "Any Kubernetes Distribution" } ] -} +} \ No newline at end of file diff --git a/data/products/kubestash/homepage/stats.json b/data/products/kubestash/homepage/stats.json index 78fe2b10..2b4f9dab 100644 --- a/data/products/kubestash/homepage/stats.json +++ b/data/products/kubestash/homepage/stats.json @@ -5,4 +5,4 @@ { "number": "30-Day", "label": "Free Trial License" }, { "number": "99.9%", "label": "Uptime SLA" } ] -} +} \ No newline at end of file diff --git a/data/products/kubestash/homepage/steps.json b/data/products/kubestash/homepage/steps.json index 7b0d0c10..7248b23f 100644 --- a/data/products/kubestash/homepage/steps.json +++ b/data/products/kubestash/homepage/steps.json @@ -23,4 +23,4 @@ "code": "kubectl restore --pitr …" } ] -} +} \ No newline at end of file diff --git a/data/products/stash.json b/data/products/stash.json index ccbc0157..7b60e286 100644 --- a/data/products/stash.json +++ b/data/products/stash.json @@ -60,7 +60,7 @@ { "title": "Declarative API", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.svg", "alt": "http" }, "icon": { @@ -86,7 +86,7 @@ { "title": "Backup Database", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.svg", "alt": "http" }, "icon": { @@ -99,7 +99,7 @@ { "title": "Multiple Storage Support", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.svg", "alt": "http" }, "icon": { @@ -112,7 +112,7 @@ { "title": "Deduplication", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.svg", "alt": "http" }, "icon": { @@ -125,7 +125,7 @@ { "title": "Data Encryption", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.svg", "alt": "http" }, "icon": { @@ -151,7 +151,7 @@ { "title": "Policy Based Backup", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.svg", "alt": "http" }, "icon": { @@ -164,7 +164,7 @@ { "title": "Monitoring", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.svg", "alt": "http" }, "icon": { diff --git a/data/products/stashed/addons/elasticsearch.json b/data/products/stashed/addons/elasticsearch.json index 69873b65..d5be7e94 100644 --- a/data/products/stashed/addons/elasticsearch.json +++ b/data/products/stashed/addons/elasticsearch.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Elasticsearch databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Backup & Restore Elasticsearch Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Elasticsearch databases deployed in Kubernetes. You can also restore your Elasticsearch databases using Stash. Stash simplifies the whole process of Backup & Restore your Elasticsearch databases on Kubernetes." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/etcd.json b/data/products/stashed/addons/etcd.json index 6df573a4..77ea8e88 100644 --- a/data/products/stashed/addons/etcd.json +++ b/data/products/stashed/addons/etcd.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Etcd databases on Kubernetes." }, { "title": "Backup & Restore Etcd Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Etcd databases deployed in Kubernetes. You can also restore your Etcd databases using Stash. Stash simplifies the whole process of Backup & Restore your Etcd databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/kubedump.json b/data/products/stashed/addons/kubedump.json index fa0127aa..6d2029cd 100644 --- a/data/products/stashed/addons/kubedump.json +++ b/data/products/stashed/addons/kubedump.json @@ -29,32 +29,32 @@ }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/mariadb.json b/data/products/stashed/addons/mariadb.json index 1ff1fd2f..259138f4 100644 --- a/data/products/stashed/addons/mariadb.json +++ b/data/products/stashed/addons/mariadb.json @@ -18,42 +18,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for MariaDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Backup & Restore MariaDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MariaDB databases deployed in Kubernetes. You can also restore your MariaDB databases using Stash. Stash simplifies the whole process of Backup & Restore your MariaDB databases on Kubernetes." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" } ], diff --git a/data/products/stashed/addons/mongodb.json b/data/products/stashed/addons/mongodb.json index dde68ea0..6e6df99b 100644 --- a/data/products/stashed/addons/mongodb.json +++ b/data/products/stashed/addons/mongodb.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for MongoDB databases on Kubernetes." }, { "title": "Backup & Restore MongoDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MongoDB databases deployed in Kubernetes. You can also restore your MongoDB databases using Stash. Stash simplifies the whole process of Backup & Restore your MongoDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/mysql.json b/data/products/stashed/addons/mysql.json index 0f55858f..46977b1b 100644 --- a/data/products/stashed/addons/mysql.json +++ b/data/products/stashed/addons/mysql.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for MySQL databases on Kubernetes." }, { "title": "Backup & Restore MySQL Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your MySQL databases deployed in Kubernetes. You can also restore your MySQL databases using Stash. Stash simplifies the whole process of Backup & Restore your MySQL databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/nats.json b/data/products/stashed/addons/nats.json index fd405748..22f7064f 100644 --- a/data/products/stashed/addons/nats.json +++ b/data/products/stashed/addons/nats.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for NATS server on Kubernetes." }, { "title": "Backup & Restore NATS Server", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your NATS server deployed in Kubernetes. You can also restore your NATS server using Stash. Stash simplifies the whole process of Backup & Restore your NATS server on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/perconaxtradb.json b/data/products/stashed/addons/perconaxtradb.json index 8498fd80..7c0053f8 100644 --- a/data/products/stashed/addons/perconaxtradb.json +++ b/data/products/stashed/addons/perconaxtradb.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Percona XtraDB databases on Kubernetes." }, { "title": "Backup & Restore Percona XtraDB Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Percona XtraDB databases deployed in Kubernetes. You can also restore your Percona XtraDB databases using Stash. Stash simplifies the whole process of Backup & Restore your Percona XtraDB databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/postgresql.json b/data/products/stashed/addons/postgresql.json index ebb156a8..2e942482 100644 --- a/data/products/stashed/addons/postgresql.json +++ b/data/products/stashed/addons/postgresql.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for PostgreSQL databases on Kubernetes." }, { "title": "Backup & Restore PostgreSQL Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your PostgreSQL databases deployed in Kubernetes. You can also restore your PostgreSQL databases using Stash. Stash simplifies the whole process of Backup & Restore your PostgreSQL databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/stashed/addons/redis.json b/data/products/stashed/addons/redis.json index 65c7e828..4bf95431 100644 --- a/data/products/stashed/addons/redis.json +++ b/data/products/stashed/addons/redis.json @@ -19,42 +19,42 @@ "features": [ { "title": "Logical Backup", - "image": "/assets/images/addons/illustrations/logical-backup.png", + "image": "/assets/images/addons/illustrations/logical-backup.svg", "description": "A logical backup contains copies of database information (such as tables, schemas, and procedures) and is often exported as a binary file utilizing EXPORT/IMPORT tools. Logical backups are useful if you need to restore or relocate a copy of the database to another environment. Stash offers Logical Backup for Redis databases on Kubernetes." }, { "title": "Backup & Restore Redis Databases", - "image": "/assets/images/addons/illustrations/backup-restore-databases.png", + "image": "/assets/images/addons/illustrations/backup-restore-databases.svg", "description": "Backup your Redis databases deployed in Kubernetes. You can also restore your Redis databases using Stash. Stash simplifies the whole process of Backup & Restore your Redis databases on Kubernetes." }, { "title": "Declarative API", - "image": "/assets/images/addons/illustrations/declarative-api.png", + "image": "/assets/images/addons/illustrations/declarative-api.svg", "description": "Backup your data in Kubernetes native way. Stash uses Custom Resource Definition (CRD) to specify targets and behaviors of the backup and restore process. Schedule a backup for your workloads in the same way you deployed them into Kubernetes." }, { "title": "Deduplication", - "image": "/assets/images/addons/illustrations/deduplication.png", + "image": "/assets/images/addons/illustrations/deduplication.svg", "description": "Stash will upload only the diff since the last backup. It splits the targeted files into smaller blobs using Content Defined Chunking (CDC) and uploads only the modified blobs." }, { "title": "Data Encryption", - "image": "/assets/images/addons/illustrations/data-encryption.png", + "image": "/assets/images/addons/illustrations/data-encryption.svg", "description": "To provide data security, your data needs to be encrypted during the whole process. Stash keeps all the backed up data encrypted using AES-256. So, your data is protected even if it leaks from the backend. And it will not make any sense until they are decrypted." }, { "title": "Monitoring", - "image": "/assets/images/addons/illustrations/monitoring.png", + "image": "/assets/images/addons/illustrations/monitoring.svg", "description": "Stash comes with native support for monitoring via Prometheus. You can use builtin Prometheus scrapper or CoreOS Prometheus Operator to monitor your database in Kubernetes. You can use the Grafana to view key operational metrics, including compute/memory/storage capacity utilization, I/O activity, and instance connections." }, { "title": "Policy Based Backup", - "image": "/assets/images/addons/illustrations/policy-based-backup.png", + "image": "/assets/images/addons/illustrations/policy-based-backup.svg", "description": "Define a common template to backup all similar types of workloads. Then, just add some annotations to your targeted workload to enable backup for it. You can use a single template to backup all the Deployments, StatefulSets, DaemonSets, ReplicationControllers and ReplicaSets of your entire cluster" }, { "title": "Multiple Storage Support", - "image": "/assets/images/addons/illustrations/multiple-storage-support.png", + "image": "/assets/images/addons/illustrations/multiple-storage-support.svg", "description": "You can store your backed up data into various storage services. Stash supports AWS S3, Minio, Rook, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, DigitalOcean Spaces, Blackbaze B2 and REST server as backend. You can also use Kubernetes persistent volumes as backend." } ], diff --git a/data/products/virtualsecrets.json b/data/products/virtualsecrets.json index d5adc816..8028ffbf 100644 --- a/data/products/virtualsecrets.json +++ b/data/products/virtualsecrets.json @@ -55,7 +55,7 @@ { "title": "Extended API Resource", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/declarative-api.svg", "alt": "Extended API Resource" }, "icon": { @@ -81,7 +81,7 @@ { "title": "SecretSource Integration", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-restore-databases.svg", "alt": "SecretSource Integration" }, "icon": { @@ -94,7 +94,7 @@ { "title": "External Secret Storage", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/multiple-storage-support.svg", "alt": "External Secret Storage" }, "icon": { @@ -107,7 +107,7 @@ { "title": "CSI Driver Integration", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/deduplication.svg", "alt": "CSI Driver Integration" }, "icon": { @@ -120,7 +120,7 @@ { "title": "Kubernetes Secret Generation", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/data-encryption.svg", "alt": "Kubernetes Secret Generation" }, "icon": { @@ -146,7 +146,7 @@ { "title": "KubeDB Integration", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/policy-based-backup.svg", "alt": "KubeDB Integration" }, "icon": { @@ -159,7 +159,7 @@ { "title": "Multi-Provider Support", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.svg", "alt": "Multi-Provider Support" }, "icon": { @@ -172,7 +172,7 @@ { "title": "Multi-Replica Support", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/monitoring.svg", "alt": "Multi-Replica Support" }, "icon": { diff --git a/data/services/observability-devsecops/observability_consulting.json b/data/services/observability-devsecops/observability_consulting.json index 9d4bd6a7..cfc9daed 100644 --- a/data/services/observability-devsecops/observability_consulting.json +++ b/data/services/observability-devsecops/observability_consulting.json @@ -61,7 +61,7 @@ "Create Prometheus alerts to detect failures early", "Enable predictive monitoring for smarter capacity planning" ], - "image": "/assets/images/services/observability-infrastructure-monitoring.png" + "image": "/assets/images/services/observability-infrastructure-monitoring.svg" }, { "title": "Centralized Logging with Loki, Fluentd & Elastic", diff --git a/images/addons/illustrations/backup-restore-databases.svg b/images/addons/illustrations/backup-restore-databases.svg new file mode 100644 index 00000000..93f4f415 --- /dev/null +++ b/images/addons/illustrations/backup-restore-databases.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/data-encryption.svg b/images/addons/illustrations/data-encryption.svg new file mode 100644 index 00000000..ee2462c8 --- /dev/null +++ b/images/addons/illustrations/data-encryption.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/declarative-api.svg b/images/addons/illustrations/declarative-api.svg new file mode 100644 index 00000000..93a9836b --- /dev/null +++ b/images/addons/illustrations/declarative-api.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/deduplication.svg b/images/addons/illustrations/deduplication.svg new file mode 100644 index 00000000..c08848d4 --- /dev/null +++ b/images/addons/illustrations/deduplication.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/logical-backup.svg b/images/addons/illustrations/logical-backup.svg new file mode 100644 index 00000000..1148b1b7 --- /dev/null +++ b/images/addons/illustrations/logical-backup.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/monitoring.svg b/images/addons/illustrations/monitoring.svg new file mode 100644 index 00000000..eb988ad9 --- /dev/null +++ b/images/addons/illustrations/monitoring.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/multiple-storage-support.svg b/images/addons/illustrations/multiple-storage-support.svg new file mode 100644 index 00000000..e3c4180c --- /dev/null +++ b/images/addons/illustrations/multiple-storage-support.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/policy-based-backup.svg b/images/addons/illustrations/policy-based-backup.svg new file mode 100644 index 00000000..30352fa9 --- /dev/null +++ b/images/addons/illustrations/policy-based-backup.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/backup-database.svg b/images/illustrations/backup-database.svg new file mode 100644 index 00000000..fb2e111d --- /dev/null +++ b/images/illustrations/backup-database.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/backup-kubernetes-volumes.svg b/images/illustrations/backup-kubernetes-volumes.svg new file mode 100644 index 00000000..5b39a751 --- /dev/null +++ b/images/illustrations/backup-kubernetes-volumes.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/data-encryption.svg b/images/illustrations/data-encryption.svg new file mode 100644 index 00000000..ee2462c8 --- /dev/null +++ b/images/illustrations/data-encryption.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/declarative-api.svg b/images/illustrations/declarative-api.svg new file mode 100644 index 00000000..93a9836b --- /dev/null +++ b/images/illustrations/declarative-api.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/deduplication.svg b/images/illustrations/deduplication.svg new file mode 100644 index 00000000..c08848d4 --- /dev/null +++ b/images/illustrations/deduplication.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/monitoring.svg b/images/illustrations/monitoring.svg new file mode 100644 index 00000000..eb988ad9 --- /dev/null +++ b/images/illustrations/monitoring.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/multiple-storage-support.svg b/images/illustrations/multiple-storage-support.svg new file mode 100644 index 00000000..e3c4180c --- /dev/null +++ b/images/illustrations/multiple-storage-support.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/policy-based-backup.svg b/images/illustrations/policy-based-backup.svg new file mode 100644 index 00000000..30352fa9 --- /dev/null +++ b/images/illustrations/policy-based-backup.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/illustrations/volume-snapshot.svg b/images/illustrations/volume-snapshot.svg new file mode 100644 index 00000000..e9d67d8a --- /dev/null +++ b/images/illustrations/volume-snapshot.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 051984ea39cc87de821ecc04f7d51169d30e08f1 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 10:26:38 +0600 Subject: [PATCH 3/9] Update orange logo Signed-off-by: mohin7 --- images/customers/logos/orange.png | Bin 2323 -> 70838 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/customers/logos/orange.png b/images/customers/logos/orange.png index facc4c29cf21d9c8e7bc7d1d9000ab03d00915f0..feaeea511f7e0194e7a9acfdb9eded9f6b85a53f 100644 GIT binary patch literal 70838 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 u5*JZ#B?&LP literal 2323 zcmV+u3GDWXP)Px#4^T{0MgRZ*?Q917-pBEeLG`qMXf2t(j!ZbBiSPIO zDAMcr;~`^hp0jY;v-cWFyXVixZx7=7AjHi?s&sZ7;$qTfrPCu3r_aXD^8#JEHqhj^kL7bkffV$_Uh&%2= zjwItzrTdZgKr)uo-nu)IjOFi%@jxT~lOJ6qJQnpgEu z?eaD~nh{eYt7kL0znR5whk4FR^Zfbx$MX{$LN7{IIs$x_#j_op0;+atRj$ZR9vwA{ z7sU3X&Om$Xzf+1hf&E1zEA19T5m)emDo}ftn={lrF!3EuY-z$gIWYxk0gPrr zJU{%Bu|z8WYOtf#PDh=8963&0ARTs5#633V--M(~tl$_Lw04aVSKeuT#PV z)4gOa@fi?#YNw7Jd*=o5TPShCn7r7{2hzq&T!67E#(a5YTnpA?@1Zn|rq=l_%de1I zl!7rxFG|W&>bbFmek9+l)QdJ0rH>2Z>9DgnLcQm_S=|LfT(EosdojM0ro3Toki_pL zHg#lhLhU%a-WyE!EtKo|e8XuLes(%=%H^qzx9=*P)u=*DgWh<*kTX{ZIVR%)c7dT7 z_k3iW=}QgVnw}!fcph`*TA8A~Y|_|nLwbojXP%8?U9W+h5#q!(2S?4=W_-bBfpNI1 zz_zx5l^b^krH}Z6DY}767;;$6;>;M^VNC}-g!o#T(SocVYY(w@np^5{M-L=%i3{&$ zjpMq0&=Y0@J5to4>NSiG+rv4nrN}Oz^9-cdLsna!fMv=AP$T-9NN9`GiW9|t$Tp8o6amh&!@rCdG zVIMixF(l4~$GjBoq#~TPBsQfzXj$<$Hd2!^MqNb>YMt=ig0ZbVMJJg-oDln!f+Wr( zwlu=yZAju8cdX!SnxX>AV-_dl{amqwhG)HzmeC&!K{hhk@8lK+B?tMFR!VOkxK zF*57T8seTsocuquIv`^=d^{Ap_FNLlM;2@B_>YLiKVO|dj5E7^vJm%(3Ix)8cC4=+k0O znDOEkGMa4k!wZw|>aw?LT7oqnM$42(DwZz2KE_xC^ zVstt0*VwVdeG(bH{R3iV^ft#mX~)V*c!*;o^z3UcbU6Kl3orK(OVlQsZN!?Dg#pAD zK5}dpCQK|>ot>gHZ6{k*2R1RDX;ZM_0C9$|(GhmMAogZcDRbxFQ7j^}sbONZPR3Yf z3(1)Glp(Q^(L}X-XCb8329-+;u|yKoz2}aAqx^Zav(~Iz5xH+?2DjQV!~)(20^t?s zvO)?2Pw^MnE=cGqXA;+F6ez}yErCwR5`CpYA`+^&nQgc#%z`RBx0`bBA_f9|Q8Koo zDOuY#p(~HCt$f8#<~tpgj+8nkF@A|Kia6oLb9#7Ot75MyDsVZ_P7fMCaSzqM(yNID zk62k39tZ2jBlGrc+%?ghQjo_z)Z6NKwea6Deb<%S0((y229!ELY)yE(C7UWjmv0SY zyi9McINdOaw?*g$`>g@R5D>b(Btv+ek-tp z3_ZQ?<_qk38}altACE-kfaH(g5A|Dt!S`FVjvKJQ;ey&~K6;k$S+uUF!TF0lXkzQo zk_}>2dA}XjMz-*}!Pc&gnsWjcZm;c&cSE=5^ZkAw$`zA!v%YTT9}s8Ma7!chRW|3D zKCQ^Z5hwd6Hl}2*iXUGJ?LAtgdnQKTirOLZ4|eR6u_3HaD(G8t{XvMauaD?{V;CPh$FA zv7L(8^Rk%PEAbzs&^|Weu|9>i2j`WUJrg6QymR0Y8QAi5@4( Date: Fri, 24 Jul 2026 10:57:33 +0600 Subject: [PATCH 4/9] Update illustrations Signed-off-by: mohin7 --- data/products/kubeobj.json | 4 +- data/products/kubestash.json | 2 +- data/products/stash.json | 6 +- data/products/virtualsecrets.json | 4 +- .../backup-kubernetes-volumes.png | Bin 25506 -> 0 bytes .../backup-kubernetes-volumes.svg | 64 +++++++++++++++ .../addons/illustrations/volume-snapshot.png | Bin 21240 -> 0 bytes .../addons/illustrations/volume-snapshot.svg | 77 ++++++++++++++++++ 8 files changed, 149 insertions(+), 8 deletions(-) delete mode 100644 images/addons/illustrations/backup-kubernetes-volumes.png create mode 100644 images/addons/illustrations/backup-kubernetes-volumes.svg delete mode 100644 images/addons/illustrations/volume-snapshot.png create mode 100644 images/addons/illustrations/volume-snapshot.svg diff --git a/data/products/kubeobj.json b/data/products/kubeobj.json index 84a48061..63bb7a93 100644 --- a/data/products/kubeobj.json +++ b/data/products/kubeobj.json @@ -68,7 +68,7 @@ { "title": "Multi-Cloud Federation", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.svg", "alt": "Multi-Cloud Federation" }, "icon": { @@ -133,7 +133,7 @@ { "title": "Policy-Based Data Management", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.svg", "alt": "Policy-Based Data Management" }, "icon": { diff --git a/data/products/kubestash.json b/data/products/kubestash.json index 67609433..4ed16e00 100644 --- a/data/products/kubestash.json +++ b/data/products/kubestash.json @@ -137,7 +137,7 @@ "alt": "A single BackupConfiguration automatically creating a VolumeSnapshot for every volume of a workload" }, "icon": { - "src": "/assets/images/products/stash/features/volume-snapshot.png", + "src": "/assets/images/products/stash/features/volume-snapshot.svg", "alt": "http" }, "summary": "", diff --git a/data/products/stash.json b/data/products/stash.json index 7b60e286..454b1d88 100644 --- a/data/products/stash.json +++ b/data/products/stash.json @@ -73,7 +73,7 @@ { "title": "Backup Kubernetes Volumes", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.svg", "alt": "http" }, "icon": { @@ -138,11 +138,11 @@ { "title": "Volume Snapshot", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.svg", "alt": "http" }, "icon": { - "src": "https://cdn.appscode.com/images/products/stash/features/volume-snapshot.png", + "src": "https://cdn.appscode.com/images/products/stash/features/volume-snapshot.svg", "alt": "http" }, "summary": "", diff --git a/data/products/virtualsecrets.json b/data/products/virtualsecrets.json index 8028ffbf..0df56b29 100644 --- a/data/products/virtualsecrets.json +++ b/data/products/virtualsecrets.json @@ -68,7 +68,7 @@ { "title": "Read/Write/Mount Operations", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/backup-kubernetes-volumes.svg", "alt": "Read/Write/Mount Operations" }, "icon": { @@ -133,7 +133,7 @@ { "title": "In-Memory Watch", "image": { - "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.png", + "src": "https://cdn.appscode.com/images/addons/illustrations/volume-snapshot.svg", "alt": "In-Memory Watch" }, "icon": { diff --git a/images/addons/illustrations/backup-kubernetes-volumes.png b/images/addons/illustrations/backup-kubernetes-volumes.png deleted file mode 100644 index 201e4fc2d47a0b48899a23322c6b30de3eb59452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25506 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 diff --git a/images/addons/illustrations/backup-kubernetes-volumes.svg b/images/addons/illustrations/backup-kubernetes-volumes.svg new file mode 100644 index 00000000..5b39a751 --- /dev/null +++ b/images/addons/illustrations/backup-kubernetes-volumes.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/addons/illustrations/volume-snapshot.png b/images/addons/illustrations/volume-snapshot.png deleted file mode 100644 index a8bcff0a266ec0807fdbc22002794270fd81ed4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21240 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 F{{X@HZ9D(~ diff --git a/images/addons/illustrations/volume-snapshot.svg b/images/addons/illustrations/volume-snapshot.svg new file mode 100644 index 00000000..e9d67d8a --- /dev/null +++ b/images/addons/illustrations/volume-snapshot.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4bc7c4af0f82790646c0f739c81e672d0e8e7514 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 11:41:43 +0600 Subject: [PATCH 5/9] Rename stashed folder stash Signed-off-by: mohin7 --- .../addons/elasticsearch.json | 0 .../{stashed => stash}/addons/etcd.json | 0 .../{stashed => stash}/addons/kubedump.json | 0 .../{stashed => stash}/addons/mariadb.json | 0 .../{stashed => stash}/addons/mongodb.json | 0 .../{stashed => stash}/addons/mysql.json | 0 .../{stashed => stash}/addons/nats.json | 0 .../addons/perconaxtradb.json | 0 .../{stashed => stash}/addons/postgresql.json | 0 .../{stashed => stash}/addons/redis.json | 0 .../products/stash/homepage/capabilities.json | 5 ++++ data/products/stash/homepage/cta.json | 12 +++++++++ data/products/stash/homepage/final-cta.json | 19 ++++++++++++++ data/products/stash/homepage/hero.json | 10 +++++++ data/products/stash/homepage/stats.json | 8 ++++++ data/products/stash/homepage/steps.json | 26 +++++++++++++++++++ 16 files changed, 80 insertions(+) rename data/products/{stashed => stash}/addons/elasticsearch.json (100%) rename data/products/{stashed => stash}/addons/etcd.json (100%) rename data/products/{stashed => stash}/addons/kubedump.json (100%) rename data/products/{stashed => stash}/addons/mariadb.json (100%) rename data/products/{stashed => stash}/addons/mongodb.json (100%) rename data/products/{stashed => stash}/addons/mysql.json (100%) rename data/products/{stashed => stash}/addons/nats.json (100%) rename data/products/{stashed => stash}/addons/perconaxtradb.json (100%) rename data/products/{stashed => stash}/addons/postgresql.json (100%) rename data/products/{stashed => stash}/addons/redis.json (100%) create mode 100644 data/products/stash/homepage/capabilities.json create mode 100644 data/products/stash/homepage/cta.json create mode 100644 data/products/stash/homepage/final-cta.json create mode 100644 data/products/stash/homepage/hero.json create mode 100644 data/products/stash/homepage/stats.json create mode 100644 data/products/stash/homepage/steps.json diff --git a/data/products/stashed/addons/elasticsearch.json b/data/products/stash/addons/elasticsearch.json similarity index 100% rename from data/products/stashed/addons/elasticsearch.json rename to data/products/stash/addons/elasticsearch.json diff --git a/data/products/stashed/addons/etcd.json b/data/products/stash/addons/etcd.json similarity index 100% rename from data/products/stashed/addons/etcd.json rename to data/products/stash/addons/etcd.json diff --git a/data/products/stashed/addons/kubedump.json b/data/products/stash/addons/kubedump.json similarity index 100% rename from data/products/stashed/addons/kubedump.json rename to data/products/stash/addons/kubedump.json diff --git a/data/products/stashed/addons/mariadb.json b/data/products/stash/addons/mariadb.json similarity index 100% rename from data/products/stashed/addons/mariadb.json rename to data/products/stash/addons/mariadb.json diff --git a/data/products/stashed/addons/mongodb.json b/data/products/stash/addons/mongodb.json similarity index 100% rename from data/products/stashed/addons/mongodb.json rename to data/products/stash/addons/mongodb.json diff --git a/data/products/stashed/addons/mysql.json b/data/products/stash/addons/mysql.json similarity index 100% rename from data/products/stashed/addons/mysql.json rename to data/products/stash/addons/mysql.json diff --git a/data/products/stashed/addons/nats.json b/data/products/stash/addons/nats.json similarity index 100% rename from data/products/stashed/addons/nats.json rename to data/products/stash/addons/nats.json diff --git a/data/products/stashed/addons/perconaxtradb.json b/data/products/stash/addons/perconaxtradb.json similarity index 100% rename from data/products/stashed/addons/perconaxtradb.json rename to data/products/stash/addons/perconaxtradb.json diff --git a/data/products/stashed/addons/postgresql.json b/data/products/stash/addons/postgresql.json similarity index 100% rename from data/products/stashed/addons/postgresql.json rename to data/products/stash/addons/postgresql.json diff --git a/data/products/stashed/addons/redis.json b/data/products/stash/addons/redis.json similarity index 100% rename from data/products/stashed/addons/redis.json rename to data/products/stash/addons/redis.json diff --git a/data/products/stash/homepage/capabilities.json b/data/products/stash/homepage/capabilities.json new file mode 100644 index 00000000..ae7f3caf --- /dev/null +++ b/data/products/stash/homepage/capabilities.json @@ -0,0 +1,5 @@ +{ + "title": "Built for Kubernetes-native disaster recovery", + "subtitle": "A complete disaster recovery solution for backing up and restoring volumes and databases in Kubernetes, on any public or private cloud.", + "tags": ["Core", "Volumes", "Databases", "Storage", "Performance", "Security"] +} diff --git a/data/products/stash/homepage/cta.json b/data/products/stash/homepage/cta.json new file mode 100644 index 00000000..4d26c796 --- /dev/null +++ b/data/products/stash/homepage/cta.json @@ -0,0 +1,12 @@ +{ + "headline": "Run and manage backups on Kubernetes — free!", + "description": "Stash is free to use on any supported Kubernetes cluster, with a 30-day complimentary license available for trial.", + "cta_primary": "Try Now Free", + "cta_secondary": "Contact Us", + "trust_points": [ + "No credit card required", + "Works on any public or private cloud", + "Open source core", + "Enterprise support available" + ] +} diff --git a/data/products/stash/homepage/final-cta.json b/data/products/stash/homepage/final-cta.json new file mode 100644 index 00000000..25049e18 --- /dev/null +++ b/data/products/stash/homepage/final-cta.json @@ -0,0 +1,19 @@ +{ + "badge": "Start Protecting Today", + "title_plain": "Ready to Safeguard Your", + "title_gradient": "Databases & Volumes?", + "description": "Join platform teams at Asurion, Emerson, Nokia, and Orange running encrypted, deduplicated, disaster-recovery-ready backups for databases and volumes on Kubernetes with Stash.", + "checklist": [ + "Encrypted (AES-256), deduplicated backups by default", + "Multi-cloud & on-prem storage portability", + "30-day free license, no credit card required" + ], + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "stats": [ + { "icon": "lucide:hard-drive-download", "value": "10+", "label": "Storage Backends", "gradient": "linear-gradient(135deg, #60a5fa, #06b6d4)" }, + { "icon": "lucide:shield-check", "value": "AES-256", "label": "Backup Encryption", "gradient": "linear-gradient(135deg, #4ade80, #10b981)" }, + { "icon": "lucide:git-compare", "value": "CDC", "label": "Deduplication", "gradient": "linear-gradient(135deg, #c084fc, #ec4899)" }, + { "icon": "lucide:life-buoy", "value": "24/7", "label": "Expert Support", "gradient": "linear-gradient(135deg, #fb923c, #ef4444)" } + ] +} diff --git a/data/products/stash/homepage/hero.json b/data/products/stash/homepage/hero.json new file mode 100644 index 00000000..040360ea --- /dev/null +++ b/data/products/stash/homepage/hero.json @@ -0,0 +1,10 @@ +{ + "headline": "Backup and Recovery Solution for Kubernetes", + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "trust_items": [ + { "icon": "heroicons:shield-check", "label": "Enterprise Ready" }, + { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, + { "icon": "heroicons:server-stack", "label": "Any Public or Private Cloud" } + ] +} diff --git a/data/products/stash/homepage/stats.json b/data/products/stash/homepage/stats.json new file mode 100644 index 00000000..32dbce8d --- /dev/null +++ b/data/products/stash/homepage/stats.json @@ -0,0 +1,8 @@ +{ + "items": [ + { "number": "10+", "label": "Database Engines" }, + { "number": "10+", "label": "Storage Backends" }, + { "number": "1.4K+", "label": "GitHub Stars" }, + { "number": "11M+", "label": "Docker Pulls" } + ] +} diff --git a/data/products/stash/homepage/steps.json b/data/products/stash/homepage/steps.json new file mode 100644 index 00000000..9efc9bed --- /dev/null +++ b/data/products/stash/homepage/steps.json @@ -0,0 +1,26 @@ +{ + "title": "Backup in 4 steps", + "subtitle": "A complete Kubernetes-native disaster recovery workflow for your volumes and databases, on any public or private cloud.", + "steps": [ + { + "title": "Install the Operator", + "description": "Deploy Stash via Helm into any Kubernetes cluster — EKS, GKE, AKS, or on-prem. One command, a few minutes.", + "code": "helm install stash …" + }, + { + "title": "Define BackupConfiguration", + "description": "A single Kubernetes-native CRD declares the target workload or database, the backup schedule, retention policy, and which storage Repository to use.", + "code": "kind: BackupConfiguration" + }, + { + "title": "Monitor Sessions", + "description": "BackupSession objects give you real-time status, per-host snapshots, and structured events — query with kubectl or your existing Prometheus/Grafana stack.", + "code": "✓ Backup completed" + }, + { + "title": "Restore Anytime", + "description": "Create a RestoreSession for full or selective recovery of databases and volumes. Works across namespaces and clusters.", + "code": "kind: RestoreSession" + } + ] +} From 857e2f30afdaa65f91cc44988d574f0d08f28b6d Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 12:38:42 +0600 Subject: [PATCH 6/9] Add kubevault homepage data Signed-off-by: mohin7 --- .../kubevault/homepage/capabilities.json | 5 ++++ data/products/kubevault/homepage/cta.json | 12 +++++++++ .../kubevault/homepage/final-cta.json | 19 ++++++++++++++ data/products/kubevault/homepage/hero.json | 10 +++++++ data/products/kubevault/homepage/stats.json | 8 ++++++ data/products/kubevault/homepage/steps.json | 26 +++++++++++++++++++ 6 files changed, 80 insertions(+) create mode 100644 data/products/kubevault/homepage/capabilities.json create mode 100644 data/products/kubevault/homepage/cta.json create mode 100644 data/products/kubevault/homepage/final-cta.json create mode 100644 data/products/kubevault/homepage/hero.json create mode 100644 data/products/kubevault/homepage/stats.json create mode 100644 data/products/kubevault/homepage/steps.json diff --git a/data/products/kubevault/homepage/capabilities.json b/data/products/kubevault/homepage/capabilities.json new file mode 100644 index 00000000..87df45bc --- /dev/null +++ b/data/products/kubevault/homepage/capabilities.json @@ -0,0 +1,5 @@ +{ + "title": "Built for production-grade Vault", + "subtitle": "A Git-Ops-ready solution for deploying and configuring HashiCorp Vault on Kubernetes — with automated unsealing, dynamic secrets, and fine-grained access control.", + "tags": ["Deploy", "Automation", "Backup", "Secrets", "Access", "Storage"] +} diff --git a/data/products/kubevault/homepage/cta.json b/data/products/kubevault/homepage/cta.json new file mode 100644 index 00000000..487452c1 --- /dev/null +++ b/data/products/kubevault/homepage/cta.json @@ -0,0 +1,12 @@ +{ + "headline": "Run and manage Vault on Kubernetes — free!", + "description": "KubeVault is free to use on any supported Kubernetes engine, with a 30-day complimentary license available for trial.", + "cta_primary": "Try Now Free", + "cta_secondary": "Contact Us", + "trust_points": [ + "No credit card required", + "Works on any Kubernetes distribution", + "Built on HashiCorp Vault", + "Enterprise support available" + ] +} diff --git a/data/products/kubevault/homepage/final-cta.json b/data/products/kubevault/homepage/final-cta.json new file mode 100644 index 00000000..4aadaf97 --- /dev/null +++ b/data/products/kubevault/homepage/final-cta.json @@ -0,0 +1,19 @@ +{ + "badge": "Start Securing Today", + "title_plain": "Ready to Run Vault on", + "title_gradient": "Kubernetes?", + "description": "Join platform teams at Asurion, Emerson, Nokia, and Orange running TLS-secured, auto-unsealed HashiCorp Vault with dynamic secrets on Kubernetes using KubeVault.", + "checklist": [ + "TLS-secured, automatically unsealed Vault by default", + "Dynamic secrets for AWS, Azure, GCP & databases", + "30-day free license, no credit card required" + ], + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "stats": [ + { "icon": "lucide:database", "value": "4+", "label": "Secret Engines", "gradient": "linear-gradient(135deg, #60a5fa, #06b6d4)" }, + { "icon": "lucide:key-round", "value": "5+", "label": "Auth Methods", "gradient": "linear-gradient(135deg, #4ade80, #10b981)" }, + { "icon": "lucide:hard-drive", "value": "9+", "label": "Storage Backends", "gradient": "linear-gradient(135deg, #c084fc, #ec4899)" }, + { "icon": "lucide:life-buoy", "value": "24/7", "label": "Expert Support", "gradient": "linear-gradient(135deg, #fb923c, #ef4444)" } + ] +} diff --git a/data/products/kubevault/homepage/hero.json b/data/products/kubevault/homepage/hero.json new file mode 100644 index 00000000..db2ef96a --- /dev/null +++ b/data/products/kubevault/homepage/hero.json @@ -0,0 +1,10 @@ +{ + "headline": "Run Production-Grade Vault on Kubernetes", + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "trust_items": [ + { "icon": "heroicons:shield-check", "label": "Production-Grade Security" }, + { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, + { "icon": "heroicons:server-stack", "label": "Any Kubernetes Distribution" } + ] +} diff --git a/data/products/kubevault/homepage/stats.json b/data/products/kubevault/homepage/stats.json new file mode 100644 index 00000000..72eb50ec --- /dev/null +++ b/data/products/kubevault/homepage/stats.json @@ -0,0 +1,8 @@ +{ + "items": [ + { "number": "300K+", "label": "Docker Pulls" }, + { "number": "9+", "label": "Storage Backends" }, + { "number": "5+", "label": "Authentication Methods" }, + { "number": "30-Day", "label": "Free Trial License" } + ] +} diff --git a/data/products/kubevault/homepage/steps.json b/data/products/kubevault/homepage/steps.json new file mode 100644 index 00000000..3c833071 --- /dev/null +++ b/data/products/kubevault/homepage/steps.json @@ -0,0 +1,26 @@ +{ + "title": "Vault on Kubernetes in 4 steps", + "subtitle": "A Git-Ops-ready workflow for deploying, unsealing, and operating HashiCorp Vault — declared entirely with Kubernetes-native CRDs.", + "steps": [ + { + "title": "Install the Operator", + "description": "Deploy KubeVault via Helm into any Kubernetes cluster — EKS, GKE, AKS, or on-prem. One command, a few minutes.", + "code": "helm install kubevault …" + }, + { + "title": "Deploy a VaultServer", + "description": "A single VaultServer CRD provisions a TLS-secured HashiCorp Vault that is automatically initialized and unsealed using your cloud KMS or a Kubernetes secret.", + "code": "kind: VaultServer" + }, + { + "title": "Enable Secret Engines", + "description": "Declare SecretEngine and role CRDs to issue short-lived, dynamic credentials for AWS, Azure, GCP, and databases — no static secrets to rotate.", + "code": "kind: SecretEngine" + }, + { + "title": "Request Secrets Securely", + "description": "Workloads get scoped, audited access through SecretAccessRequest and the Secrets Store CSI Driver — secrets are delivered straight into pods.", + "code": "kind: SecretAccessRequest" + } + ] +} From 16769cd690c90618d2c274bb5c26235bfabf33d5 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 15:07:41 +0600 Subject: [PATCH 7/9] Update illustrations Signed-off-by: mohin7 --- data/products/kubevault.json | 48 +++--- .../kubevault/features/AWS Secret Engine.png | Bin 19614 -> 0 bytes .../Automatic Initialization & Unsealing.png | Bin 16948 -> 0 bytes .../features/Azure Secret Engine.png | Bin 18467 -> 0 bytes .../features/Database Secret Engine.png | Bin 20656 -> 0 bytes .../kubevault/features/GCP Secret Engine.png | Bin 19276 -> 0 bytes .../features/Manage Vault Policy.png | Bin 14293 -> 0 bytes images/products/kubevault/features/auth.svg | 14 ++ .../features/authentication-method.svg | 69 +++++++++ .../auto-initialization-and-unsealing.svg | 93 ++++++++++++ .../features/automated-unsealing.svg | 14 ++ .../kubevault/features/aws-secret-engine.svg | 54 +++++++ .../features/azure-secret-engine.svg | 52 +++++++ .../consume-kubevault-secrets-with-csi.svg | 80 ++++++++++ .../kubevault/features/courthouse.png | Bin 540 -> 0 bytes .../features/database-secret-engine.svg | 64 ++++++++ .../kubevault/features/gcp-secret-engine.svg | 56 +++++++ .../kubevault/features/kubectl-plugin.svg | 48 ++++++ .../features/manage-db-users-privileges.svg | 75 ++++++++++ .../kubevault/features/secretengines.svg | 1 - .../products/kubevault/features/security.svg | 1 - .../kubevault/features/storage-backend.svg | 70 +++++++++ .../kubevault/features/twitter-banner.png | Bin 21916 -> 0 bytes images/products/kubevault/features/unlock.png | Bin 955 -> 0 bytes .../features/vault-backup-restore.svg | 75 ++++++++++ .../features/vault-kubernetes-deployment.svg | 141 ++++++++++++++++++ 26 files changed, 929 insertions(+), 26 deletions(-) delete mode 100644 images/products/kubevault/features/AWS Secret Engine.png delete mode 100644 images/products/kubevault/features/Automatic Initialization & Unsealing.png delete mode 100644 images/products/kubevault/features/Azure Secret Engine.png delete mode 100644 images/products/kubevault/features/Database Secret Engine.png delete mode 100644 images/products/kubevault/features/GCP Secret Engine.png delete mode 100644 images/products/kubevault/features/Manage Vault Policy.png create mode 100644 images/products/kubevault/features/auth.svg create mode 100644 images/products/kubevault/features/authentication-method.svg create mode 100644 images/products/kubevault/features/auto-initialization-and-unsealing.svg create mode 100644 images/products/kubevault/features/automated-unsealing.svg create mode 100644 images/products/kubevault/features/aws-secret-engine.svg create mode 100644 images/products/kubevault/features/azure-secret-engine.svg create mode 100644 images/products/kubevault/features/consume-kubevault-secrets-with-csi.svg delete mode 100644 images/products/kubevault/features/courthouse.png create mode 100644 images/products/kubevault/features/database-secret-engine.svg create mode 100644 images/products/kubevault/features/gcp-secret-engine.svg create mode 100644 images/products/kubevault/features/kubectl-plugin.svg create mode 100644 images/products/kubevault/features/manage-db-users-privileges.svg delete mode 100644 images/products/kubevault/features/secretengines.svg delete mode 100644 images/products/kubevault/features/security.svg create mode 100644 images/products/kubevault/features/storage-backend.svg delete mode 100644 images/products/kubevault/features/twitter-banner.png delete mode 100644 images/products/kubevault/features/unlock.png create mode 100644 images/products/kubevault/features/vault-backup-restore.svg create mode 100644 images/products/kubevault/features/vault-kubernetes-deployment.svg diff --git a/data/products/kubevault.json b/data/products/kubevault.json index 57afe71f..af10635d 100644 --- a/data/products/kubevault.json +++ b/data/products/kubevault.json @@ -51,8 +51,8 @@ "title": "Vault Kubernetes Deployment", "url": "vault-kubernetes-deployment", "image": { - "src": "/assets/images/products/kubevault/features/feature-1.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/vault-kubernetes-deployment.svg", + "alt": "Vault Kubernetes Deployment" }, "icon": { "src": "/assets/images/products/kubevault/features/vaultserverversions.svg", @@ -65,8 +65,8 @@ "title": "Auto Initialization & Unsealing", "url": "auto-initialization-and-unsealing", "image": { - "src": "/assets/images/products/kubevault/features/feature-1.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/auto-initialization-and-unsealing.svg", + "alt": "Auto Initialization and Unsealing" }, "icon": { "src": "/assets/images/products/kubevault/features/automated-unsealing.svg", @@ -79,8 +79,8 @@ "title": "Vault Backup & Restore", "url": "vault-backup-restore", "image": { - "src": "/assets/images/products/kubevault/features/feature-6.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/vault-backup-restore.svg", + "alt": "Vault Backup and Restore" }, "icon": { "src": "/assets/images/products/kubevault/features/vault-backup-restore.svg", @@ -93,8 +93,8 @@ "title": "Consume KubeVault Secrets with CSI", "url": "consume-kubevault-secrets-with-csi", "image": { - "src": "/assets/images/products/kubevault/features/feature-5.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/consume-kubevault-secrets-with-csi.svg", + "alt": "Consume KubeVault Secrets with CSI" }, "icon": { "src": "/assets/images/products/kubevault/features/secrets.svg", @@ -107,8 +107,8 @@ "title": "Manage DB Users Privileges", "url": "manage-db-users-privileges", "image": { - "src": "/assets/images/products/kubevault/features/feature-4.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/manage-db-users-privileges.svg", + "alt": "Manage DB Users Privileges" }, "icon": { "src": "/assets/images/products/kubevault/features/database-users.svg", @@ -121,8 +121,8 @@ "title": "Storage Backend", "url": "storage-backend", "image": { - "src": "/assets/images/products/kubevault/features/feature-2.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/storage-backend.svg", + "alt": "Storage Backend" }, "icon": { "src": "/assets/images/products/kubevault/features/storageclasses.svg", @@ -135,8 +135,8 @@ "title": "Authentication Method", "url": "authentication-method", "image": { - "src": "/assets/images/products/kubevault/features/feature-3.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/authentication-method.svg", + "alt": "Authentication Method" }, "icon": { "src": "/assets/images/products/kubevault/features/auth.svg", @@ -149,8 +149,8 @@ "title": "Database Secret Engine", "url": "database-secret-engine", "image": { - "src": "/assets/images/products/kubevault/features/feature-4.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/database-secret-engine.svg", + "alt": "Database Secret Engine" }, "icon": { "src": "/assets/images/products/kubevault/features/database-view.png", @@ -163,8 +163,8 @@ "title": "Azure Secret Engine", "url": "azure-secret-engine", "image": { - "src": "/assets/images/products/kubevault/features/feature-4.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/azure-secret-engine.svg", + "alt": "Azure Secret Engine" }, "icon": { "src": "/assets/images/products/kubevault/features/azure.png", @@ -177,8 +177,8 @@ "title": "AWS Secret Engine", "url": "aws-secret-engine", "image": { - "src": "/assets/images/products/kubevault/features/feature-4.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/aws-secret-engine.svg", + "alt": "AWS Secret Engine" }, "icon": { "src": "/assets/images/products/kubevault/features/aws.png", @@ -191,8 +191,8 @@ "title": "GCP Secret Engine", "url": "gcp-secret-engine", "image": { - "src": "/assets/images/products/kubevault/features/feature-4.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/gcp-secret-engine.svg", + "alt": "GCP Secret Engine" }, "icon": { "src": "/assets/images/products/kubevault/features/google-cloud.png", @@ -205,8 +205,8 @@ "title": "Kubectl Plugin", "url": "kubectl-plugin", "image": { - "src": "/assets/images/products/kubevault/features/feature-6.png", - "alt": "http" + "src": "/assets/images/products/kubevault/features/kubectl-plugin.svg", + "alt": "Kubectl Plugin" }, "icon": { "src": "/assets/images/products/kubevault/features/plugin.svg", diff --git a/images/products/kubevault/features/AWS Secret Engine.png b/images/products/kubevault/features/AWS Secret Engine.png deleted file mode 100644 index 99c1b237604affbc59fc49b320f4691d91a521b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19614 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 Eg4a-9pa1{> diff --git a/images/products/kubevault/features/Automatic Initialization & Unsealing.png b/images/products/kubevault/features/Automatic Initialization & Unsealing.png deleted file mode 100644 index b237b0b138a5f6a0dd6283425e7e0de1b5531e00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16948 zcma&NWl$VU6E2E{1a}hLEm(rf;sl4q-Gc}B#R)FKU3P)s1VV6k3Azy6oyBd@#m@WP zs(XH)A5%RuRoy)`GhNf&Pfv`xnmi6BIVKVk5{{yRtR@l?GW5Te_zv}dGcQ$M|B*a( z740wbt|}8VYiDO?S65deTK>%uI0pxZ3JO~1=jR*S`$k62$H&KsVeZlauh-Yt`}?r} zh6n`W_4PF-rYQACj;^ksv9Yzbwpp-$xTzVav!#-QlRY9LQ%G9r`nO|FT9lj|@K<$f z(a&Ee$qHxZmwrEA-Q2>Q9Ne3l2fcz4MqDIk7uGP}Vf-DPl?i-(ZNUi_WHI{0QCpd} z2yN4H-2U_5I&nQU)wGa4js{RZJK9J;{Vq*TRD#eEAR*BrDauM|`!1j4$9NZwl19$q z6Q!7@(MkhCjp;Zdr+$gw-9C1&REL77OIVM&`7oIYBwjmxNM@Y%s-BO}(&h*Hr$ia z(?dJ=R0Z2!B}~7+nZ2y&WLo%|+u2nj6RK#n@hrhz8~BBBtw-F?u;>*eq8La*qixnv zGQ3#!b`>w(DMyMJ(Pkg{&jf9Onq&So9yDq)Ll2-s9X5E(I*GF{pqZS*{vaeyad`s6 zJroLl83@BX{>Y>1E+RF?ch2XSnhE0=%ccPpzg?nqWm0D1;UC%1Pq%al++R)>U1X_YP<}Y9 z;E42h!Azu91yacbIH@e@BAk6mfX%&1qGB9^>O(0l|EFOyjlK%)nx5?%Q4epde$lo& z3C698EdB`nF3OnVm8=QiYJy4 zJt(M)CfWl|9KQZiT;6q>E)f-Bv}!a0=P0UoVOPY!h4WE_&bfWX@~WE4@&CxQf(dgW( zwpK#7Bo%CFP`!Wk+~z-_5OkS-;TC($us{-$=jRZug9k8WwmMY7bdSZGCU zrOU!4Ka02$g6pVcV`Bktv1O9o1b*P>T6Rp3N`e#IA~%9iJ9|D)QAQgGzvV^LSHq+R zFWH};gdLT=RbK{>@4mO?bE%8C4&89Z=iyqsRs4c{HeD{2ZQIm?Cry$=_$Oj7EfFSL zv0{4#Ljn^HK7PZki5$J*M0Q|3o4{^&-A2qyFK)-aO^J=85=~MD)W4bfAp}84aY$w? z5kGpc1FD{(#H?2MriN~WC<5W1ry!BOk(UBhaV&7-RS5fy#M`KqN(rq3{Id0gRD65_ zL4G8~7l7a%)FVei1`s!nT>EkVCGR}zBBUjg zJY=a>T2#$%Xr~NOpO|n5g)mh9chC1josnRk!8IOTIT|k~wYHrSaj3!ZkEw=WhCZiM z38I4B9^qcd?vwec;lYzRk*|QB%#W9FNtaSGM-&)Z@MPiO73{#(sN0{fmfo6z{2ZzS z^1k=DC{5?s{J1hN_bi-V1{jA>Y(IQ@Il*k^d`NxtSbGwtTjelw)SmE+*ZbF1@9UM@@fgU8MbC7E;fMcKId|2kiTM|1ZVtC8}^hU8Y1?xDkelS3o^(I^OTT1mWO>8t0Kq2(Ac4l|ot3r*N$gbngY&x0YP< zQ%;&pz=0>(*qfGMPePnz+G!hb`|9Pb`(1>fK#zxKiz;Rj(P!2lDs*FN!8XHiT!0x) z$%BVu3n%iMB8Gq7I#S!v+Cj*@qlfF>8r;nN%OS2#?`x?DXCmo{3-{&soNlYPBx zw-?hswAsR5UramC)vJ|_?~G;J`{k|<^_-F?ERtCZBtzuNTR01RD+6vd22LFG*e)fROs#tw32NDUNfU-vUj>A?j)Cf|q4J}UQPl7i z`70R1;{Tis!BIF}-zn-Il;nghGJ^!=2!#3l;`<$RtwZ8{qpg*%zMSl5;MU%0&e7>Y zTrCMWE_~(F)m)-sD@~G>xnygNZS<)qX}HF&QATy;&~Q{?Ws~)T2Jw0*Y^<>y%c||u zzd=yK5SgKH5V+Lduf{$H28KquMRH!OM&`>8{?(KKh-GB7%U_9Wv!h^L1+>pQXcYeh zasB$sYNR=)xbT}x7Btk%i``+dcgNY!zFj5G05qAyeB0eg4Tu=eXbWPaBcYD7wObfm zq=Zs5vDgnS-SCM*|Glt=vTMyMId&GRBnGZkY={$O3yQh?d%JzOz@kd&6(e?26{SD) zf(+Mmso-!k}Arh%#*wc)A1Xqm?v<)`;|C{C^D zwDIdW_*=TL(5<047ubbt5=K)FBd+LT)W8Il3R!THkFlbB`OkPwET?7l0BKut3*tKcKx=dwTP5_E>!AZg8vqPY^kQ(Tott+q5WI5%*`oXFOq?(fZoKl@OmWeVad;0?`|+5 zwqn`zjDM%SPyts-2k~bpR*uy}1D73%<%d+%xaU!Kce@CIN9xO4vjI31SRxP`GwCqh z`yxABUj#=@_CT}l<4b-~6YhmdObEqED*l~QknyemCnyuM^XGV9ID@zaJfEa2@f7KS zPcj*My*xA%Kl0oY{rG%t`$Z6?L60<0jEmUi+l^r1!}AjW*={zH_YHYwiwJJpu0>Ee zGCW3u@D1672hLJ~gSO@=V(q-;@+acWhLItPRMbnryyCguL6@Ra`L`1dMZ{RUJQDF9#18d9&*G9C-@w&QvS-eJ(@~So>j1 z?g05S^r*$T^90t@_YTkFK9OBo%?el1$`PWxiV_H3K< zJ(pD#&3)bK?C0E>$1`fcYf!qKxJ1}PkyD)1ngCd6+dFAo#%pX(qjlCv@#k+UhM)!7 zvMO(02@h7SHhy8xSJQHi+q+Ez+{V9Pt@e+5s|Fy`A1x#|wg#3t1EzZHPTV&|TQ36? z`h0-JP*FW+?3;|*Cn`Z!Y;C(DjGmxo0Q9xqhk4Z=#fTDW`L#j#bBOe(Xb!PHb20w= z=kAqu9|4<1tFfv>f59K+7*4>ThYcsL@e(DX6DK?8m4eB@&S9|wf;4muL4q_vR26x@ zsWHtJjK|Bo%fS;Q$G0@sNL`syjXn_~SOpQofgI25Ys2Y&R~^BGxA$e+4i(Rob{Z@$ zD;(;A1OiDc^g53UQJRl0`LFU2zIK=4Ly;Z=j-)0m)|s&S$E2$#RU<44y{CH`C86N; zKoa1?>yP7x7=cU+Sw+!I?{9_TVRbTxORVa7;si$n z5@=o9&O?NIgmc5Fq6p(rkDuCkgr_i=@W{51GG(RaV^6eZUee~vukDlOuaYicH(?w< zjYMv<_hNUW8t?7!8Dp|;f0Dlezxz;!>(jBo)FulP+h)jKR7Q3N>k`^-;;X8EJ#L?heoyM4z{b{|Q z2}vdLLYvH~ddOV0X_{;!kHu zm^K9IM-|~g{@3nLPlR1QFDi?JoMm%=jmt;jy}!y++va_($g+JK;GWoe_VJ51r+SV5yTWJ}0&%{&Hxk&859pA+nOrEZ5DU z_NKt1X5HDceMk>alsh1Rh){u~d=F=abt|Uk$U}5c9lH=iH8d-w~>1j?W#ww+4^(8-~OY%OR1drm8O!5bR zpbatKMSNc#AxzX)vaV^nJXECRa8CE0nd=&VpOpeu*<*lUEKFsOZST-bA3@F@3b*l*wc*XPT*Vs`wN$0mD6;)R zkOtp>gpTWhP4j@~UpflX;MKCsxM@m+&%{U$?y5e@?v2HgNI5UgUDCcis+j=Oh0$O1y1Doh2ox0 z(R{?rZ*E;Fo>=?1o}mMg&exBipS19i(s({~EWJU5u!turuPv|aAKGDhk)t`Z{?s*2 z!4)RJfh=6d^f+bGj;ap<-+|L$0V08>u@`Kk>AF73(Lo(HjF!XEDia<%+NgFVHpnaS z?ya{sbf1llV|JR*G6O$qrFJMs_An>B)ZT#3T*(W}62MTr(Jqk0*u^t268L;tT7yz85F@8j=qRgZ)vQxU z0*1+fso6ygT2rD>U?LB@M!3J z;vE9DtNDuoti6%2Cnx^?>i6Zxqsmxo)IUQURmM3>-Iw%5mv?q{W@g~>C#$HH;oqg4v5~2z8AZ6t;U0VFDmcH)&XxC18Ieo8UJjC zdTcUnz1;Yl0=W{piM?0kD8s0a){IYutzE6fbGK9yWwZwo_b_D|>K#(pS()H8$? zh_gfl5)V`P0U@??o4A?l75Q#Tblt4(OFeCYB9_ygW3LogVNYvXM+(3}v`dDSgD`{X zt{Gn3qf_PQ*_om!+^jW=EUX&!AEV2T+)nA4QuHABqrAtXT0_uGx9NHVh)@KX&tMG7 zjWnyAbp58iZ_>Qn#i%5-6}<+NTPPKK1 z1+=W0Q(@)MXcVWg_RsR5&hwDD@X*OyH)(!n{Q6!Pq6DeO1gcY^F572g_fZ)@R3ggk z%~i?Bm7YO$J>8ay?pF%E9uc+|h}5pAZj#^IyL2y2Tp{SOd|J43b?8JTbh97#fi{SU zs|MrVb^OU*vpu#b)qVKG`$6D3%hmHMf`=?|uzx`>FA@n8yOr8;AsvQmDi?}4W+2ucc4-+wB^-9uQ*WARmaAR zrI$HiMNii=u=46D_Wr@=WVV}aHgCg$#Ew?RwotPwmC7(SV>^ND2zc}Pq<7|PYV#K! zzP>eqIY{sXtsnV5Yw$7O8+CT=Xr2hUwUBwJMSaBsqU7|kTogFnlP?VxEQ8w5>m3(KQz0+DJE4$C|{7o-#{4W77x3GTJJIktB((Fj%cTeoW1f*Uoo z3GBSK;?=awhO?*R-ZXlpf4+KxT^m&E#Uha_>a8@QINi0@WM#utBd!9>b{Z5zd4o2n zTZZ$2bkKPO+z4T`Vy{0l6kCFneXAIq6Tr2F(s+#4<``Y@$7WK%mio?`5cI-5036{> z22CLa&ZCrI*(x@o@1dw(Zxyx-5OQufZ&dszZ5(cM1WmrIXX^FBObW!D%Ag%}AT>34{&sfGxkep~V?@dj)cA>P;#8pM&M!9$ zc48I-xk2{SBa(bXtmITM6qU8qkE)Upx$P8^XVJl0_e5u(%^)P;+%_~p){j#ul8;CA zD6@O2^y12VzttX`2AqgLIycq&=rM^9K!bn2II6lj@rU3>L-@J$x(RG6tO#;BVVTwF zaLsM|m5);xH}(N8dB45=k;$WVrA721)&(`|gZYQ+83vxM#sQO8?!vw7RCZTV=RDj+ z2aEuN=ZA|<5cTm*1(U3KS@YbH5J!;i80qtwEWD0yn(HtE4t+!C*)0A2+(^XX-{dUeH*%0lZ*Zw*i;IYU%KZ7MN6U%AeD z?L7+WM~SoySTQjjJI2l3Yhb(m_8;YK0@$UE6lPDPN^_I)JTS1N#c#6)1`Y8W=-VlYl7k~gkd%*Lh<7$cG(3f*AsC)>D ztXC$mGrVURSG?odsqR^+4VMKOe@EL&Q0m<@(mvR+NLb~ouJ+)EK@}} zd0qRTO6WJS0JgqP9YMjq>P3>-r*oex<07bYtB8qH-*i~zvU$IRJu=B(9xZ#J#O)zVl((*;zKGrBy`r{-fllps7kYtk=lGbEA-A*evStH+mm zKN{-z*%6lmJ|=+v)ZC!yAw#f$HOBP=4?DGHc#?y}PW**SGZGwUSz%-y3rvOg<^D*7IwV=1EoTUh@rt$#2^7sw3Fn)7*n&(rcjv+KtP zW0NEaS9^!TELtR%zxBas_J?Gv83Tto)44{ky=$HghIp(K6wR_Yz*65Jd5K1y0}gNu z@|D^d;2k)X;c>AaOvtI!nz1{R0SNA9I(D#jn;9@(DER2=3N zRT$C$&Z*A6!x;EJ2pApFl914X@eMD0{%RKeZdmXz^$1f!$ID{(_IuaVfS|xsOge9-8Pi#P@xS2Yn0c_@J()NA| zc1s5qg|M8p6g9|UQ#5vB=CK#XilE9UFR7O5RA?CbkF8Oi%`qQ7is4;@dail%IyLX0 z+A-RU1Hz6!(P>L=JU5S4d55dwM7kQz)221JBwhhUl1ozXfM;s(@7oE2z)^W=i=(;~ zT;H5Au2m_P38efK@Gcv9fEL*5f}cdpI-@*DxBb`^n0F;XmXYGJMNLesqTD!E`kUsq zzyW7ZCi&}>UkD|9A16|S3HkJBklHNbD&LrV_c%DXQ1W4G#O?IYb24+V0ZPU2zeneK zVX{1jddD%jBdyYKuGPpM%xPLEX|#yHnXrO#aF`z3gqY*oI=SqR2jJWaSBZN^Nk|vJwfQ`WgiPABdJ?nLV$ST|qA_Q`sv* z?4X7b_#@T(9I0qk3Ksz&1~x^CP4X@|oEngbaEA#3sezwsn}6)F{kDpv~Q;Jybpv2K!vvv1$B`@NMx6EL{^5uGq7`v%J>VAtz z18W|*Mi+LHEMLSDc10nqh}vh!K>OxSMlwVyH8{~N-Vg%781H*`aQufp&I7U=WI9G83~e9;Kl7s&#$Fk2Kt^uTxi4PIq+l*_T<4KlBwfil5wX-YH*i01s+f) zwgK=%P?ZxpkKr0vNeyJRpLwa-pKLXvt@H`p@cJ5`VZ~M52fB8eb>jd3YXLSZ%05i} zU1j_^MgO~)#gqg(@d3Ea+#t$mpy^pmL>fLnbT@Z<;#6}|P0F&k(mCcKzq9ytlT<<5 z>4Gd*=2jT5T*qz_@1!RZV5V0I%&k#hjPs>v=x^L!N_Zoy7Fyo3>j8z5GoO|@VaeX; zZlhVFl1`WP^G;9(#%95tW#*GHNYOc?^9qfZ14;g8I`WC&#w$vkp|7nCT%Ie7P)+H->xq4^$#kG~Z@f2LFs^@njsK@lB{m(M^@fjuh@s_965BmHa%g zS34`}yl{LqF5;Smf35OX{I0*K*$p&_?#BnhWyw3L3nmXqpVU9la*Yc>8a8#ul{` z!_(fkNx&k8-a!(? zOH4T3?Su10%mF;F% zp%+Pow2$5kjH!SWbYIMmQw zW=QS-%NHn<<#P)hn*S+0X>dK!D~uhj`x{C+L2sG5q~HKjJFd^4s|9^gX$?+X zo0HtZmhokt7e|jUw(EjcH|O)cfQPU2$Zw9oKy(Shf#%cjR;UYT$I&?n|mNB#iWfAWQu9PI8fwGM3(pp2;q31j$zqLaC<~JDHrHh z$pS)jGRqVVe+KCSRP=RgfIAXUT8(O``$y_J#IB6n6%%6CTab{FEpJ6_X~jyy*|lQn z8_I#uq(xs{-z88FVjUT$X#2xqpAkHMtnSO$_3R@K)punSs2Eyu`ma(a0g1_4T6v0f z8Y8bid=GCP=G?sUPpk;IhMOVf!J`t=bHzFLs1irxFVH0hrTT^Y{in^0U7joRZ;K!I zz3$HMm5JIExO!n>=Dr~wA2wflUuLLPg-mUZ11nS{$ubBX#i-GB7aLxU@izqE=)WkS zXJE9yx;rW}PG*skUQnmO2|o<8%(46e`)WXm_$%3-{Sk(c+>qge(iI=VDmkInSH{Z` zx4aBWZu0?3R6#`Ph0&>yhf{mnob=tjW}A9N3dd=hZ)A%+^*}6dPU}s#*|7ux+xqdR zhbcsOA<48kt1P(=!pd2G(d5;@cV;XAtl#GJucW^I8)cSM9)+D#`JO=)@low~&zm-^ z9PP|8?M1#GVFk%oJ20X=%=d3X@bbL)EXxmD)Tc{d)?XW>rIa*V7(#A;9k=314nOUA z6uFItl=sq4zx*(=sKlR}>afi9%(KhePkmElb|L}vO}!IYcKKIaKHJ7|v!X8~ZNXz3 zU~LEqxvFMe-}KTyKPD(qsCTyDeTsQO`oxTq*XZ24)_v;X3|e)5`_;*UAl@kLz#1DC zdkxAtC=;mUy9pZ_kWryIr34R#%1L-+-SdBVO#?*_U?|UV?6$5st{vQI=UR~7H*=`k zs%3-IouW;j{<6iwTS-?p(u2G35d0J;lLIY(1HMmcyX&GfURDRpeJ%JCl-hYDv=snM zPW}z$tDyMfItg>ubCKok!KiQ8lh9+e&e^jc$J9(WNS4ctU+u9^5D)$(1)*I=9TMn*=qm)WNjr&p^qXZN=`A+AjO5Q&QPshl6+a!bWD%+(}M@qV~qf z?AA6~{F-z9@zMHrxNyNI7Ph)o{ExE+y2$T8yY+86tggRw3IyJUJt&9>e-1P&|3Y%d zLq(X*i`coNWWhedP^=!SKOh`s&FyXRCi8c5o5v^M53F07J^RRVAkI+LUMQX2trEE_ zB=yfs>!>i~z~=!P^vUegoMO3q>P6a7hxUK2^BRO(;dFKqEyMi9cE(ARpcgc}_%Y93 z-<1CDP-BLjd9!%ZyrR~~>u$4ZOPGIS{a$HKusWw~u0^?G6^0#{(kiyHWWD}G!nH=r zF}Nreq7|rvKi3+KfHnPpGG0dD+|eeRyWE z1A$TEggC%E7@P95eG;}90T$9L#@+9>DZPmjm1_jO!o`#!SpDnHv+-gq!^^vSi`mi9 zrTeF#Gm!2KgpW}g(ZM~bYSRk*Q@fj`wu3zbdkqSCHC~$6^28t6E$;nlTM=wpI|Tz} zi$@4$_loUMP&@Z7!RgTi=bdzdIECoW0|HUL31xfjDq6J}&YL6#*nZhK z5LGq2M~-7)Q%pQO3qm|W@h%{8{fdn-yOF7Ko@zU6W`Hislm1Vmm!AqbM`aL*!kv>Y zx@C#AgcFsBp5e=X4XUb~uSoq^_^7!Kg~=|uWj4m9bFdQK{9ZFRs= z-cOW>5d_~;S=Ht+ull;aCfS*mG_}!ic_ZG^DKm~0mG#D(Ni6h}uMNDZ(x=hgeZkC2 zz-x$Z?{7_ln(~gHg{SZIh^{>c18F3`8$Mk-tD3fv{LE+Y_I8+1+{cQFW$c_-e}Mo_ z!Xbfnug_%A!}fu!0y^JDH|_I9P`QKEO8FfUM|3;2n z-=UGSQuhE{1S1ETZXX=y(DFIuMT?0eVw#ls>|9-_aa-NuiA)}09}h2bEk7|7n!eq^ zHev`S$UJO$f^h=u9|Vd%uurjqUZjN{^45&{uSA;~J33uD5RL8bZyhT2`8ltA zS-1(xv!*aSf?r~D-3gy^;+b0t^4g)nNe_=ry}vlme>0QWZ~qY z7vi5QZr>(NTX|P`ex zGR_^O>w+{~QI&H<4?PZM>@UhRC3*s+P1H^1HqIkoiakaIelfoh(CwW4`5#;R=$z^S zSD5Ik`x6KqjJ=O^^^3F@aUJq_^VklnA9?-ia;TtLfvBVy&Xf5}u+A)Gl)RFsd)ybG^w zoH!V~o!tcAn66Ac%^3ZFIj08yQi>}pTfg%UUp`NUiGZJ3Kx!_QoROV710$mndz&5* zuZAG+GfqyZro( zbFA%vxA`uJFRlz4XyZdr)?ows4_kL-GASg$5#^=`=>OhY2=ykR-Vl$r4Mu1~M;6>Q zW#KeFLc2;5bESeivmW!+-wAEeuZlav-8cj+uz3-x9sM0WZsopxMP(48%TpO&@9(9) zrxO{ev?&og&6TbPfIabPt|QzDtjYEpt?(v%Y^SR%ug9U!rY=0{Z$%0&dtCF_1e?tr zm8Wd)3=zf(IoG|iaK$ju7{Pqwz}&3roDR=19pQ6b(+Hy7CB~_)A9r&-VmG#<$uF8| zZ~2f!>O|?J_cPjnVkRH~V16lz-_a^b5q;hs;BJXFui7&Q?&n(~W6B7slKLWzhtUH-xNfYo;bdP4RdC?_;I3sOH^O=&-TZ<^vX zSwa##8HHsT_oj|%6@%5a?DV*QLf55;h;A-9r1_2FX@cm%e@0c_sm+s+I_-=7=v%rl zkCx#3yB3^e8=NNn1BNPAwX3DS`p**r++BjK@{y=_>Z&i|$4#3@k9qKQsA7AJjdOgv zI9{o8`wk!9a^{@meMo`^L1w~~qiu>LwUk94tewi!4r4W_{7eH@9_*EhGL3MYTOPIj z`vVwY-95tI2=*hY#b$b&XH|C38n6M>RQ05S_x+v_Jt=QGo-6+RAzHQsoP zH+K(j2s2Wne{?K+6$Vihq|STAjaL-UHq6at6jT?HsAwkN7m8V;=%u^2#c;7?+mS^} zNU|?!0@F_X;qpH4ovNH?(V}?CzggZk%XVN)eJtY3Tl6~-qbgzG?QT_@Aof|8Ho740 z9*FieUfV_Wlbl z9tfr0I+2X>rZyU#$-IpMK=3!f()KCxye$!l_MhpY)AL4LP{y&}1E3M?y!T>o#y^~* zD^B)9bsIFeQDTO_TO}w*x@EH9t6Cl_1w0$(RDt3%>uRAVn|toc;S>QGs-5d^wupU@ zwFBo8%s^dU+uGT-DgR!#_uPB2xq=gzb!&`HC;ZA=Cp3J=aHY&bZQu9Q2bsMUnOZuV zanl{@%QBrvOAaaLT*;Wcosz$Q+;YLySw zo!!>3g~&tjYBtp1zcx0$S-Ji${|h}VjwGa7`w!YKE^$;g9N|3lV{M|ZEEQPYlPA;oZR3~i!~GMSZ_tCy4g60dlr(iP zeEOSbh%G%Kj-_}#*5XPflLWuW3X+6)k@hMNM35_oTust&Z}Q(s=QdAT2h#0T82HlYo*1`JjzN>Fs9SFMnfJ>Ttv*K zeYqUEMSu{!SywFfwum3*PYG4K6u$dO<+NVRV!A9KE_2uJB&%9HBt-&00Vg)Q;Knl%S{Ew6mBlHX-ZB`AF@-Yw^k**}sVL1f|LQPi)(#@gYR}4@TB5e2g7BJV+YQT{-RB_Z#lX%XcStD7gDg% z+Pk{34iwwoL%B1>n>WRMeE%r2clR&vA`ajusmPwEL!cBBmcuM3PQZ`AiXaw3e+I~R zJk@|dr|C_kBoEt+&8y3XABnjOU8@O2RCf+2|SXgXL;r9Nb?eLP50UpqZWJ@mK z=A8&$PVhhca{SUgL$`AWou(08^UXzq?wU4b)O<-u7eZ!fifHQ{yb<%v%#NHT!&NlG z;$|Oo{}EPbd%@>`sr{e!>TY1yyVyv5`TCaNgbuSw+e+vzmr$!vV~;?LahpLuon6ra zj*277;iY+$%zIOn#hA?HcP^;6VS#4B8zbmPeGi8QBmxZNB0PCVUFl=lq%miqsWfGF zOh&|**($x84(X`zgoACQ_5|y(ngF8mpPw3nDb zYKV&8i%gw1-(h|G!i(ZlP?9fs0sYTf3vJ>+S8!*a0IaQQ)}emtAycdZuk@D(UvQvg z@CM9YSa`_@ZFMuYhRCXn!7ad_(v!f=DbjwZTH+uL{cbGUr8Nq0lAoX>%ArNAjpvfg zR=^z$0K+V|vmy@PZx0MwsTO{)=M!c=31asO!+jI@UTbWCj6G{0{!Td&E{ncUA#JJA z>`#WsdC}5-OhTROTWP#pBD%&99dA^g?pp@mwkYf zrxTC=+Rai7eOX&?6==p_w-8Do6J^5nWz=I&XgY=^ONpEur*gn*sn0pm_SXNZ$GxM%Xv(oy!_k+WH-7B0uI)8GrHKhB89)fKp zKj+q6QuoDHU9h3)uKC~Hn7Ej;2pigtt66=QO(pSdFHfvEhU#Ayp{w~x$%s33Z5r-A z-fg#BD&Q?sDr()8RJIM(e4eAUm(uk~ozw(io{dP;Xr#FN4cnU@k8T{&@iu=?j=T-C z#wd^AoM5g@8h7QrN4NDgPIL-8j4^~t+ixN2vh)VitIp6I+%_zwO1(y@r*Wg1h?geJ zvzTJvZOe)C_kfL;?qs;c(l-%w1aFOVNu^O^TajSmcl*-Zt+e{}556-);lCY3c?4jk z?Z%0@0Bt*^)n6KRgDX=sAuJE2gGOV zyfU53U7@$2576`X4bZcb;-EZKCXFQ{+2 zW3!&GMqn9B)1TK`_A$w}OA3oa$3IS?Sqy;LSuv@UgXtpP`WSyZ@O$Hqu}TK%n#Jsz zuVD@NHOFQxH`}c-1>Z}IofJSi{J%=?b z>c!QSRMf|>DBN<)Z_6)TNiDlrVzYnycBAtXI!u z)gcLlwt;{1i(^+K$@ZF^${dnmhgmzA*qjoU|8^Z=bP zEgT3PP^D`4+_ZKGBVRnP zWx)CE^QEE0EF<)sXfdd(oR6YnMl^;I-+%*WzPh;u-Y znZIf?*H2v&AB}f(Nuaaun3@Ijtamyc`=02)pM+LA^~4kHK2B>ZiW%XX9n)bmRuqmmBa z8j#$-_Fw*{yYujP>q@wEzZJF2CfEz)f5SNlfT2K-Ab1e7D45=D^J`^bso*2!jmkIE zwG;SpkIKq2p??{!S9MQ@ZTkDx&i4ZXP?uZbpbWoikJrmT8=gM86)^Ugr4?iM)z#T8 z8^~8xH=$2)H}b0W_PNid@P_u>KpL6}ro9EhyswR_nWZRAg4LF)Gqdd^(CdAt;e}t; zL9SVOwpjHm-CbXx$s#LLw~k|EM{U*ZV(k>r%N$!|3&Tea@$W3FCmsU;WW^zm*FSd< z_Z?wVaH~Hmu= zdKB&j)@#+N_vYOTKI-;dKM;6~Z&rlwG)EQGH3YF5n>z(12u>;FLifbRg}NKOJ`%PC zG&@hEmr?5+tAUNyxicpoJY<(P>|`h6xHFag+rUAu`>A{o1w8D|*{A^4tGn(?7 z$?{JYzl4*01efYJE>fM9t#r`^-2A>$sPZ85v`KM-WvBe)4j1j0aY}OxIiwWfap3{+ z(a-+51L9bqrnQ9cXM=iG^Ihro?Dbvre(2yjfxhOgZ5t_5Ai=ra%ZG@N7$;40pcO95 z>&QAC<4@bLxA;t(A9)`7UaCqgS7~*@{wmntzQ@vdrl;ZjjIba$u?>r~${g`C^EG%m z1k|$}L_UArnNYs_hF#KA&7no8HS2AFzGzQ^CYz956WCNiC~5D=Xv4|CCYaPb(BGNi+NC9ZrJs#+`YU zaS8P&GHwD~y7J&6hDueT|FWwrYln8TxpOjB_<;0CQKc-K)?88@o8iN?bYT!Jet!rH zs#2=4^2J6dnmvb#V)xkOzK4lix?zV=L=<<)mL)TZR$fXGKHo@l~BL z;`Y$rme88T#WOfNqcCz_8K zve*Y!6Ta^l@~*wlBa3LMW!P;X`vZJj$nFZ;1z_p%{C@(!0YLtr3}MOib4UI~CEF)%=B7pepAQ?2S5=(!U{4^md4Z{>>c z*rZr80BSi%)wAxI7$4dUBI?0*w<5}&|iPz*A2n4A@Y}Pf?RITq8nwIZ23{SOu`JbZy{y1 zTH4~VXAOZjY002ovPDHLkV1nUq^~wMM diff --git a/images/products/kubevault/features/Azure Secret Engine.png b/images/products/kubevault/features/Azure Secret Engine.png deleted file mode 100644 index 793eb38d112e627ee267f6c97cb3be0c867630df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18467 zcmXte2Q-||_r4N*5JdFoo#=_Sg4KJE=q*GDqAg+dUZN&MU8}c9^xk{7dhc~DLf91+ z%is5Z&hI_vecyAQxp(H?XYS0MbI-);>8O$ry&%HE!Xi;uQ!>E9!ht`&j{o64A{W4} ztH)oZo|d7qs=LzvAI_2@$F=)!`A zVKf?z_k{fMJ21XhQ8W11hgMY43!0Ctte@~6pQZ|&&YFjZhesUXHFte|tsPw?Y}F(1 z(wFgtCG^*v7jzrTa}ayH6Tc#V5;i%z2Io?*V0fX1h4r3QHs|;7wx~h%yVzxYmzJA+ z%Gme@XW5g_L+K@PD2iVepRBz!n%YMG`Gr6BPVZ%)^A-yuFMbQWy?_2NH09gm@X0r0 zD5ZX7Bzvn6W=x0{z`|m|Qdg2U^j$g0`RoRfq>Qwa$5(2UuRr2`LP4lP#6GaA|L_oO z{&b1fj!Y|zB*WjQDLcKf;#3*{xVpZ%xUl`*+q9#5jpH40vBMEtz@qz>Qc3^0e>6HJ zI+)1ptUCl5qbe^|`QjgY%-XH_^uj7%-j?WId1pbtx20~_mQRlw0dnW%eiF->o{!ml zU!GuY$~{4{d-V=W&b!#QB7ga}Uh_*ZdY zT=AeOklkJf2s^XO4J*CgNSiOIr`1Q(D1Y_n`19(8we^T^p3rGFs&ubv1gQm8AzloOInwP0`?8!lD)B&Rcxy3|LISk;@8-`4vfqfHGoXzCrtVx=*vF=9H*z z31ogbBKE$iKDzv>vAy4J6TF;TuMaDmmRpf5;_oTH&@G$e?|#xm&H_7Yy*ecygCkF;%FvEG$X7(30m&>FU^G=f3q}+#m_3yZ_WLRU&&#rm&Gy z8$#*I2FNRW(#Fl7Xz{sB>wBhiW%X1*#y#e@dRU zP%-{;dk>jp>1af#^IJ>cWOue_l$w`|dn{MvaThvI6}iZ9*L{`>i?sv^>9*z^Ndn*W zf(zlVIT%&26C(ky4{s?^YK3sn1o4M>E^COud)U((S@v{Qh;B;d1`$?KTMR(rux)&5 z$XP%MR;n%(@T3qcx*NiIcq>hrvlH;$Yk~(W`BZ0yO`^b`LFtMcV5}_k!IKYb36*&ZN}qNZILv~W zxxQF}1lZthZ(d$NciNMz%);-7+q-!}-kOdjBiHFr>aZG>8TFx-xul<}*xe; z2TP_{9S@y0vRIU?qT8E=c&$}0T0D0-7=jChL>t;zypz|tA{izo_}7nSaVya)gLbhEK9t*xsZNl8rbrP~iglI3{0RvP?V04{Jik@Q3b8O`iKrXQqkU*wqmdEBselO4Z+ zv-ctO8anuXR)1@Dmlu`ADnBNRbYdS0mVBirkZ}SGWyB{ciuh$AwVDPhCTVYfW7$|T z)Wgm3WQd*#^1%6xD3dU6W-3alEyo{&OflZM6dqab$bBVV2G4lL>Pm-yNP@V>fsncQ z&HXFDy8H=&7l|&$N73&=etyo))l9JvLyWl#uAn5g0xp|5Ck63oN^a?IH%AxDM88%- zP5XVNWOGeTD804EgY5uP`;dXJzBe-uNvL)SAzAm%SMd3L&rdMb0K2-Q zY^kTe@+&YJ^nBEy1@k+#$(ABT=2k&?^B_dj&Awz@v$MPyD-|GBxm4jLwAB9uZi)w~ zf&m8Z!ptot4y=BX$n0=_fFN5e*fy}ldcY$A#O{@pOvD-Kl*srFQ#z2~YK!0>v6U>s znw`HhPfVf6aRQj}JQ8Bj3@Kgfq9sR7glt%b4;FeT%OI9<203wH#=FwPFUE!18UMsc zupiQ6=U83|4cWCw%><7FP9>wU)5RpO%twWk&ujz-JB!5Y5XIXNubKkspvrc2Rq9#L zRsbHXf)uF?>MFx=a@FX7$^1M_^$NDub`g_8zSloNL_nWYwy zm=A}SQhZasWRP6!VjB!kD_PlPeU-N%_j#Xi#-k8klxs9zAD#O|a`O#b=HT<-cg-dG z>-(B-0yDp%>Am$kZ^tlQ*?i)VK2H5M2t2}W-TuI2XG4#>6+4beBGBU0bCGr`Couy&fyKL_*~$mwM%6(S{wt15ahv~h7$zq%LEk~ur*l% zI9@wh82Jc#1;%X-d^MA?9;}R)jP?f=Y%Psa;FZOR+>BW_FAa8jjRKhEj3GpXdqT=m z@2~hnK&%@LBF&tyb4X+z=bC>B9FjaP(IUg>{SQ6tY=eM9bcpA!14ePYt$B?(XiBfq z#6@As92Tz8bQFB};XhM@No;p|ZpB*ivsl4s<_?w={6Kqo-K7L=t<)l+;3G1KrmgFC z%VhC$M?#Qd*s0r2tP1(+&#TnaHb&f#W)mB!ZE&kRi&9(c=lfJCZ*>&~}Abru&O zLpIGtGV*MqRT#GIcNkZ^s`w$MuBuU>gfvda+?UdB#qjvxm@V}&RG111r9EM+x_OGoFglz1wor0R&_)Zl)8`(|UG1>O zf{Tkx&hx-&?Dx3P#pz*4II30`HEd@J&fJk6KdsbiRt!|CZ>Awiqpkqt%4`K#p{ zjTs}<6-cweNP|Qk_90*M?pJPQRZ87wi5obG7zUzE)ENOjTt+ut6 zC4coD-(7xE-)>gX)hcGtl@ zWk$iQ=g}ps+Bm#g=_=T@$2;Qr2%YEKouwoupjl|Z|sYQJ4LJ)a)PTaXIkoGiRXB2m+n=b3hH z^fM#z`ZJ)JY?{maO8uk%{9H9*$mq19nK0LG!+mc0P-3$2HjeX2I5*nn9TA(gL=nFo z<%#C`R(W$TIgr&%hNh2pYb_0uo@735Fx2u*-pfVWy_^@0P3*)YbjsYc+Od0QWh02v zR$Ot2S9?vwvgBPLCG!H&lF{CGL#^p~s_UJxVl_9sP%z35pQzC*J@7`-b-f+^WSJej zUWJPOIcam3VI`ZcUL_hHt2IfOxd#apdlGHE`F(X8q9yh}-EkH__g6z;AN~m1zKyfV z;I$fyvn%@7Lb7AD zSOSmL;o_Jep_fb|2W75mZ?Y5X3$b?ouwpt<|8`~Ik2czt6A#q2j?K)xC&vv0*R9|k zXu(n%F{y`4D_%Q33&qZAaEJI5NS#PV6v)dFCa|2AIZ<3mBQ~eVkC8@IlZ=CO!0SQK z`%AB2!h`)UU9TSuh@#c&S$|9r&)CO@(<>d>v9TclOVrt_O063Pi*Z>iF-&xl)JOF# zuKb(9v$K;rZS?3)D?FsK;R&|jc-9+>m10LXvD);4cg0}^aca{m4e_*?~`EErNEaHFaY?n{|lbXLxbKF zmrh2ZxQ4Vx-kJ5{n{+q%nPr;ph6&o+lVVpj^X$YYrb86;Uk}`a=8p4?NMr9DUX0B+ zHD(ya6&8?(4~i7{NZy`wM|KcPclro~f=^PkT&djFx2gZ1syZrG@* z)ys<8xl1la`i4L!x@x+ie-WuGUZVe5yNk!6wmlAe08P_TJEhqgF3!(#biD#;Q2$I~ zbX_<_KkzoI`FsyNPVNlCv<0ura)8}rS(i~kQzE28g;@8}$XC8>gFTB)CX$?^T_XDT zK!4-DS@Gveb^SJc&kVBJ-o5mGnVIrjvoZGK;b9frk{y`EUi9aPyjWBmTe}I@U>A?Y2umckq$@w8 zAalsf0t-H`D%#sb>=b8z+fy9pp2X$?bk=L95A%Gta;veSmu2;i&?Nnoe#XZH`^0^C z!<5D&hz?T9e3242MmPP(3FR+jj^bJDn;a-y!6>n5{t*c%3xQT{;HA|?h+5V_UV2Lv zJE@ISdiiPC1t=m7+D@50g38IKMI+sV)jyw~Vnk@ftu&Ve2&HL`o)IiYGMaFaAu}nJsh}qCP_X-!7s!53XVEjlwGes#VYHXO7j7{C$i4+0+0`uSt`)`CuQiY4OciK34r z4LRI8cqZjPU`3;(jH&3VB%}T{Mi&VhsQJ`7+F0oQCt9Jg=n7>%dFNe7l&v@9nq@ZQ zg$#D{UpygN{v(J8L3x{4#Me-7;=^q>XHy@za*>X4J`}`KF^f2D9vYubX)kJVUk4NH zLc@H5T<7|hc9sgwFX$hf<+5+g!hDQ2lU?0?(`h|UaPlS@;A28czG&Hq+}Ri_ZN9^g zNeZbv*9-r#-S8&0F)lGn^~&qP|3%-6S0~~I?Q;4k%;vP$jnIk(`tsjU@0xd#!f&^Y zkeWn(Z#Wee|LE(bIy=M(qGhxt0xS$Dc$*|I48k=w<+H3ny4dnU0>jHc63&VYvAis& z*B+H4;?Gtwoez#z2Pr-nP-2y%&y8oL{f_aD#x?KPq}jcF9@DRNyI*^XZyXx@iiUd{^w|$e-Z8=cJdI<2gN+c)(~x8XS@s<7|kao zKrb2;j!H8|}sCiu5J zMGS+bS-lp{^^6}=-g>%^;w&flQvgX-hbB$IDn**vG)iiY)`Mx6iM#}2^-S(J7AUFV zdL{O-2{50=dPwi>pUmO}uov8jA%zIxBMj`GoC~-I52s&|&UuuyM~kkXXskA^<2%QP zu?msH)4!r07T}3}Xbs1_T|{Y~rK8%Xaoy!8!y8&~mMh1lU=c!FZ8r4ZsiV}j-P>5N zP;H^lF(45TM0IBe^VQJ+mHJ=cUon{U3~Mnjra>`tfwsbK5$t4u%ZuUAJ~PRxMAG6l z(|(kuvN=5$_}2X70?-Y9NA>E>fK85K%hnN~;Pj&ckz;GWEAA)1q5qC!N>cizKKln~ z>OHg(u_qW{iw?#hC7%y`=IIA}TOTsS$`|352(oBjondRv@@daH+j?ip%|?e=8K7XJ zmKQvh5?SB?O$MrO;&a4@?;?|3qY5BFI%BO^57TOsl-g&99HRVZq+4Py&$eQPlgNMh zr?Qa=vQoi_gpnq3hx-O9*8<^4t=)Fjn++D3vModXh%~`#i`nFVd&N5@UnytbgSove zeq3b{`_L z)mPp=My3?Z&afn$!$iWs=_b2KpkjG9;PfdbaRANc-`=Dq#6N>qkxOjDK`F24#3W8( zpl+3yK>We#`oh)G?=wyt*S^RN5d0&>n>`X8*pF@}_G{fgMzi5^GKv)y5i6^Plu$}L zI<^{GN%pb5JhPOMn_ZS31QNOiae~P?x}0I>0yTNjmOQ`U7kWkM3^N$AU$2NVPzB#e zMF*2h`Yv>!24rxNpG#g#w0r$Sl4oLvW%&>H0>a~eq(xt=b$Ra%h!x>TQHA>@CI~lg ztwzl`#yiS6l@saCI;WK!%NTwiD*JMM@x&NeA1|3J0U{i2v92HXQjS)OCgFWM8B2~& zl6n^*S}2;sd&cdia!lzy9Ei|a)(UF_C)@P65i6X!{)8;ER<1gSO-CqY_mXo$JS?@EA=+< z2_LoUSN~ie`>w-#{_$e%2J(ljnCBE()->GTBnbE3`eIU&V`u!RGa z^)Z`hFEzXVleUkzZF)@XMTk&)NmBr1Q+4H)ZXQJj2%rotCKD|R z%kZ8*u*lzD&q}(N-sgQf|6+!A;{F-W8G|SOi}kD>zif!;i@hex~eH^NaTzR4Fz5qnDAUmp~*SmpuzR zPgky$CnW$L2T*Ap`}dq0feqev^ovH)s@l#zv`VY&iD)91LfP_4>!Q%Uf~eT2IaZko zMK9dbT7NSxXy0)ZrE`3JV$#0ImvC^r`@Z5Yw#M@j_}IjdZT{;r5mND@7yEd>_66*P zlK%Qxt|!|j)P#mwYQIh!;$e?>5>N6V%fe&*8go)z#0`=I_x9W=jRzk%`%NW>Wp%!E zr&HB)696w4^+br;g;}+dXC)$O-((H>uKjs#K0Y>&>2Ma?sS$GUzO0+B-O&rWVXBP( zq{gQn zi(^(RZP*z=Eo=aml=HFxiHuuxzH3OQ$&a3h`ru;*wDh1WPZGJ6$T|?Nm$@nPuB%)b z{6JOd#y&a%KD54U`}ZOrN;-d0eg$>l<|^`}%T)HIuP+&3Q#DeVPsU-kOCFM>%uYPz zYT!wCrm4*+jl|&OLYv5H^6KQ$_1vx&*+stwntzU-M81*Rnn$UUBGf&?+7GQLPZkK% zYn>gXvWJFeyyUD%6?v+lwJsfjiFU!B3s~4bi|&o3us?6~NcX)GOWrtZYVIjJV=r-V zc2Fr!qbR`f4e#D#X-f#Z?VY)-PCn1OGYUkS4tdHNPQyVP#>cOW{6f>#=UvNi#p>AV zW48CaVo|@~a{)~3Z zh4P5LpgpePz(S8~m<8t$Op53bAO5 z;y&<>XucDBs_o|V9bsRROS}I=1)ZP>{@A5k#a`RDc+N_V z^g;ThmNjsVak~}x^yES%y|V64>D;NzXztTtn&gIzDsdeDFMIp5E>s#q7K%qog9WNB z&p4G^^A?##m}g$O2E->MX_H;hW|tWJDTV5>_Avb9Cts!*9_zcTO%E=XjTb8_a8rvb z7*1j7inBmIw>ssdpZQhx;`H7E?*{e^l;FvhvAIPmnmWs-nM*jA`@lHbLdff=Hnz!0 zLl{zftbnbOL0DdZ=tk~1`aR%F`r1OHczo6!#OM45TF8knFOioa7%;{i-+Fc_A~hs) zBZpL|r&?DxO~=kl)bcm2nBQ>M;=*cb%JXQA7UpE7JhIO3O%K<1*I@s1P*l3aZZS=( zqQ)_JWDX>^dmAO%Cu;eJjCX87_8m`Y7@9;5EYAN*31WS;*4}>CT&W;Dmu$8Si4CA@ z}_TaZmfe^J9Udb#s5W-Gk>tBw678dX!4 zm{52yn#Pmdx0Zj0AH!ez4f@*-=y#9Q+__tvxNLWm*LI*cAm4aTsfEcD_C_-=C(F`h zxt8YMnW!yZ4D8uLW!%^U0as{r0j!GeCQep_Rk_J3=2d$ZsbwN|W;-PLWx})$(6r|c zfAYFCu!n4wM+ACx=PLq-Q;DD0k$jTmd|r6DrmL3TRtODBOo-Idln#{ix@Gun>2NCl zr=`S-QeDVJ(JXON5%1ZDWQCMc`<)nYYhM_8g0M##D)dp{$ih;_I$m21uVpo+0v`77 zC#FinFd}&5R6juFLu_Sw-8?cEgTBGZ$6< z{q{SEa@KZm#+4_APUUZVWR{MXTATzRml!nS_j{y# zW`NjtLj&d68tr9XYo%HKAG{Xv^3_L*eh*ZOpK;^l~mDCy#1?jKHfB1ErLn6w4=+Ch8L2S zHxIuL8ZVy$iJ(3f^GO_TDF{wyg`?kO&;IW&fVIpdX;@^h56A+Q*Nx212r~a_qM@zu z`Ij^{@M&1XSCt_*P5qPYSj&~^k-!xNh0khT#RIPk{Kt2YbV0asLqrFpLVWK8<7_68 z3{@Ic(e&*hsy(3UOW3oYXniGQw;Yg95Fh(jHxS-Zyr()r5=LW_EF2e(RRNl3v*EkZ zU#e&&Bf`ty4GXFihbV{uul0$8>H}GfPx6Z%E&@)~xB1Zeb1(k}EML89YFrhVjf_@@|D$l658?~?Epw|B8g}^iJPcTcG&L}f8g+LGztH2VfTOTZ%V}&vObGIg2^9yDvL0EA!XJXqi(WNn2TdZ6yzl7<@NN5fr_+S zo-R-$q4hto>xamk??UgpsqT1O#c*ye3t1031Rj1-XkhvMBd(yT8 z$Cg!R;1Myw%j=vH)BEQsFD<8&Y=s$V)0p>pDGX#1T6o}5Wv3nt-}$hQZuK2v<+1XN zfqpH>-s^dxZCU3cr`E}LcV*#zq$q@HEG{khA@}TI3p$<1j2DuRo*oZ7?Hk}Xf$wpB z`f;mjnLdYtIf)fCJ$)P)RoJMkUBb+5%>!L^3QA?r%C!#*7I{&^Zp`peo%_K1^?L8j z+!C?_4=Cjko{)O5(?)OJFjn3J%8O;TpAnXsz@Mp8lHtG{E*SkSEJ?+7V{d!SWv-7GjKaAND`m&YrMnb@vAOt^Xj_pPz zdYn^htns_}-@;ecEGUY!D%>k7p}m<(lVQ|MAQqkC502>FDPvjLT4rS+O5~0wC59$E zI(nVPe(C4+^vFj$*s5u#EI*5Jzz5){0gP|7rGQyXg3~8LrkWXVl6fs@5YM}Fb>yy$ zYWz63u={1l)A6iOc()~{4CQM1ApQB=Cz$7r+0`n4m;qf;V*sNx!CXyc=kfj~H@U(K z?@ev7%76eR;Mbr-JG6e)npaS;tJ^N1$!TqCY>FB0^jKBVugf)YGADK4TjIFV$9HDRLv79K_?P9#~Wz|-EQ!;9yo zm+KhEPD5nx%E;4hr*E7OAs3!OdH%#>i`aRefo5-{CO2NEDIW-^d#(+~-SbSPGdF0E zQpoVNKMw?4hQf=Z0skY)eCGG}6xWwR94$|Om6`VwbH%ootOiU4QDUa_Z}rX38}*#f zt<0Q_L&zo0*uxds$EYRgMtWT9bNyg&-Y3p8_T2AH;rS|=)H@#k%BVOn}VK3 z_j|kx-(7}iV#+3#o$01fjvz>sf^jhNi(dNkIeQy0NHq3@Uz>(#unWA*h$VVa zm|xa3ssGG_6hsfvg37getv!r>R%knC=BcU!!Lo>AH*8~Gl_aS?J0xNQocb#-*f*9 z>b>>q2cEzBk1|&9t_*cEI39C4;rLyNa++XQ)%yUAI#x}*B46}!D8K6?A6tyX)@EyD z2D573=-ridO8aaCJ8E&uO(%I46fvt?^+hwf+||cNhlKtZB43VElbpvvu7e z*l^O~yqI({SoA+ai}~Hc6fu#iTk}PLkVw(}3+c0G%niQxukH!nyQUIgAMWE6K;Z0c zjXVhP2Bu%!z@OZco6hHViqWbyPjT#lqp{$1Ov|)I>r{^>Fvw6Bx>(RcjUy9BJO4o1 za3V-XlX4PI-qNjkJzX9Bz0v`Q3Y&V91K#+rH%Wuw3({R=Tc1+JYjSufXx+;9{t|^M z225)2iwQX!vCY0VUKw4-m5Y%$ck6?0Qq+yvcpz_i`uxNQ$&MKkONrJe;h z-2Agk!X>k!@y^9*ZRPAN+B2Lx5n8D4PGHhPSE4PS=AKz5DlQ2Ty?JV9Vr;0 zv$gU9(pLB?uIBv>4VKhiOH*cAZWlZYp~~qXzHXU4MrxGMF!Bu%(@N4s=5=y6#Szi$ z1Iwgy-#gveNalg}53DxPu8x81i%L%IuJ#!HTSH`qDFm=mhgGQ+ zT99hB1N{uWH;iMEHz$A*Fc;jI5=Z(jE&P1C^+JfRvS|gGJFhxwZybBSrD4IzhifVkWWUJ)J!~~{ zF%L3&mOJ8Ke&du?rF8SzXX-6}mSojZqx-n2iHQDLk`{=A3{k607hftKczpIH=efbQ;^hOHofoGa|n^xx1d z;+sETcqma@O=j1b!lALcK&k zVFmkG4td}@g;}2s7K{5aAV+dI%wb`qshX;$X(rF$fG|M94l(vkQ~1VbP>`d!0bmH` zm~8JM@p|Wuiz|+K+|Z4$K%d)E0#2};<}yXlTRS{v`h~V1Ecgpb#5~sSWS*d8U4M-C zdRH2vIJzeD$yAtQryU}sau#sM9p#txT)Qob86ZjKWU6CA{WMat3v1&}M-emInjxMG z;v1-KhVv8SYhQQmsrZG?X4EGl2N7sE9qhG}sX-qXOlS&8{L!Y21I`J8vX3c1tT(|Y zK891-5_=y^x#cF^9w(uqUGvnZGX;`92>58~X-2)%zUG*oCn2nk&KyC%a!BJON|)^7 z%9cIN%9HSL6w5}&@e{+>SX`>Mq>V?mBlg-4+Y6|g(}*8Y2$zC&`up*>|NYhRv=W7< zO@S;|#$%8~Y)Rgk$&gJBE>lQ2)Vk=PK18$S{80oSo(I?5Y47#&>!J_a82?&*&nwfF zj4ak!JzTS~f>GhLr$9ER)`j#Y({Bj2{V?1fmCtMxJcAS|kIetopKc0VEi|D=7E1-X z17_ypZZq+21~5|z1!td@yRtbj^=HT5AnD0+U8%_8U&sD&HUc6g9Pj~d3tIRoo-Jv3 zX*}pCcH_jVwu09G|Kox?YohMKeq#mD!-<1^CD!iLz4pHmV|Wm^4@DL}S82*J)2nVZ znPVfDYA|Bm=BHY#9o@Butp&7E?cDN03NyFADN*VvLQY1iUYRLK&L;jS7dbU?fm#z= zlo~AVH0G5|6DX!-Vt|1+oiZD9r@c^|K~}Q)O5Uv=Qu;+H61ob|pcLW28(6!fp*I$x zG}En*QL|KSRrR!TR~3zh3Kb96sztS9;Nwf^J*rT0)e;YvrAf_lVq2?GF|+5Pb4UiR|lJnuK^OC=G4L4xLbEUp#-&v zNW@f6*>vjOUF-0k#bk>8Hy73eXxHB*GSzD@*V&PF%B`7{NUWD5;BWXcDahjIP5c-5 z-}$kc!W#!v=VVv{`&^{=`JAx+*6>o<1&cy(kjVdn%)vS-{|fn>o&!_x{Pzgg zkYBq_qL5zs9YSM2HH(t|XsS0({wb>ID#7J7_EkRnQ801cX||gpH2K@h8iZm;Vl}}# zPRc^>HbE-X#w}#!AlFzd`sK?fdf5YD%{}RfJZ6Ed=O)zj(Lkz{Btih`bC^Gr*wqS$;PuXF z6mhG*Ja32r1$=ToP%pGV_r?F|9HK+*MLe{IDV`_V__q%*x9g3g-FXQ*P7JUXPo?0C zB^IOm?K0*kL6GgWcvI?;?od`{&b7E$fP~Q6uUlNsx$~{Z%Ek(+XG>Nx`e(X&xa3(w z6!KghmhSn%)Fk~mF-41}{N=}A%onoNisWRxaI&s9LoM4zmg|4}Em~I?VCMC9tyw)S zblLZxkiAM26nhMxhT_&nn{Y>zwTf?D%eDxLG%uXtl8cu=0YeHQ>UNTDNs!X{JOYY) z+_5lQm_Qtyb!IImJoQa)4(PC_*1eJJ(jrJiwI57=wTaGNp@f-pz!CU49+eEH)Jf^= z1+H)O7eS%*ikc>ACQwcejQxi!`y=#l2Mvt*W;c$(FB8(F4tpDYul@SO>0GC{|EUm!fd)uN-7>|A6_H_b`0=G*+q=r` zyUogfcj(A4D<-%=3bH;wm}h+cGxU{@gRn4VEMSR7w}`qU!(QKl!e>$YDH+|qIdy!0 z^MettK0&qq0^Q=T{O-Oq5UEg|MC_ve*0Q`bsap?x$4jOh^KgHX)s4mrlg)_`nUHz~ zkeZPP=!zZs8*dlhU8ux>T}(FB<0-&Qlw2>=0NZVbJDEL6i5j?_JQ$w-RT9c z*>1EVEPQcs`&JU}+|G!#eL@f*vmk=d4Y6W|lkk|kWJ5};c5Iak@0h5$zLIjA&~U3& zZ}q{Vs>10aoe3(7pO1M$jFtBBE2*|J&1v@}{t8?_>+Ia0eC!q8yTWjdlss%eBe_oY zW}F$}6{0Y0IzEa(**Iprb@JN8OeM0{LWvJJN>vj|&C>RyslYxX68_|W7iI)#P`I;X z6g9%Do%tuC=XeN$Onm9((6Afih=Up;x^F}+ycq$DKyZJ5ZA1Fhe4>Pfg3rIO+}46= zefexeLdfbK@%TR{+cB zuixIJn7ec+&{!e6a^S7R=)-+KbfFY3M(lUH2l0Rs-7qEF9}I{G=IZ|3TE3`$wrEYj zElVD;t$HD-bl^y_X(sa)nrY~mD=aI!qdbg010dEnh( z{KHW2d+~Kbhj)J$TtD|mqvii8j^PZp@BH~1)dYe%hoGz#CXUDW4roxGl5YDi43{D1 zx7g{9%j?Pw{LtOsiv5w^-#7+H1maqvLG$8>mgf@O%XshuGq$j`hNxmAcm6Lvl=AIJ+)^EHEscn(sN0D0oEES0H zvko&!ZsC2(A=q@SMeRwJv%tiEu`%oYax#o9|xx5@Omuo#%5YSvfO&b5ci6ADF8UgG3 z-An8RM2gEe4-hp(CGrsZEksew3UAaUY9%Fl>BB%EnD9ewuY+Fgk8|Q!C~6xe|{2QV^JS9Mo!X_YS;` z1Fw}{BuPJ$B%3y=S2-MWmxkGKOKw)6w%d6uPD8dPB4up@WkEStdv}*OFq*$D0t(FE z9t(jmYk!Z*1k&71tHWInS)c#4W7uGQxra?Atf+Izr1hFB+$tCm|T-1rJjeRE=bA7fcAgwpWm| zA>tq^06*`COj^U^9xi(VeDL7!>%n08lyfcxW`th>!Enp=Jc)5BjXoZP_Rel)G= zz_S6L%6$g=F-T-5#~|1r=Du;Psu~4ym$b{Lm`0~UqLY-jYcq`yK>O1VFb0eZ(|Vx) z931a8)eY#ZBDxF_paG-dQwCFhW|~KRs*f!o4C&IH4<0mbTN*73G~NqciQA8s9vx-( zHonrdPA)4wUmu$H-=Ak390i?wKUC$rXo?txmdwJhe|Aj?!2<|k{-nx<2iXPJl~JYJ^X*k`bse@& z18v+v?~W+wbou~vIl5yl3}2ym;D)aSVb??2l0X=S{tVeQg_kD@E}@L)-VQ)KgWvK= zS_c>>6K_a-Me30n7h?BIoH8E`2AZ=0Mi@xSriAt(iLgF-2v8e&@EKLLrHUOeckA8M z>NX}IDKyrpjZ!8&e*zKeK}S4j(wllk-5mPw`401T4-bW3^?76f>c8XbLd=Fw@e>k9IkAC2)fgef*jZkof;a4_4yH$n%V7k#X7 zjN~K;&=QOd-w=i=(-jbZd)LBc+t5;$>b2C(*D&k8BMm0y$eb==0l1$;F^rqz5G*<#iwK~F ziw7>y2M)YAxbKl0B^w%_BxMe>gYKygBJI*BlLoGQgVZq6@bWF`iOlO-A%HF!odcK~ zPV!wlSjmIwQ=IM?s$PNni}u-9O1RiK-UcVU_gd97=0l6n7_F|fa8in5WiIb=nk~ai z7Mh1AISpgli%ni1ewl*?>V=t2n)rY1-~Hxabe2uOj7^NPo)b8zd8y|FAueV1oB;RM z*}#+u89LLF>yJdq6XjLV4zaD*#>o{Q$z8Tp58` zLEytJ2KnMpzT^hpYQ%dZkVy+3RcJqHa)d3PU*`|zN3&DdxA_{e?FLZhr_7?S zWH(n~;3+9x(cMb{32LbhlDUI3q!9A{&h3})d2@r$iEjwZ@^1_7;)J$@)!D#pU z53`$FLj;n{#)nV5Wyj%FTpuE&aV_YMV$}hJO<~s&WDa5 zbdtN(ufRF6zT&k)C#mycKDTOHkAH7;;hfFdyJDZ{=Y^A;@2%&2dmGFHtKZfK=$sno zp_e4t4-vJ_MIQW+i&6r0q)KUdpeFD?5WPL*D{CduDpG5of0G)$# z2;DKAFQOrwgCe3rC#&;eJ_kfJg-%!J@HySY(0Om4@2y{cj*KSs2f`;K0_PAqxx2J{ z{mjGX5V`|8htDB&2Xrn@#Q@HqKoCKplh*klpM!IXLSNE86W|;|r?2xtK92zqJ)tj& zpNPvb2j>KZPF&}Me7*!fh=nv#S@8BFlr>}GPoP3_4^MRb>vN>u( z55YMuC!#NO`Z@>a5V{LG2j>vF3p(%S{5a(4EjZICoy?Avg!;RPx~BUKUq!j>|0Om!;!62j`9p-4UIGbH{}qg7da%q8QYW z5xO()oYNJ049<(TA~>fjbk}q~fOA}CK|ts+I4|3Z z;GC?`ozr6{w)WUfTR^~4BhXpvV+UMY$X5!yVa9(Slw{VW-=W`dj zgF5fvJX}11bDE$#_;>D@CIaUOeV_jV=ZFJ77o5kqY!0E$`BNL`xXc2f#rYDPBh)!x zf^)=W&T-BVLY%L_IpP54VGHM2evVM$Tzqc@&Jp6AOPoV+j(~FnnLX!EclX;hF0(+0 zbDk$jnu2qLM#47Evs7dU&Jo(2GtUbGaE=h?oCm>q&hsrM{t+^q`+@JD=R8fkJDfO# z2Im5E-#?wTPIp61;`Rpv` zOw{cHbV+)E5h*fnpXZ!2&RRIvqzllKEzTffeeUkpyp?l-Im^y~&N%lq>Z*8w(h<8& zz7;-B+c?hzmPn_%WycKj&rPpc~6zPb4@r=y<4$hU&TR7LCGhL+vbi~fwYn!VIo3*yj+v}F9 zbnz?DQMw?OB}h!sBIowA)45Ton)UDC+!(zm(k18^j3Rbb=cUfooG1Sby6hc_@A=|; z*;_a0b)%;^vxrT(ONy#RE@6?q!~MQNx%k3Ke+qPkzCR24KC6tbKt~@Pu_;@lbFOq= z)F#C=kV$ST7nYsg@|NLfuE(MU=qS+<8#(v=uAWNfm!!9r>3OZ|A~^SOZV}5kmlTV# zrK5MqO5?L^*A9BEM2FB3i*lc&s@uY~&)XQ5M(4UnZ*9EnYbCmel`e>t<51qsxiq>d zT~wLgR=KDOU3_xVG{MP5>`BQv@0#;8pvz||)bn#6h-zL`wOmlRAogUP6a{+coTn^H z{G!XQNdMem+<)%4VD=xes&Gk*>CmoGW?}To=?(Yq%_^5#fsV`Q5R2j!9duS)HT1S? zfj!rs2Ua@0c-}5&CFW)+dYXcB#Kw_mG0e>OdF#?dKPa89n~eGCbjmYUVa|*C96m>^ zN;y?jXqvSzWsy5AD$YyN8!0arMFSnNE@}G7=pB8RJvWORO+URVVwB67&&tKQII)Ob zQA5$D(er&<=~7&jp+NVUW?hX?P2s2fqKAau1izAr_Y| z#bA_`pnn;U>PESrs(p>L)C<@Z;>Gs4z#Op}^rA>FP;V^RI^|_!CD1!~c_r&XMLBkf zMl1&1Ybd>Hj-SlcbJcW^-mFDfTd|%7l6KD&EZ8^~u{>J?`e&z$LOp9t2B|eHa=4kK zo?u9W<7b?Jq+Z2(p$CNoRqt_zDLD^%tPsE)iPxK>-4_5 zw}p>2iO8H221&IKU9kvPvtCYoRys#p1(|*EQqJ!CW>ViQX7OuVhT?P~v(0^4&I6UC z`)ct@G4rXum!fPzW=^_SP41Udo&l@Rda4#8&J;59>LsWq_kDwUP)+TtB`m1U5dzt! zNn^%S5$@M!J%KqwL+b1F-0Z%d_4I%_LMGwXON#kUPbBrstS6S2Bh<9M4Gi4+UrDkC q$7s0000euh!o~lE|th~zvXUjxii~d2vH=NkaEfWP9%i6U*@{)HJ6Y}gyfBG z5;jSs$ZbLwiCv%CLKC z-Y-uhQks+ew@Fr>7*XE}*;Rt%(rGHKtOc|03dE<+qovhd*cQUX^Sf^hb|Ybxc%!`GQ^B{M(iVfyhE^EKJe&=Dt^63HdZC zlJxPh;;fApZ3O^+Vgpd2?^nHqy?5_S&&Za(BqAa>7 zPTX1C`TCDd{auguml7>PJU1~qZEky#KDD`NnM76gDx(V`X>&_^E58Ia!CaHuhF#8t1AT;ilGb`~4oMxa#{>z3{f za1o;);?l1b`68J}+m+!ls}w5!0fbU#17-5Ch?xou=gR??K@Efi=vxdr9o2Iu^3j-O zaDk%^pboB`&Qyy=^fy)fc*2LI*_u)sFh{B9tO0h+_P_IWJTM}_g`$wy0W5fiu-wYz zL|1d#e)^y2`lc&L+7N^~>j7w1n8!&@_67h$Xch%%1ISK&xoN^3zV!RNL}QgMz{T-J zI|*hD2#}q-K{diAH`yJWI!k%ML5!}%-67I%La;UTPwS>MM(jc%Qxqrxy`Y3^rVZ2# zEcrwiIG`j-RJGLliln5tP{Na6H&9!Tp~nO<7XWo|3k|KOYA0niz=%wWpaGb>%+nbR zsN?ybfGr|uc|cX3=!4Mo7CZy!HC=@~b3_o)BlW?`gq$q0zb0XzT8k#r2!4Q2V==a1 z2|0Hw_S$LM8Td*w%t;bRV*6ocy72a4{gNi7bt^Xb710;Ol?+dHbC!eAYCwN_wtjUv zirOl8kbjwwL;Rzv5BEb+(lq|3@44jO(>TYqla`G_i05HO68cZ}bEKb4sFFLJ@OAB0Kd)uX-X~eFPV5>85%NtpflafGjZfQ@BEL zBvzj3Sy+70)*b48=y9$&hmYLX52u|d2B%tJ)|B64sG7Z>=ZMj*{VL($w~yoqlMR=yRe=z#NZ?2y0-oulNnq^EBZx zN&ikLrWouxu!}%?t8${5xSL{-|6HKfl#Z_Y7itfed&mt`hKl6_(-GBvuQLP#VI>bp z50f29Gh9NOjEMp8GmZxJpq{`7+-F0>94Yj*=0Tg%6LaRE4`Qc*3!VqA3F9xkz4^>@ z)D!{bu?6_30#B8~zvCRW5Ot@v)PYJP<*T4Rcc}Z4XK#IyvxB||P=*eI_fOVSXW>^a zY-nWtG1V^Bs)MOPs$46U!g@Ws>ZRoY4@5|?wCZtmHq{sf+#n?rsd^&;4-~CBXT8BJ z9E`>s%iUVIdALm%g7Jh463cYNATQ7~L%_sY-H+gs-U41;eT}mv_#nbHXT(hx9)eFG z5M<{f7;+rnmWi^bIuhq>k3h-)KDuxMn!XQ($qNK|ub2+~Cm`K$b5n0BS+SLw?t)E< z;X>yJGK1g@kBh#QC&*1l$(49m1jpkgkexVZfWM~XTUPuu89aQX+MDmDVzRO1^9J6z zBfu|B?+TN)G;p?@V^74}1Eyf_L$fQVi5Dx=tob7BLWD0YWav+>tEO5t++Rw@^={3c z6gQNg69T!x8n(PQ`Olw0ASfW?k^S2A!=JSs@-?ER_X7&4D&&o3Fs9o0lYZ0YR&QX) z)gM3pumR@UuD@@6v}Hy0pA!l4bT8?_f)B@|Zak)ifYnlSOR}0XKiXym(JN?dpm&=R zBoQ6X1yk7$;YMqo#rs{GHC9advc^`~Diym?yXG_zSbFunad&NNiZNVZi8h}IdNLiB!Uh_*VP^?e z3y2h)hAmK|?k9pL$v#ew&XNeUz!hcwMW@x?5BD5L z0eK)JQId22pta6DB6C{lNE5E==BT6+za8OB(YJCW>~iO1{V8AU zxA9CAU!U!&PdN70&7T91v~Re3(E5QLTucPDAlZH3RY({Q3=6tDI36{p?7JYk<2a$5sFCWxz4B?H5Ih9Iur!SPY(FJ>F zs!yLJ1hQj%xUjqJCG2_AzwQLh0%g!@U7rDBk)VDz1s^czM-#8ILl5Hv#EZFv^orU&i?k5bvl(akdFp6#z8g`rk$ zf`oB}&ej`8OF;c2bKw)6XQ9Ry0I%WsOBKa@J3|CY>mr{+s`0p6e`0TA*jElLJ8UKF zP;~35MOrqlYXV5SLJ>|rwy;?<@IuzHnxyy&EZ->nRp;C5IfL!nx1&bT{6?v~E7Pz ze^BqF-p~YHY8o`rbZNz{ev?bnaZMb}1)ZK5yI0s9kcOT%;|2Aw}DMlr2bbc`vY8-pq%CkW4g6-qxEw{so=C6>wQl3ZYfW?g}T=Lk||c^my$yK<%TMH{b(h3~$5 z^`}I45nQ+`c33fZt^l07W_uhj!9}VKaK5Wbb zD2*+d8c{U1gWhS52ppvvZ3iMUqp~9Ld5@tFe@Vk1zD(y!j6Oq%HPP}z0+7xYdb_Uj z&sSEOj(u9b0_+$h@;937a`3F~u$m9tQGVtRp}l_}s9gX`V8K)5o~&vUYn~&QK6N>Y3@1LA zz6xY@_AZP?-WrwUM9*2#?v8&6F$5})Q3t<=nn0+gf1fyBdsKzCB)-Zs9FJ#_=u!bU!u+;YLny}3n51^D~6!}-Y1e_+~$sqE?hB^IVZ zv+4M!?Lqy@Hf@EfLXGw$ zST*Q4K@jGqO1+On$Y7;cDeew87@^RnsmCjLW1;>BC|K6@+8jh>DN9G~T9v^jt@)J< z$z_vb@TI8?RDc`d`4uMIld>!q*t~ihnA*O7S99h#F5mjm34nsV z6Mgsf1REK}>ddhpFdB~SWa^)99dC5w$|OiT`%_*5&HMk#8x`B{A#;Kt5W+FIpV;Ov zcd4-=_i=hL#ULLB9|`V@ux_{K|>=v3-E6a{x3kZ z{XaTzbH9h>;*(XF)=wTylrhIJKl1!%zIFSq6N%B+Z7JEP0DqQ@&9kqprV4Y$-QvcE z<9;6?qm9DSpWrJ$r8DhM%Ki=tux*Dzco4bSCSgtPL`hO-nILNOvT#A+3#IpM5`l!m zx%4wYWJ=jd>foPUUb$F}Yjy+(^;)ROQCIG!IrniDom@U%6;G0{3iL)ZA?(&DRdu_n zs%krx8z=z83T~PpPB4OkZ*qMb-P5QQo-H!Ynoc$nG{a&`Yh3Uz{<#1i)1Tb8X0s_C z(sA+Sj`)y?>uW39PvfSf86#8R)GF$}(J`O^eA;zZ_Q<>t+(>@FBd}8zDCL^yF+?UD zdXVl_mbFC>7modwii$7C*TU?8P>`PRr=qmco znS7#UFxnxV`{*w-Vbw9gl{R*@(I8|&Q0ecP$<=x)nRvHXfdAq)&*b<=65Gj-aalA$ zJN zt&0}h$wItFB|kXnvd}%t`QM{^w_l)>-gwrGYWR*+pIXbgt101ZjI(1U(F!!QXv*D` za_{)U-yGZK#4K+%TsN(l?j?1<5n?>UnS;)%vd&5s_}yg?iVr3nPNY9bV!*Z z4~!TMic-2{2)`OSdmRHdWO2r;*bb&lRh8$<7jMwjF|aI&O(&P>R%T20T`hnY1gq4- zg8+d$7{mLYkCH_;1-ZejoM-EK(;WyCDR}45N|=+Sny+Q5qBw2i)nUJZlIWJG6Ceeo z4JYi$+$CZ1W?JlZeqdi!%~bm^)D!tAgj1Y9{|{p4U#{}DT0T6apn%q!qG&V`au2LU zLkrO{Bn+B-X)l56kQ3Qt!cUNIt{*1Pu%Y|y7p&EvjO9vVMzd5Z+NYvgZ_icQ zGGDfrg9zrtyaxcke6snnc0BF{Smwj1fyZe<5&CR;(c0`Embq!v^&3s%S%qxVuc9d` zS-uw%=UQZetwwNCWQbe@%K8PJiol2=I@!y87(;O22@*k>Kh=2Z%aQ?;=LgNFtgZGa z{$jxeK2-FPe@=Gm8Lo!F&t|I7eV|p^q?!|RCE*B~c%#8BffEPgDnwC+x!HjfyI|_? z?Sd`tJu2Zw)4H0`;FS>cv_g;_-{HoalVxBYdSs&O=U{?6^NNS4Nd5lshRFz>M~dY7 zAc*{#O0nG`zadvHkd|4zVMsgf=|63NwX!X3!{}v;cw|DxmxM?TBdERSGi6nLkPCBU0Zy+%&3b1u^Fr-g>-(H$o+oU$wj`@ z+KFsRSpWOyjc>&g8lYj!^O297$)vO8ZA-lPj!BFBX|9rbP9R8zHy_+@!QAQ4iUqtt z`jjC0heb3iOj-<_K6#l8#14=l9~@`K8PiTi&oAltat-ZDzIakzqr)RGAtXY{0d4sZ zemB8O;@mA>YMgpd>hVH~L-F>p{K~umTGkEqAxDl3mMet!XZF7igdhNA_ zd)zQ*&pEj(*`(qm=f8LeFErVV`)R- zB-gNl{r5XYu$xa`)C|dcp&)l)>FqpiOv5*>EYzv(jCK{g#8y_QwlRSnrZ@>={-tMW zd;(#OWqK{ZW*W>El*b)gv=5579SVAB2j=bhAmp@n0lj3oYSNgMkvBRJiisG-PBFl+kr;8(x0wxL+V68n8{d+jDDIsO*F zhLE!UB|O}2a%?-4#eoKU7y6fXHYlr5e`ym;k3?YJnec@nk#~p&>Xwv|vc6W)&KD~Q zV?D8}GHgK5=i4pR*j@`S?Ava@@D{Vaqwi31D!qNBA3mTpb^R~*yvt>i=!f>?U6Q))qU?VVlBuAE4p zOYNAh6zis0yHkCodFL3U@#cF~!7aXZkbksxmTLPtk}Xy>kpN>{%&S4uc#%Mgj;n@p zWuhbmodT{JShb4gqg52D@wwU4r*AZ|z1WawuYe6JR@dJP2=YK69F!A%iwt4P5N?RX z-^v+1 z3&()#yVwxJ1h$G%ZQr;{x?72_2VxAXnsWR;e11~|bxktohU5J}WjiEcKrm1Z2gVG; z)jTAN0h%@7P~gKj@vfU0eXws(dFReESMW?-E|blR_VPxP*H?0Qrbq^L{jgstH}X#7 z8Oe+^B~Xg%+?dOx+fprf?sRkew{aP`oN;qhsqy^2|OS0e#C(FHtd_Yvh9NDqIoX0EI8lgUhYFd@XCpCH^-JK9#q_-;+AOl&XdUtk&Ba}V6RiAc-Q`& z@UJyszQprBa2-9;0Na23+GF8=MO%hY=km^A?<4B{m#8DItuwIcA-9@Kn!a&z74#Yy zovAFf(MF$m;5Q^eaPxo)JuLxkA!k8%iTZnYIAlPdT;QTnKdUZf@Evx3${mbbnVj6( z4*0N0+Iz~1jo?v9Zj>7EP$BX{-b3nhe3s%0`_XbROU9o|6bbBI0Sxa4A%Q^B9Kk~o z)nsy2lPfqwt+sAJ=%!?K?C1tU(`E2Boegbe%c=~W=2G+P=F(Y25cb&RR@ymI8=7KD zK?2Rqn6o>-oZ1faps?PT*~@G1r%BEKFIRD~Kaa8kWIUe!$@sHjh5~*r@IT98fAg`a z3!DiVt#m={60#nEIu2Pht65qIKj_YDw8(}2m!;V~t~#GhYr7pig$@soge-b`fqr@ zOCR`;LUj{24hSxoGDg4TLL_mav59?P7q?=S#9_jki#D6KIDs2z{&TBDBdN^8wE~FB z4b`8`4zE2!`--+~fF+nuW3<_Bij|1m)06$CYU5FAe?tdQg%J{pRO>v=VM8#jlHW^8fGRS3-L20N5d}ntEd0&_Jx`K7o2YSrvTT1@aO? z6ER32vNiqDD=-*buHV;d5<;0BgCDa7Rh4Q|Za_4Ms|zX@|*+}t;<9pjI`CuFo7S^a_Am~kD~ zdV~ZYpbj__vj{CYzZCy#1k*??{X1W<3jQL1mBFI1K8)ds5bv<-s_JD1o_|~0UC-J| ze9Rts)a%p#%U|?9S{(>yFbVjWTcww{Tuzf8fz&<{#(1#mtwtECGu~C(C|UaUsNlf* zeb&98C*q7GO=^ps#U6ryqKk)6l=VMxTzx&Se+%PE%v2Kjl#YAFMFNT-9}4gUqaEM^ zdc}jW6XwsowjdvN?0j_|1djStR)aKl(7S{62|OQ(l`ua2rA`m64!Y~BKp>I8X;vnn z-_W=sc`WfmaaqJ+;nq<-6D6E2*t@tBmuqeq+hLi?I=&<_NmU5!PC{V&z@Oi??;9%S zfuIK8Z(>><_q2E9H$lKH5(u~Vjqo*g85ww#C|Lk%czban9se}{EBYKIy1+7lzO=U& zu{OHg&$$sM3Q4tNrWJrffX&fGE{GSXUtQV)`(xz<7cdkX8nts$1cVIhApQL)WPynh|bP^Aq~edKa#pDzG!EI zG%ttV&v^5hVJfFtlujKPX`nLifbQvzfNNwkw0bFg+6u6d0XlcUvWa5Nb+9&JJBl5% zzn}1Dp(1gOnyQ#^ya#w5kt$-cRvZjx6&lsguWz z7J|P7`ZaylIH|2W_*>U~OWI~lq%R};>KZ}S?h~Al(*U+b-9~KoMbC?59Q$T334F!h zsBY;<5ixtH2mtnTk?9rjxlT`xrIxqBf3G0~O2I}GCPT0MG75Ve_}G|W7EJ`B*q*GXy{4Nps!KH=P5W}H(fApkewV~iEWkyP@iy)zl^uEx-!-{hhQeBb zNUoyen_ZpEj>zWzfV0jb!^sk#SN!tZykS0QS}v2Fqlc&uGr> zYx_>jF8}x6-p%f*U`5lF{m(J)`tK?TUG-Hp+yU>4jd&eKn#2lg45CRe`Nn~W4ra;x zwI(-2e<66~krySlE!S5ZLD>N&o51TtSQiO{m-}rZ53`OZmR!0U9v%9cdK-Fj)HV;G z4a2%wr~OAnDV-OvYyx92#MfRB_$L6W0x)y_ga}+@Msnx;%8(zf#QzG>x7ZT*yqSih-2y4uun|ySm^ML#{TY)J z@O6e!5Y1&DNgAbE=Nd2Ks!u-~@?k92Hw;F(n(1i~zp+lAl}woSeqKWc0|~o=kk}t(`&I zR};O^1Y#muF?aeV{;P#HU{cy4vPbd)`aqQrfIdOYdnXdng1bZ^~>sji`mrGN{EG*TEi2Kuvauect zb;uUeuh*KIklGEdev+l2Qh}}pOClt!ikTNG}W0F@HSC$V3^Np>WIU58j~$#=Y8){ z`{vr=6HU_Z{_k4=;Hvn83AU?y;OZ&U@Dqb=uQve}vhg#PNuQFa$3N1=<~^d~Hyx83 z`#uHlUFh9RsQ_j9_`7BuK6IfyvDY+i!jVLtdd&Zt`)5;j(S`oaVY#mtG?}y!uKkJC{2BKI~x;FxlCpFCXyd;I<#+VUJ$2HzE zZZ>F*;``dHmwMUfZb9VG(04;N;H5P@@*OY|0ZeuuMr|c=3{1`iT9n@K53SkwVurFu z=kw5gpCsY_e@>zyZou>e;Lt=!UwY>2_gTLf6nxbQ&Ti*c9{uqTaU->{@2G=~VbFel zLgwi6tSoonX?mMQPniarI3L*E@$|h9cII&9Yde1GJL-3}Ts)Tgjq@WDsVFpsoI$dC5V3T-a5!>^{lwa{c;fk}}veByOtZ@n|6 zLP@k%i`H1VaKL=-Ns4yLLXnmywSp@yeT$Ecz&tGaL80V=#D17q^kERR*_uc{Uf~oj zanQtNj^r-`vo{6~xlK86Mb{lR0O&`yZ$)4VWBT0QVs+Y~UeR`3ipkQ>UN3JIlBjQa zq=bHBf42d48rb#3CW5~rfWHl}s`UhUU!;Y(diHcrDr>%@SlAMhX43UZ6`DzicUv)V zJx2gvqABLL>|dYE_j#}NMe+U5g;$dcz5D1kTkHY}*3NPJ@oc~6C_dsauh3?1ucI#D z2l2yWY;A1psKtT{e#&+SfPQLfIkq?P8A)BcT9muJbJPMwJJx*qTT!-ZD*n^N!lg7q z8HMz^6}%6G_ngvtrQxWzfp0NIW0mW>qzBMcUz=IBm#j9H@uuUV9Q0&%js)IJ!SUb8 z5|pAaV~eXA9GOlwfP4fo!C~wIBRY<3fc*g{R5PBGs8*Aa&CH)j6q zk1_x3ko{sO?7!Oq{h&`VNtl>W@J82RM4TIV6Q)v3(RL;0u|1!4c~pQuy&U%XWBSs5 zkM9#UJecm}EXTCl1V*x_TW`(_+A+*%0XxTr#9XKEw@&dVvNvF6b#+Su8XyUut_&oHHEJg)NMxLg3*K5@lv z@7OVVe8thqY|Ei50g?@vcU}Pf>XW(R4P}QDoD}+r&J&)^Gkye^>GG3eEk^*Lp1v6_ zV9|WmIpv^rl?wPdRp|UUee*~P9IdC`8LG!F`<`T5y_lP7`U<-u^qpCD$hu4bms+#5 z#kZ`cg_MZ`{NM})ErtKl*!LZGRkGP0x682 zQn7y84~dU1W1o0IrxykDjZ;nGe?1*`fKmxze89EaXASt18LDiX8`^iY4VxrY0f!e; z&$N`;P~xms{wL6a;O_%7y|4j|5_m8B_+d3d%cPVpK$F9yP)PbHZQuB6g<2M)egjVX zW(8;9Ml1OArq1P2;`4)n`AH#Y5tFP_s}Tbj%q$5HErs!p(MYMA+rKAcfWi@lE8BBV z{!`QCb_P(7qk&f=3S7swY~)}p{mPmOy(mE@ZF_QiiZ?SAdE}o^Poe7i!B00j^zv?2 zfXEn-8ZEGRdF$z11Mc3;n96y%?|Wm>boCy|c3^qTK5HN*;jAA2pCRyERhMaa0Y%+oP5n4*=TY-wMQ@A|r6)VOLBE zA4RV+#LIYT4++HuKt5)gvs+x{rd{NA8MjgqeE#v^s*5S}0jI1io*Dq6X$norot=S^&xYh}0t`snF>U}N%Ubvo` z*()Rj^a~`rKyjyPFYRC@&s=zmIs*n<@_8R2R(#~)H=5Mfoks=b?&`)@Im&|Hmd}1f zg`|C6@Z-ibqSVVW$8VZHfz%dd6}@}mX^#$i&g7|OeW0MEgAz)$@nS-N-8zxo`3<|- z8+q#E`>^xi{0p(eOVibUh{~uH=Dro#>|xDaGg%MyIVFTLc4xK`Y+>Wt^JQrZ=ojV5nY-8IltB7bX?8w1<+r);N#-Yb0Qbw>%NYuL zdg(2ntY&cFeM0hd!uwKKAv1(f`}%Q^x$CW_1}&?Ol1kVKXYEVJk&qD! zXx)~{9Xm8fhRfPZ4AX?8|009f^{jc}+s%nLc`NW!=c#{g= zmx6OwP;8ZoPiry7B7lndLc-&n)-PFrZ#7ZqIG{%0J1>eZsC|7$q}wz6d)-OI!s65| z4_|5YiWoo@c}HZ=$^`eFF~bI`X`Lpo4wV=oZf9yi!2&Rmb%w8Sr&sZ5uP}O63wdWj zNa8$VqZU)IIAE0~;4dKYjZVeOzBBg+PdPVK{Z z+i}*REWZ`{8Hl#ILKlZ@pMVzaU6P&5PmhLDa@DLMmBc%i*cRtuaAh^Y+*Qf)v>nV^ zK~_3yWRzK33yTKIe80>fpYCvw%v4=|+5+26QW9vX|8mB@8|M(% z3(tc}R38&1f|@H713&lZN1uFNXR)b$<(ShzPc2_EOx6xvxgHL-9%w5Bt+*d^w(PsS z{`1J2%WO|ADC^dv%!gzY*u#GO^;{g*jUcoA@sSexn2iI~yP1`3jNEwZG)>xF&LE8nfl3(M z(HZMrUv=F3$gN!6))UX%ow@GWIggZWFAhG7|0JqcrE#LCypw|ks2}VAv-9p&@$%09 zGnnL35%TQ9&)`3MTr926F`Wn&jF8Cd7K3bypK1%f7$rX-y<%Q<>MtOaDOg~KnpC0h z{;R%LgZ#W7Z2>(_>u&=2ouM|9u_NCgTbvwJXeLaS8j}Tc^a(A>AD0Oj{V?G@7|%Gg zQM?f0dKye5>?ndco`#jTMF*lKof7(#7=Qn{<`bEctWBIIpyy08iTSWtsMC?wCVLu( zyO{(_Ks#^W>**`U9n3C#=N1ya^DbLwhC2IW-*8RO z|L!{<-cAL=xXr^ic;VPsj7GYi+40ZzKOSDMkhN$IR}y9Pbkxw7>RR>s<+pFGDbF5n(6SmXL{9B!^U_5@}mnIs5v9@Q;=jN=Y zNObYLsc&E1Gt?Oml`()7*nFwc1|a0ec~t*0;+)-i;3Mz)r?^K(TG&Hpg5pf$SCo$hE^`H-97aW3z*;%Dca-i03ng>C7v^%m$Xd?F3}(@j)g&an6=rwuuv#f-7NF@hKYz%Z!x(q#>*?>a>ejUU_>1Y7HVM86fW?<*(`d*1X^OSp zRkjW9CMKMu8$&|}UR^N5Cc{3W{35{Hv_&}@%vVGGgJuOZ@wLUqtC3-3MZJzVXbE5~ zU>d-%RzIV4<3DEy`L~UjoAy9q5?Fu!d}mGBN6-4ztSM;)8<}@mp5*IuhyImBzK6st zHH4;u;M<quJO?=vV%gUTRbu(G|ZY-o0T?q~`zE7(8F1|M-t2icGds-<_V{?q6vL3}a3Uz309 zgX+?IW8XIhS+4YqjrMPRe6NHxS1s9c4dF8)2_om^UO$UN;Op}CQVkIcMheq2y;-UT?k1-tlPmJK@0DOouG>9|ZyiMTAAg_xZ z3@*MM<9At}{XX%U`t#Ahxvmsm%ZujPse<8@rN&cIJ8BAee}>YtB3SbNiq742e? zk>H|7}?_8FtKgrYtvmT=fkL)a01zu{e_VY7p_G+XI&WR{A6<7 z$RG$P=X;3mM%;m*i#g%#cu>ur@_S{)MD>Y2c!Ticc{L)R{+*lbwzqHl%ZOs}3!$n? zO~8++9k`37ddt0&@tRMR+_^T_gNFq&p%+owu1Alc_esu`tHq%o4tx9&4apggKu?sm z*icn<*0y!^QA~4!jt1`$!A4uDimTKa=$`VLTUI(vd^EM_&yV*X>)uV)SAfYG1szlCbSh6rl|E^)b>G{w=zIu=z8g z%L#0+RZnq!Ttj0meyNF^Bd;^xDR|+MVB41r37vP|Hv1-^*dSUor5M-*<(RXJHp6wd!T;&lk1NIHj6*P_|&YMy+`0z z*a&dKTYmT=f$IpRpzs6m z*Hc?h8}Nf&j$6kq1pMh5xz){yrB0 zt1wDft(dv%+xE>b;;;_R%){r-<%_|j?@!zfol)k2{I`4k~4*GJaCvycLuwkb+A;jadGj0mZPRlEib!0CRMf(;d1cLZ@ z>?WgEa^94Z_ux>F%_I$A?xATmVQhr#XUI&*eqE?)V35cgc$^;!hGcA0%BclCGq?wm zO4e0jEqY?(RNpuLh`z3hV zh*WG-b5CzhNddwRYkTCR;ak%>Q!W^P-HF?rHKfGG zTNT?G2cwj^Wa|+y;orj+dISVvnMk$rQ0&u3I-Nz8`*2`&VYPITRzWxe!t1#}uEeDMBVo+QZ0wlYRXj0z#eOuCn;JS)|YUi)s>{RJ5PM)vj{);xb z19#v$hQ8!oEh*0ebtWwxJI|3?cJp@<45Z7&vmqLu(M!udA#5GE*vWtLsonyT0uWFT z3*+^WZun6r|Ar0BrWU9{2=SIr&T9*wN5p7=f^eD_pd2jOK%e>sswZJggw7G@a&-MK z?>G=?(cnLI1+)&r+v5r^r8|kwX)o#mI&&ADyX-(feahF& zK~5v^IytbJ`<};XRQLvQd#n_pmqvE6+k9=yypa9V+j4=5`KCx2}fUw56Fs8e=|QZJY|mv=f6msqk5bHL#6|mq2IoUn0MwL-Vwv~>JyPuQI#Il&al{#>w^2h!6Q@*L}qTy2TY;YC;4;2(e{k`K4l;FEoQ z@Zt)qv8Wi4*+l;<2W<+8I(^yp24RuCffYX*dZ=rDE03~dl?QQ!nz z;MPUIq7lLedrHU&{gK1Ns@d3E)%OpV2W4%Z5Bg`&J@;FfG92U_$@%4r4T|`xbUwn+ z7SdOpN;^2~yyI1ku05rH?uT5I;!HyFT;J-t2@lhMXTExBrb}1)ypVLz3Giy`;g>e) zHJ3}=UssRJpVd60zncZu_fJQ%{!6>u(kXL#h|}D<{bFcqfL}pI(C%=g(H~NqPj%fk z&@7ODjEeO1W7i%Xk00!>Avm_0L^W0-zWm5c_A)py;dL7uPDy`Yc@mTsSmYsC#!XYs z*K%o(I-svambc6Q=}>f@-(*_$?*1cx6<*8r?qMqYrToTyz2+^%gQ*jZj03}*XKynz ztxX@^-P>J~M7TaX6t1_ax8SpHzg?(%VDN^yR~_h8qI2vJtBcsA^_VJGtvT(sYvD$F zFLZk3*(&_$$b4^-fM{i!xaarwuLc-LC#*6zYCfv1WNy?va>1of;iDfFaFLhYst^8? zB3CD=7#H;OatZ#`3I|$$6+WU9);DM;GXjS1Bb}!^_t-%f!Yz@8OS~BQ&peSE z6&n19@gCXA_@bR8v_ zb5keS_UOy%#i*vTGwt)ty#VUY7K=stwb<;ooH?o^e%dk+3jPgq^b$iodFm~SpVq#d zV0wg5ZjDLB-SCO0h6Lk`XIaKLDQ{_uoc}6pQOeBlOyCr|5!m@X(0;J?LvH66L6LW2 ztu~&?`qdNoX_w=OgwhwAgp;~u^`CDFlli>cZ=W!5^7<;Pms6a#cQ8U67*uhPfG@z2 z6R(RZqofoE_0QDddf!<^MSbyNnshni4Fh{u51B={@=Llh{5J&EW8%u}jdZncC*ABs zT*e=f9Z+#U8ePKvF`47L;Q<$$7faZPuZ-j)nqOmrg%=kikRwU3Az5&iivlG(D)@z$ zcqy;!7LoDRrOYyahP+T^oQ6`20^pVn8}`{K-8bzI<)BI1Y#HUg;zvu;WZWHfy33ANhH z-qi5{mzu_|Lhp>NR43Q2^3AE#RvHxX>Z`s9QxaVk#P&*@tw|nr3~BP;k6YWylND6~ z`H7f$j$oqIT|>Fb`ezx;xou`hK$=Nllei-K+VT;+bH$f?_u4DW!jyRkmsgqU0cE~k zoqVwIhS|U00}-!&iaxmRY8rIKOT|1%w`#nfX0Q?H*z=!33vOw&|9J2X8G#g~4|hLx zbK9Q?wY=(}q1zjN^_eJ{r*Ilpx?NXy%woPhB}-kNyHt*QYtDCKB)KnM*L7_zDw}Uj z{ibZI`1F+6i{{GdLDiTpeGLD^>ST0eG9RutpMFP>kbL!6w!i+}!JSYxSQaXiq23qEE?FViq`P9e@7oANZNPCmP91e!4IihpZ*6{I64oW%t{|mnlK=6Vp z7Mw=LkjUwOA3TSjFt5)nMoB%Yy+craNoo|J3KCQb>N-|gsjAfj|3AC;#B}NP(MoY{ zjw))-R6&znQlkJhCm2*pt9w5c4OLT*>jp>LG5x38)e;Y?(DIZ|NsRzhQG)6O)dN`` zs(Kps>o2{2x2r&n!7@TX)g=RU1zJ|B@|+T77$5n_);x0BEhtbWkks%&Eo%~kdPDb7 zAJ(Y=01pO9L_t(ZBcZC-lqj8#!}^DC+C7aE)T8$aYDNI4Iq5;Y$q!xq|8j6NnJDG{{}XO zxH4pxw8+wX*dTMkYS^k-H;l*%svbAod*AS!KN7!D!JA-(KEgk@1E99sS2sha|NqRq zKC?pSn`VI;XVAU(X@7q|eFXLu8v94Q^_8^n&>=R`R_kzo>l@NC>{1Z-E@=V<)iI07EbDIc#sz6Pwq~>-3)TRY0ZkLMYIuTmm6Oc_QN%fj6YBT>wq!d)me=gN- zckESFuO;jisPaf^xaBFKf~tM<9in2|Z!?d9eEO*ZHBMVwQYu$N1XZk{`c>2`1oh4b zs8*1wD~RH-wX0G5J0BjX$ATa9oBt4%ru}b$s;l}`jHa)Z)Qlb;sDcGm+aN?;W>f1x z<&vsE6)&kF#;BqN)u*C%{DZ3Rohnczk<<`DE$Y0*4QbPk(yrB97wau(aHMMiqT>lX}Rf;Nu zq=p7+c}GC)w3pUw5_x@Nh0If>s1itOSfENEsQy5`YQM6LmU1mBm?E{ah(VP=P_>F5 zL2YgUYOzwv=M||!BsHWF{>O4W<=s_hJ*Ia}7f}77S3SAF^=B2R5nHs2rDx=LNC-Nc zS01o-kWx2J+kS@96!XkV3MEmA|4!~K;SDM=kXE*DFIj!!>gtZ4*%s8QLTQI3H6t6S ztJZF=0o7js%s^Ej?XaZEBB;V6m67R{Rs8}?W0F)?a2T)=({PY{>Sr6 zC#bljE`cJq=FhLs9Fhrsprd3;2g0f5?C#Srb!>__3U6UARG78 zC(ugKwM@VobhUl3y0ewq{)R8I`~r)Gb+y!OLCx$osDJqU=K5+XRiuC}bFAXl!0wA# zda5DCZ?9T{@T%ZjQa1)w9zoS31y!r&^SZkXR4PS=?D=*PteBf@!u5Gi~@Dtf9a%jPP<);rP9e; zlKg%^#ZeRaH6P&P&_O-Z6sZ0Lq*P-41yyfklMZU3S}9d1sFiAAyISgopynh3H5Ulf z*avui zG+YlGGpji>;sX`%ys$;$TXZs)Lj_eTLDh;uIF%aI-lfTl^5$%2j{JdY!cDEo2B0>A zfm$pSs4uTt-OE)!wT*Bjb(29UatW#rP@+?p~F=jpApxW$BP zUX2ostNFOc0;GhY577y8Txw2BfTGGYw4j5LEVl zW*9S|60~UH6W-tNkO%73Vcp@o*9f7?bt@JBU#yD4G1d1?m{Dg%pe20*TmY0^#bTH>h<< zLCqvnP_^9$^;LPwBDH0ZIx2PdJnP3KAA?aV>!+ahX0u0N}W<61AjCD5!5MYFpg6X`fktO@SJ&q?Wa$D5_kb4i%{3N~(;4ngm5vpoS}{ zWi2s^T2`RS+A|e`q~;W;2?AB#@)X)x;siAqs4@*l)ech%)D_dWScdXg(r2m$;8ZS9 zzlh=VK+_T_sgernn~EwwsCx(X`uz}$jC8`r5Ig8oq(!=_uyIe8mc$mRW^H_fv3kP? znK=zEsj>=c0u)u#KkcWFzz+ApuyOPi8ed6kpSRN3I)L@FLD-eBmhg^R!J@qsYkosmmx(6KlBy393?5 zC8@h0sPHTSK>br8kU&Y5TTlZjssc5MlA4kHQ52|3Qg=X511V}*5s*Ad&B*>Fn{%o_ z{eOFB)7rKYh2e-Kvbn*7eI*cGI$&rk7>a~9gH~E;8SRYz{|~wIsSj79q`p$E8NW{` zw1g}wKfE(%&KbqSNL_oNK7Dt792LwFsjL4?Z%I^$>RqI+K2SeNREYW@k-Gkm6p89P zUwIqF`}+SIw87O7k3Ma6*sBSfkbfqF}#LR7yZb?d9Bn49)0Qr!qti2Cr6x`n8~fk<^EP;U_x zbJOl&e_8qlq5=mZ)tT91i2B%(y7fWS90UHoN2)uYLW+0JAt}^s1F>eE^Xo<>H|lrOM}J7KNl4P{+>jtQ&sUqq8=ft-;wInO^xH9i;9~l zuJZ0~piYT;%5f9LFSc&IbK?JsiVxgTHiJk#cq8fo1O6UIs$+pVCF%=A^*B-w{)qa9 zxoLkR)wMvK5_JPn{f*RvKcXI=AgZ^K>Rg~siuwa{)4oRP!6Q*m5Y^jAbuUmSMLj}P z4|#VoP$xwF*CHwg{GE?f2Lp9N)E9{ACx@ReUWxh-MD;XM-=Dk^b^CO}+_aaKzmwx{ z_VfNHhzcA?)FVU%E+i@!^?(6?uzFEX5EZx}>UW!{xQPPRBr4yEzThSba9313Gq5I6 z-z=hHz#pti)Gb5>E{Mv%_lCJ?uy#>}k6VZeASwV~XJb9@f89lU%uR!}i(03I5Qqxa zF6x5O^M2qk!p&SWlvR#Pz4KH8u4u= zDQ%4@;VEO6;x|#Ns%%vip^BmkEJ?%*cS>nxYfMQ`SyOO&mKJ$&sXA3db79p!9*hp*G)7E=ApphicvKQ>Cfcrh#WmkQ>s`b9C-=A~8Cf`y-k zYCRB@;NgN9A*78|HgTwLOx3E6mQ+c%OBIDb$|*1-dn0PU>K|X(0~4xJ)$4Pryke?(}?26L$> zrog;Vx%dZNO+Qin=cO859mvY$SJfZ&r!>XwDKIY^(wm^trq;P_^*2-2(o{KdWhm7( zKRuR$9x9j{Jv==y)f%dmz7U{dH7upChOoPjiqk1DJ3CcS1p`wp{iiZ*?^uOlD{EMq zf0%pIc&cEDOeOk4N^he&di;N3B}vuo>Vd4Srpi;y_=AN_?V3*`>%TlOtxB5eHvwdU z*#!hLOSz?7Q<`EN6)c3fHJzE|zf(22Tx+VjPXUpxW-?f1xavPtzAqJ?g2hZV_ol;Z zRpkLd-dqwkXp{2X*>CDsy)G&4nu0s?Ox4L#+tTM>m1&ihrcbKh+=s^n?#GS{RaKp*Qvd0HCcs_RB+ze}p$*^eg$?!5tsO`kNl?vqMQ(Iy2eVG~j5sy@sQ3|;>Tl@wUX5x`!b z<@eg8nbDNOQ?MdeqgZwIsch`4CMkaVDOlxxmCGukRro6Yl9D|%1#6AgT@>x(INnF- cl7g@CA7H(G^7L8Jj{pDw07*qoM6N<$f&(=W6aWAK diff --git a/images/products/kubevault/features/GCP Secret Engine.png b/images/products/kubevault/features/GCP Secret Engine.png deleted file mode 100644 index 3847e8d60149dab6b370a89e081ee55932b7c6dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19276 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≷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 JSLqTH{vQjccXa>& diff --git a/images/products/kubevault/features/auth.svg b/images/products/kubevault/features/auth.svg new file mode 100644 index 00000000..0391d771 --- /dev/null +++ b/images/products/kubevault/features/auth.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/authentication-method.svg b/images/products/kubevault/features/authentication-method.svg new file mode 100644 index 00000000..b246c2ed --- /dev/null +++ b/images/products/kubevault/features/authentication-method.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/auto-initialization-and-unsealing.svg b/images/products/kubevault/features/auto-initialization-and-unsealing.svg new file mode 100644 index 00000000..0b920506 --- /dev/null +++ b/images/products/kubevault/features/auto-initialization-and-unsealing.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/automated-unsealing.svg b/images/products/kubevault/features/automated-unsealing.svg new file mode 100644 index 00000000..b7a5526f --- /dev/null +++ b/images/products/kubevault/features/automated-unsealing.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/aws-secret-engine.svg b/images/products/kubevault/features/aws-secret-engine.svg new file mode 100644 index 00000000..b105c00a --- /dev/null +++ b/images/products/kubevault/features/aws-secret-engine.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aws + + + + AWS IAM + + + + + + + + + + + + + + dynamic + + + diff --git a/images/products/kubevault/features/azure-secret-engine.svg b/images/products/kubevault/features/azure-secret-engine.svg new file mode 100644 index 00000000..7af65384 --- /dev/null +++ b/images/products/kubevault/features/azure-secret-engine.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Azure + + + + + + + + + + + + + + dynamic + + + diff --git a/images/products/kubevault/features/consume-kubevault-secrets-with-csi.svg b/images/products/kubevault/features/consume-kubevault-secrets-with-csi.svg new file mode 100644 index 00000000..f6222ec8 --- /dev/null +++ b/images/products/kubevault/features/consume-kubevault-secrets-with-csi.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CSI + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/courthouse.png b/images/products/kubevault/features/courthouse.png deleted file mode 100644 index 49171465e4b161ac3592b0f7d79d0050ce8cec0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)9RL6U zrb$FWR7l6|lFx2}KoEyfU!YBV08M;=9(VzCbm8ux-etr)O4_sicUPPA1)B1d-5o#} z0qdb@dgvS`KX&jzN5e+L4Vs!YdDie8i%QsbE# z5+G2mXKrXl)OohqP;af_NPNVZ=RhGJpl5K`zl0|n5-lQifLGlro~dC7c|EbGb8a~G z{6I_UHa17hPoBA9bj&2ziannp^Be#hhWg}Gl9OJ`{+}HH{(=>3GayYGNImTl@D=Q0 zHv`h70o!529`F_LGcb@QLTDS$*3jb12^B?pbbLx0w)*LZFtBoIw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short-lived TTL + + + diff --git a/images/products/kubevault/features/gcp-secret-engine.svg b/images/products/kubevault/features/gcp-secret-engine.svg new file mode 100644 index 00000000..77dd4803 --- /dev/null +++ b/images/products/kubevault/features/gcp-secret-engine.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GCP + + + + + + + + + + + + + + dynamic + + + diff --git a/images/products/kubevault/features/kubectl-plugin.svg b/images/products/kubevault/features/kubectl-plugin.svg new file mode 100644 index 00000000..3224ec73 --- /dev/null +++ b/images/products/kubevault/features/kubectl-plugin.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + kubevault-cli + + + $ kubectl vault version + KubeVault CLI v0.20.0 + $ kubectl vault root-token get + vaultserver/vault -n demo + + + + + + + + + + diff --git a/images/products/kubevault/features/manage-db-users-privileges.svg b/images/products/kubevault/features/manage-db-users-privileges.svg new file mode 100644 index 00000000..4b9888af --- /dev/null +++ b/images/products/kubevault/features/manage-db-users-privileges.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/secretengines.svg b/images/products/kubevault/features/secretengines.svg deleted file mode 100644 index e1f5bad9..00000000 --- a/images/products/kubevault/features/secretengines.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/products/kubevault/features/security.svg b/images/products/kubevault/features/security.svg deleted file mode 100644 index 05af60b7..00000000 --- a/images/products/kubevault/features/security.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/products/kubevault/features/storage-backend.svg b/images/products/kubevault/features/storage-backend.svg new file mode 100644 index 00000000..1152cea7 --- /dev/null +++ b/images/products/kubevault/features/storage-backend.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/twitter-banner.png b/images/products/kubevault/features/twitter-banner.png deleted file mode 100644 index ffb1477904d998a86b4e1a37955b9d65af247e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21916 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 diff --git a/images/products/kubevault/features/unlock.png b/images/products/kubevault/features/unlock.png deleted file mode 100644 index 2e15e4d75175551f91e268e64ae3bbe8c05535fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmV;s14R6ZP)yx|y z000VfQchF<|NsA@9RC2@T{i-9>i_@)ElET{R9M5Emsx_sAPhjm3`LM7-v6|d5NKJo zPJYyCUiN_S*va9vwE)&?cRcn2J9Q0>=;K=etK*9V;_DUZgZm0_kn53E36OqB2w{)= z0MbvdpW*>9;OCWg1X$`v(g9!q3V@wh6BYo`Cyf}9q9EYy~vjifDS&gyqNX)dEw zL3bNzlfZo+p+SuP z4Q>OlS<&OleilTN+rh2@v`_h03E~xbNGV?K&|x*X0Bs3E4gmd?`YfqFAm@B`L9YPR zgFagcjsBAa#4~xqE|_*Z!w`WNjFGp`rx3#R$P6*S6hUL|S>$?_K;=s6Eue`YT>!kG zVMqcrMf76g9e^Cn-DtM}JX1i<%prI{$>IVa*`q97)}|!N_gjFX>1_ZM!&t^@U<**H z38B^zx<@EqEOQVDklI120Mmpe&0^POBtUG;EdU`8irVx+%qkOenC{oBc z?DKxL`&%Ex<2B%h{bx=Fnp4*uiuo(Vw!{E`8x7MA?~ zbipWp`BasZ`Z|2R;>f*PoaiS*-MnORHOUFAUYv*I&1>F;AVvteE5EvEo{0Zmbvs7= d|Nri?{RfUzWD>oOkp=(&002ovPDHLkV1hn-!9oB4 diff --git a/images/products/kubevault/features/vault-backup-restore.svg b/images/products/kubevault/features/vault-backup-restore.svg new file mode 100644 index 00000000..69b4d17d --- /dev/null +++ b/images/products/kubevault/features/vault-backup-restore.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/products/kubevault/features/vault-kubernetes-deployment.svg b/images/products/kubevault/features/vault-kubernetes-deployment.svg new file mode 100644 index 00000000..c954673e --- /dev/null +++ b/images/products/kubevault/features/vault-kubernetes-deployment.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 02ed7855c698330ff1605aebffaa367430c9f08f Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 17:16:09 +0600 Subject: [PATCH 8/9] Update data for voyager Signed-off-by: mohin7 --- .../authentication-method.json | 2 +- .../auto-initialization-and-unsealing.json | 10 +-- .../aws-secret-engine.json | 8 +- .../azure-secret-engine.json | 8 +- .../consume-kubevault-secrets-with-csi.json | 2 +- .../database-secret-engine.json | 8 +- .../gcp-secret-engine.json | 8 +- .../single-features-data/kubectl-plugin.json | 2 +- .../manage-db-users-privileges.json | 4 +- .../single-features-data/storage-backend.json | 8 +- .../vault-backup-restore.json | 2 +- .../vault-kubernetes-deployment.json | 4 +- .../voyager/homepage/capabilities.json | 5 ++ data/products/voyager/homepage/cta.json | 12 +++ data/products/voyager/homepage/final-cta.json | 19 +++++ data/products/voyager/homepage/hero.json | 10 +++ data/products/voyager/homepage/stats.json | 8 ++ data/products/voyager/homepage/steps.json | 26 ++++++ .../illustrations/authentication-method.svg | 69 +++++++++++++++ .../illustrations/auto-initialization.svg | 53 ++++++++++++ .../features/illustrations/backup-restore.svg | 75 ++++++++++++++++ .../illustrations/cloud-storage-backend.svg | 58 +++++++++++++ ...secrets-using-secrets-store-csi-driver.svg | 80 +++++++++++++++++ .../database-storage-backend.svg | 52 ++++++++++++ .../enable-and-configure-secret-engine.svg | 60 +++++++++++++ .../integrated-storage-backend.svg | 52 ++++++++++++ .../features/illustrations/kubevault-cli.svg | 48 +++++++++++ ...s-privileges-using-secretaccessrequest.svg | 73 ++++++++++++++++ ...ers-privileges-using-secretrolebinding.svg | 85 +++++++++++++++++++ .../features/illustrations/provisioning.svg | 81 ++++++++++++++++++ images/features/illustrations/role.svg | 43 ++++++++++ .../illustrations/secret-access-request.svg | 56 ++++++++++++ .../illustrations/secret-role-binding.svg | 59 +++++++++++++ .../illustrations/storage-backend.svg | 57 +++++++++++++ .../store-and-unseal-your-secret-with-aws.svg | 59 +++++++++++++ ...tore-and-unseal-your-secret-with-azure.svg | 54 ++++++++++++ .../store-and-unseal-your-secret-with-gcp.svg | 57 +++++++++++++ .../store-and-unseal-your-secret-with-k8s.svg | 58 +++++++++++++ .../features/illustrations/tls-management.svg | 68 +++++++++++++++ 39 files changed, 1410 insertions(+), 33 deletions(-) create mode 100644 data/products/voyager/homepage/capabilities.json create mode 100644 data/products/voyager/homepage/cta.json create mode 100644 data/products/voyager/homepage/final-cta.json create mode 100644 data/products/voyager/homepage/hero.json create mode 100644 data/products/voyager/homepage/stats.json create mode 100644 data/products/voyager/homepage/steps.json create mode 100644 images/features/illustrations/authentication-method.svg create mode 100644 images/features/illustrations/auto-initialization.svg create mode 100644 images/features/illustrations/backup-restore.svg create mode 100644 images/features/illustrations/cloud-storage-backend.svg create mode 100644 images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.svg create mode 100644 images/features/illustrations/database-storage-backend.svg create mode 100644 images/features/illustrations/enable-and-configure-secret-engine.svg create mode 100644 images/features/illustrations/integrated-storage-backend.svg create mode 100644 images/features/illustrations/kubevault-cli.svg create mode 100644 images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.svg create mode 100644 images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.svg create mode 100644 images/features/illustrations/provisioning.svg create mode 100644 images/features/illustrations/role.svg create mode 100644 images/features/illustrations/secret-access-request.svg create mode 100644 images/features/illustrations/secret-role-binding.svg create mode 100644 images/features/illustrations/storage-backend.svg create mode 100644 images/features/illustrations/store-and-unseal-your-secret-with-aws.svg create mode 100644 images/features/illustrations/store-and-unseal-your-secret-with-azure.svg create mode 100644 images/features/illustrations/store-and-unseal-your-secret-with-gcp.svg create mode 100644 images/features/illustrations/store-and-unseal-your-secret-with-k8s.svg create mode 100644 images/features/illustrations/tls-management.svg diff --git a/data/products/kubevault/single-features-data/authentication-method.json b/data/products/kubevault/single-features-data/authentication-method.json index 1e28100c..02a30349 100644 --- a/data/products/kubevault/single-features-data/authentication-method.json +++ b/data/products/kubevault/single-features-data/authentication-method.json @@ -7,7 +7,7 @@ "id": 1, "title": "Authentication Method", "description": "Auth methods are the components in Vault that perform authentication and are responsible for assigning identity and a set of policies to a user. In all cases, Vault will enforce authentication as part of the request processing. In most cases, Vault will delegate the authentication administration and decision to the relevant configured external auth method. Having multiple auth methods enables you to use an auth method that makes the most sense for your use case of Vault and your organization. KubeVault Supports multiple authentication methods like AWS IAM, Azure, GCP IAM, JWT/OIDC, Kubernetes Auth, TLS Certificates, Token, Userpass etc.", - "img": "/assets/images/features/illustrations/authentication-method.jpg" + "img": "/assets/images/features/illustrations/authentication-method.svg" } ] } diff --git a/data/products/kubevault/single-features-data/auto-initialization-and-unsealing.json b/data/products/kubevault/single-features-data/auto-initialization-and-unsealing.json index a0f47ffe..44c13501 100644 --- a/data/products/kubevault/single-features-data/auto-initialization-and-unsealing.json +++ b/data/products/kubevault/single-features-data/auto-initialization-and-unsealing.json @@ -7,31 +7,31 @@ "id": 1, "title": "Auto Initialization", "description": "When a Vault server is started, it starts in a sealed state. In a sealed state, almost no operation is possible with a Vault server. So, you will need to unseal Vault. KubeVault operator provides automatic initialization and unsealing facility.", - "img": "/assets/images/features/illustrations/auto-initialization.jpg" + "img": "/assets/images/features/illustrations/auto-initialization.svg" }, { "id": 2, "title": "Store and Unseal your Secret with AWS", "description": "When you deploy or scale up a Vault server, you don’t have to worry about unsealing new Vault pods. The KubeVault operator will do it for you. You can simply use Amazon Web Services (AWS) Key Management Service (KSM) Systems Manager (SSM) to store, unseal keys & vault root token.", - "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-aws.jpg" + "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-aws.svg" }, { "id": 3, "title": "Store and Unseal your Secret with AZURE", "description": "When you deploy or scale up a Vault server, you don’t have to worry about unsealing new Vault pods. The KubeVault operator will do it for you. You can simply use Azure Key Vault to store, unseal keys & vault root token.", - "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-azure.jpg" + "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-azure.svg" }, { "id": 4, "title": "Store and Unseal your Secret with GCP", "description": "When you deploy or scale up a Vault server, you don’t have to worry about unsealing new Vault pods. The KubeVault operator will do it for you. You can simply use Google Cloud Platform (GCP) Key Management Service (KSM) in Google Cloud Store (GCS) to store, unseal keys & vault root token.", - "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-gcp.jpg" + "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-gcp.svg" }, { "id": 5, "title": "Store and Unseal your Secret with K8S", "description": "When you deploy or scale up a Vault server, you don’t have to worry about unsealing new Vault pods. The KubeVault operator will do it for you. You can simply use Kubernetes Secret to store, unseal keys & vault root token.", - "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-k8s.jpg" + "img": "/assets/images/features/illustrations/store-and-unseal-your-secret-with-k8s.svg" } ] } diff --git a/data/products/kubevault/single-features-data/aws-secret-engine.json b/data/products/kubevault/single-features-data/aws-secret-engine.json index 8bb62816..4a9aedee 100644 --- a/data/products/kubevault/single-features-data/aws-secret-engine.json +++ b/data/products/kubevault/single-features-data/aws-secret-engine.json @@ -7,25 +7,25 @@ "id": 1, "title": "Enable and Configure Secret Engine", "description": "Secrets Engines are components which store, generate, or encrypt data. Secrets Engines are incredibly flexible, so it is easiest to think about them in terms of their function. Secrets Engines are provided with some set of data, they take some action on that data, and they return a result. KubeVault lets you enable & configure AWS Secret Engine in a Kubernetes native way.", - "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.jpg" + "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.svg" }, { "id": 2, "title": "Role", "description": "In a Secret Engine, a role describes an identity with a set of permissions, groups, or policies you want to attach to a user of the Secret Engine. KubeVault operator lets you create AWSRole in a Secret Engine.", - "img": "/assets/images/features/illustrations/role.jpg" + "img": "/assets/images/features/illustrations/role.svg" }, { "id": 3, "title": "Secret Access Request", "description": "A SecretAccessRequest is a Kubernetes CustomResourceDefinition (CRD) which allows a user to request a Vault server for credentials in a Kubernetes native way. A SecretAccessRequest can be created under AWSRole that can be enabled in a SecretEngine. KubeVault operator lets you manage your DB user privileges with dynamic secrets rather than hard-coded credentials using SecretAccessRequest. This means that services that need to access a database no longer need to hardcode credentials.", - "img": "/assets/images/features/illustrations/secret-access-request.jpg" + "img": "/assets/images/features/illustrations/secret-access-request.svg" }, { "id": 4, "title": "Secret Role Binding", "description": "A SecretRoleBinding is a Kubernetes CustomResourceDefinition (CRD) which allows a user to bind a set of roles to a set of users. Using the SecretRoleBinding it’s possible to bind AWSRole to Kubernetes ServiceAccounts. This way is more machine friendly and convenient for running your application with specific permissions.", - "img": "/assets/images/features/illustrations/secret-role-binding.jpg" + "img": "/assets/images/features/illustrations/secret-role-binding.svg" } ] } diff --git a/data/products/kubevault/single-features-data/azure-secret-engine.json b/data/products/kubevault/single-features-data/azure-secret-engine.json index 08f69cb8..b2e07251 100644 --- a/data/products/kubevault/single-features-data/azure-secret-engine.json +++ b/data/products/kubevault/single-features-data/azure-secret-engine.json @@ -7,25 +7,25 @@ "id": 1, "title": "Enable and Configure Secret Engine", "description": "Secrets Engines are components which store, generate, or encrypt data. Secrets Engines are incredibly flexible, so it is easiest to think about them in terms of their function. Secrets Engines are provided with some set of data, they take some action on that data, and they return a result. KubeVault lets you enable & configure Azure Secret Engine in a Kubernetes native way.", - "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.jpg" + "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.svg" }, { "id": 2, "title": "Role", "description": "In a Secret Engine, a role describes an identity with a set of permissions, groups, or policies you want to attach to a user of the Secret Engine. KubeVault operator lets you create AzureRole in a Secret Engine.", - "img": "/assets/images/features/illustrations/role.jpg" + "img": "/assets/images/features/illustrations/role.svg" }, { "id": 3, "title": "Secret Access Request", "description": "A SecretAccessRequest is a Kubernetes CustomResourceDefinition (CRD) which allows a user to request a Vault server for credentials in a Kubernetes native way. A SecretAccessRequest can be created under AzureRole that can be enabled in a SecretEngine. KubeVault operator lets you manage your DB user privileges with dynamic secrets rather than hard-coded credentials using SecretAccessRequest. This means that services that need to access a database no longer need to hardcode credentials.", - "img": "/assets/images/features/illustrations/secret-access-request.jpg" + "img": "/assets/images/features/illustrations/secret-access-request.svg" }, { "id": 4, "title": "Secret Role Binding", "description": "A SecretRoleBinding is a Kubernetes CustomResourceDefinition (CRD) which allows a user to bind a set of roles to a set of users. Using the SecretRoleBinding it’s possible to bind AzureRole to Kubernetes ServiceAccounts. This way is more machine friendly and convenient for running your application with specific permissions.", - "img": "/assets/images/features/illustrations/secret-role-binding.jpg" + "img": "/assets/images/features/illustrations/secret-role-binding.svg" } ] } diff --git a/data/products/kubevault/single-features-data/consume-kubevault-secrets-with-csi.json b/data/products/kubevault/single-features-data/consume-kubevault-secrets-with-csi.json index 18480c55..0f6ef8eb 100644 --- a/data/products/kubevault/single-features-data/consume-kubevault-secrets-with-csi.json +++ b/data/products/kubevault/single-features-data/consume-kubevault-secrets-with-csi.json @@ -7,7 +7,7 @@ "id": 1, "title": "Consume KubeVault Secrets with CSI", "description": "Secrets Store CSI Driver for Kubernetes secrets, Integrates secrets stores with Kubernetes via a Container Storage Interface (CSI) volume. It allows Kubernetes to mount multiple secrets, keys, and certs stored in enterprise-grade external secrets stores into their pods as a volume. Once the Volume is attached, the data in it is mounted into the container’s file system. KubeVault operator works seamlessly with Secrets Store CSI Driver. This is one of the recommended ways to mount Vault Secrets into Kubernetes resources along with Vault Agent Sidecar Injector. Secrets Store CSI Driver requires a SecretProviderClass which is a namespaced resource that is used to provide driver configurations and provider-specific parameters to the CSI driver. Writing these SecretProviderClass can be a tedious job, but KubeVault CLI lets you generate SecretProviderClass using simple CLI commands.", - "img": "/assets/images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.jpg" + "img": "/assets/images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.svg" } ] } diff --git a/data/products/kubevault/single-features-data/database-secret-engine.json b/data/products/kubevault/single-features-data/database-secret-engine.json index 0bc06f4f..80a1bddc 100644 --- a/data/products/kubevault/single-features-data/database-secret-engine.json +++ b/data/products/kubevault/single-features-data/database-secret-engine.json @@ -7,25 +7,25 @@ "id": 1, "title": "Enable and Configure Secret Engine", "description": "Secrets Engines are components which store, generate, or encrypt data. Secrets Engines are incredibly flexible, so it is easiest to think about them in terms of their function. Secrets Engines are provided with some set of data, they take some action on that data, and they return a result. KubeVault lets you enable & configure Database Secret Engine in a Kubernetes native way. You can use MySQL, PostgreSQL, Elasticsearch & MongoDB Secret Engines with KubeVault.", - "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.jpg" + "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.svg" }, { "id": 2, "title": "Role", "description": "In a Secret Engine, a role describes an identity with a set of permissions, groups, or policies you want to attach to a user of the Secret Engine. KubeVault operator lets you create Database Role in a Secret Engine.", - "img": "/assets/images/features/illustrations/role.jpg" + "img": "/assets/images/features/illustrations/role.svg" }, { "id": 3, "title": "Secret Access Request", "description": "A SecretAccessRequest is a Kubernetes CustomResourceDefinition (CRD) which allows a user to request a Vault server for credentials in a Kubernetes native way. A SecretAccessRequest can be created under Database Role that can be enabled in a SecretEngine. KubeVault operator lets you manage your DB user privileges with dynamic secrets rather than hard-coded credentials using SecretAccessRequest. This means that services that need to access a database no longer need to hardcode credentials.", - "img": "/assets/images/features/illustrations/secret-access-request.jpg" + "img": "/assets/images/features/illustrations/secret-access-request.svg" }, { "id": 4, "title": "Secret Role Binding", "description": "A SecretRoleBinding is a Kubernetes CustomResourceDefinition (CRD) which allows a user to bind a set of roles to a set of users. Using the SecretRoleBinding it’s possible to bind Database Role to Kubernetes ServiceAccounts. This way is more machine friendly and convenient for running your application with specific permissions.", - "img": "/assets/images/features/illustrations/secret-role-binding.jpg" + "img": "/assets/images/features/illustrations/secret-role-binding.svg" } ] } diff --git a/data/products/kubevault/single-features-data/gcp-secret-engine.json b/data/products/kubevault/single-features-data/gcp-secret-engine.json index 4f7cbc9e..fa704d6a 100644 --- a/data/products/kubevault/single-features-data/gcp-secret-engine.json +++ b/data/products/kubevault/single-features-data/gcp-secret-engine.json @@ -7,25 +7,25 @@ "id": 1, "title": "Enable and Configure Secret Engine", "description": "Secrets Engines are components which store, generate, or encrypt data. Secrets Engines are incredibly flexible, so it is easiest to think about them in terms of their function. Secrets Engines are provided with some set of data, they take some action on that data, and they return a result. KubeVault lets you enable & configure GCP Secret Engine in a Kubernetes native way.", - "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.jpg" + "img": "/assets/images/features/illustrations/enable-and-configure-secret-engine.svg" }, { "id": 2, "title": "Role", "description": "In a Secret Engine, a role describes an identity with a set of permissions, groups, or policies you want to attach to a user of the Secret Engine. KubeVault operator lets you create GCPRole in a Secret Engine.", - "img": "/assets/images/features/illustrations/role.jpg" + "img": "/assets/images/features/illustrations/role.svg" }, { "id": 3, "title": "Secret Access Request", "description": "A SecretAccessRequest is a Kubernetes CustomResourceDefinition (CRD) which allows a user to request a Vault server for credentials in a Kubernetes native way. A SecretAccessRequest can be created under GCPRole that can be enabled in a SecretEngine. KubeVault operator lets you manage your DB user privileges with dynamic secrets rather than hard-coded credentials using SecretAccessRequest. This means that services that need to access a database no longer need to hardcode credentials.", - "img": "/assets/images/features/illustrations/secret-access-request.jpg" + "img": "/assets/images/features/illustrations/secret-access-request.svg" }, { "id": 4, "title": "Secret Role Binding", "description": "A SecretRoleBinding is a Kubernetes CustomResourceDefinition (CRD) which allows a user to bind a set of roles to a set of users. Using the SecretRoleBinding it’s possible to bind GCPRole to Kubernetes ServiceAccounts. This way is more machine friendly and convenient for running your application with specific permissions.", - "img": "/assets/images/features/illustrations/secret-role-binding.jpg" + "img": "/assets/images/features/illustrations/secret-role-binding.svg" } ] } diff --git a/data/products/kubevault/single-features-data/kubectl-plugin.json b/data/products/kubevault/single-features-data/kubectl-plugin.json index a747c9d6..32e2b7d3 100644 --- a/data/products/kubevault/single-features-data/kubectl-plugin.json +++ b/data/products/kubevault/single-features-data/kubectl-plugin.json @@ -7,7 +7,7 @@ "id": 1, "title": "KubeVault CLI", "description": "KubeVault CLI is an integral part of the KubeVault operator. KubeVault CLI is a kubectl plugin that supports various handy features while using KubeVault. It automates numerous tedious tasks & provides simpler ways to interact with Vault. It’s possible to do CRUD operations on Vault unseal keys, root token stored in different clouds, generate SecretProviderClass, etc. with KubeVault CLI.", - "img": "/assets/images/features/illustrations/kubevault-cli.jpg" + "img": "/assets/images/features/illustrations/kubevault-cli.svg" } ] } diff --git a/data/products/kubevault/single-features-data/manage-db-users-privileges.json b/data/products/kubevault/single-features-data/manage-db-users-privileges.json index bc986b7a..f88c4584 100644 --- a/data/products/kubevault/single-features-data/manage-db-users-privileges.json +++ b/data/products/kubevault/single-features-data/manage-db-users-privileges.json @@ -7,13 +7,13 @@ "id": 1, "title": "Manage DB Users Privileges using SecretAccessRequest", "description": "A SecretAccessRequest is a Kubernetes CustomResourceDefinition (CRD) which allows a user to request a Vault server for credentials in a Kubernetes native way. A SecretAccessRequest can be created under various roles that can be enabled in a SecretEngine like AWSRole, GCPRole, ElasticsearchRole, MongoDBRole, etc. This is a more human friendly way to manage DB privileges. KubeVault operator lets you manage your DB user privileges with dynamic secrets rather than hard-coded credentials using SecretAccessRequest. This means that services that need to access a database no longer need to hardcode credentials. They can simply request them from Vault. Thus granting, revoking and monitoring user privileges is extremely easy with KubeVault.", - "img": "/assets/images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.jpg" + "img": "/assets/images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.svg" }, { "id": 2, "title": "Manage DB Users Privileges using SecretRoleBinding", "description": "A SecretRoleBinding is a Kubernetes CustomResourceDefinition (CRD) which allows a user to bind a set of roles to a set of users. Using the SecretRoleBinding it’s possible to bind various roles like AWSRole, GCPRole, ElasticsearchRole, MongoDBRole, etc. to Kubernetes ServiceAccounts. This way is more machine friendly and convenient for running your application with specific permissions. Injecting Vault Secrets into Kubernetes resources requires specific permissions & using SecretRoleBinding it’s very easy to bind a set of policies to a set of Kubernetes Service Accounts.", - "img": "/assets/images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.jpg" + "img": "/assets/images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.svg" } ] } diff --git a/data/products/kubevault/single-features-data/storage-backend.json b/data/products/kubevault/single-features-data/storage-backend.json index 3adb6d4a..ec83749a 100644 --- a/data/products/kubevault/single-features-data/storage-backend.json +++ b/data/products/kubevault/single-features-data/storage-backend.json @@ -7,25 +7,25 @@ "id": 1, "title": "Storage Backend", "description": "Storage Backend represents the location for the durable storage of Vault's information. KubeVault lets you choose multiple way to store & persist Vault data. KubeVault supports multiple Storage Backend like GCS, AWS S3, Azure, MySQL, PostgreSQL, Consul, Raft, DynamoDB, Etcd, Filesystem, OpenStack Swift, In Memory etc.", - "img": "/assets/images/features/illustrations/storage-backend.jpg" + "img": "/assets/images/features/illustrations/storage-backend.svg" }, { "id": 2, "title": "Cloud Storage Backend", "description": "Cloud Storage backend is used to persist Vault's data in Cloud Storage. KubeVault Provides support for multiple Storage Backend from Cloud Providers like Amazon Web Services (AWS) S3, Microsoft Azure Storage Container, Google Cloud Storage etc.", - "img": "/assets/images/features/illustrations/cloud-storage-backend.jpg" + "img": "/assets/images/features/illustrations/cloud-storage-backend.svg" }, { "id": 3, "title": "Database Storage Backend", "description": "Database Storage backend is used to persist Vault's data in Database Storage. KubeVault Provides support for multiple Database Storage Backend like MySQL, PostgreSQL, etc.", - "img": "/assets/images/features/illustrations/database-storage-backend.jpg" + "img": "/assets/images/features/illustrations/database-storage-backend.svg" }, { "id": 4, "title": "Integrated Storage Backend", "description": "Integrated Storage backend is used to persist Vault's data. Unlike other storage backends, Integrated Storage does not operate from a single source of data. Instead all the nodes in a Vault cluster will have a replicated copy of Vault's data. Data will be replicated across all the nodes. KubeVault Provides support for Integrated Storage Backend via Raft.", - "img": "/assets/images/features/illustrations/integrated-storage-backend.jpg" + "img": "/assets/images/features/illustrations/integrated-storage-backend.svg" } ] } diff --git a/data/products/kubevault/single-features-data/vault-backup-restore.json b/data/products/kubevault/single-features-data/vault-backup-restore.json index 6a7a6c6d..be28e579 100644 --- a/data/products/kubevault/single-features-data/vault-backup-restore.json +++ b/data/products/kubevault/single-features-data/vault-backup-restore.json @@ -7,7 +7,7 @@ "id": 1, "title": "Backup & Restore", "description": "Vault provides a set of standard operating procedures (SOP) for backing up a Vault cluster. It protects your Vault cluster against data corruption or sabotage of which Disaster Recovery Replication might not be able to protect against. Stash by AppsCode lets you Backup & Restore your Vault cluster managed by KubeVault or deployed with Vault Helm-charts.", - "img": "/assets/images/features/illustrations/backup-restore.jpg" + "img": "/assets/images/features/illustrations/backup-restore.svg" } ] } diff --git a/data/products/kubevault/single-features-data/vault-kubernetes-deployment.json b/data/products/kubevault/single-features-data/vault-kubernetes-deployment.json index 4ceff618..6fe03a00 100644 --- a/data/products/kubevault/single-features-data/vault-kubernetes-deployment.json +++ b/data/products/kubevault/single-features-data/vault-kubernetes-deployment.json @@ -7,13 +7,13 @@ "id": 1, "title": "Provisioning", "description": "Kubevault provides various ways to deploy & configure Vault in production. Numerous Storage Backend, Auth methods, Auto Unseler Mode, TLS, Secret Engines, Dynamic Secrets, Identity-bases Access, DB user privilege management, etc. makes KubeVault Git-ops ready. You can simply provision Vault Server on Kubernetes using KubeVault. Don’t need to worry about all the knowledge of Kubernetes Concepts & setups.", - "img": "/assets/images/features/illustrations/provisioning.jpg" + "img": "/assets/images/features/illustrations/provisioning.svg" }, { "id": 2, "title": "TLS Management", "description": "Secure your Vault Server using TLS. Deploy TLS secured Vault Servers on Kubernetes using KubeVault. You can use cert-manager to manage Vault Server TLS. Also, you can use TLS with self-signed. Running & Managing Vault & its resources has never been easier.", - "img": "/assets/images/features/illustrations/tls-management.jpg" + "img": "/assets/images/features/illustrations/tls-management.svg" } ] } diff --git a/data/products/voyager/homepage/capabilities.json b/data/products/voyager/homepage/capabilities.json new file mode 100644 index 00000000..8204e0a3 --- /dev/null +++ b/data/products/voyager/homepage/capabilities.json @@ -0,0 +1,5 @@ +{ + "title": "Built for production-grade ingress", + "subtitle": "A secure, Kubernetes-native ingress controller built on HAProxy — with automatic TLS, load balancing, and observability out of the box.", + "tags": ["Core", "Security", "Deployment", "Performance", "Observability", "Certificates"] +} diff --git a/data/products/voyager/homepage/cta.json b/data/products/voyager/homepage/cta.json new file mode 100644 index 00000000..31681467 --- /dev/null +++ b/data/products/voyager/homepage/cta.json @@ -0,0 +1,12 @@ +{ + "headline": "Run a secure ingress on Kubernetes — free!", + "description": "Voyager is free to use on any supported Kubernetes cluster, with a 30-day complimentary license available for trial.", + "cta_primary": "Try Now Free", + "cta_secondary": "Contact Us", + "trust_points": [ + "No credit card required", + "Works in cloud or bare metal clusters", + "Built on battle-tested HAProxy", + "Enterprise support available" + ] +} diff --git a/data/products/voyager/homepage/final-cta.json b/data/products/voyager/homepage/final-cta.json new file mode 100644 index 00000000..8843f36c --- /dev/null +++ b/data/products/voyager/homepage/final-cta.json @@ -0,0 +1,19 @@ +{ + "badge": "Start Routing Securely", + "title_plain": "Ready to Secure Your", + "title_gradient": "Kubernetes Ingress?", + "description": "Join platform teams at Asurion, Emerson, Nokia, and Orange running HAProxy-backed, TLS-secured ingress on Kubernetes with Voyager.", + "checklist": [ + "Free SSL via Let's Encrypt, HTTP or DNS challenge", + "Works in any cloud or bare-metal cluster", + "30-day free license, no credit card required" + ], + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "stats": [ + { "icon": "lucide:route", "value": "HTTP/TCP", "label": "Load Balancing", "gradient": "linear-gradient(135deg, #60a5fa, #06b6d4)" }, + { "icon": "lucide:shield-check", "value": "Let's Encrypt", "label": "Free SSL Certificates", "gradient": "linear-gradient(135deg, #4ade80, #10b981)" }, + { "icon": "lucide:activity", "value": "Prometheus", "label": "Built-in Metrics", "gradient": "linear-gradient(135deg, #c084fc, #ec4899)" }, + { "icon": "lucide:life-buoy", "value": "24/7", "label": "Expert Support", "gradient": "linear-gradient(135deg, #fb923c, #ef4444)" } + ] +} diff --git a/data/products/voyager/homepage/hero.json b/data/products/voyager/homepage/hero.json new file mode 100644 index 00000000..7971ac6d --- /dev/null +++ b/data/products/voyager/homepage/hero.json @@ -0,0 +1,10 @@ +{ + "headline": "Secure Ingress Controller for Kubernetes", + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "trust_items": [ + { "icon": "heroicons:shield-check", "label": "Enterprise Ready" }, + { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, + { "icon": "heroicons:server-stack", "label": "Cloud or Bare Metal" } + ] +} diff --git a/data/products/voyager/homepage/stats.json b/data/products/voyager/homepage/stats.json new file mode 100644 index 00000000..4601858d --- /dev/null +++ b/data/products/voyager/homepage/stats.json @@ -0,0 +1,8 @@ +{ + "items": [ + { "number": "1.3K+", "label": "GitHub Stars" }, + { "number": "3.6M+", "label": "Docker Pulls" }, + { "number": "6+", "label": "Core Features" }, + { "number": "30-Day", "label": "Free Trial License" } + ] +} diff --git a/data/products/voyager/homepage/steps.json b/data/products/voyager/homepage/steps.json new file mode 100644 index 00000000..8a63294c --- /dev/null +++ b/data/products/voyager/homepage/steps.json @@ -0,0 +1,26 @@ +{ + "title": "Ingress in 4 steps", + "subtitle": "A Kubernetes-native ingress workflow built on HAProxy — with automatic TLS and load balancing out of the box.", + "steps": [ + { + "title": "Install the Operator", + "description": "Deploy Voyager via Helm into any Kubernetes cluster — EKS, GKE, AKS, or bare metal. One command, a few minutes.", + "code": "helm install voyager …" + }, + { + "title": "Define an Ingress", + "description": "A single Ingress CRD declares your HTTP and TCP routing rules, backend services, and load balancer type — provisioned automatically as HAProxy.", + "code": "kind: Ingress" + }, + { + "title": "Issue TLS Certificates", + "description": "Create a Certificate resource to get free SSL certificates from Let's Encrypt via HTTP or DNS challenge, or bring your own SANS/ACM certificates.", + "code": "kind: Certificate" + }, + { + "title": "Monitor & Scale", + "description": "Built-in Prometheus metrics expose HAProxy stats out of the box — query with kubectl or your existing observability stack.", + "code": "✓ Ingress healthy" + } + ] +} diff --git a/images/features/illustrations/authentication-method.svg b/images/features/illustrations/authentication-method.svg new file mode 100644 index 00000000..b246c2ed --- /dev/null +++ b/images/features/illustrations/authentication-method.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/auto-initialization.svg b/images/features/illustrations/auto-initialization.svg new file mode 100644 index 00000000..d0277039 --- /dev/null +++ b/images/features/illustrations/auto-initialization.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/backup-restore.svg b/images/features/illustrations/backup-restore.svg new file mode 100644 index 00000000..69b4d17d --- /dev/null +++ b/images/features/illustrations/backup-restore.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/cloud-storage-backend.svg b/images/features/illustrations/cloud-storage-backend.svg new file mode 100644 index 00000000..bfe3b6f8 --- /dev/null +++ b/images/features/illustrations/cloud-storage-backend.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + S3 + + + + + Blob + + + + + + + + GCS + + + diff --git a/images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.svg b/images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.svg new file mode 100644 index 00000000..f6222ec8 --- /dev/null +++ b/images/features/illustrations/consume-vault-secrets-using-secrets-store-csi-driver.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CSI + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/database-storage-backend.svg b/images/features/illustrations/database-storage-backend.svg new file mode 100644 index 00000000..a2e88b85 --- /dev/null +++ b/images/features/illustrations/database-storage-backend.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/enable-and-configure-secret-engine.svg b/images/features/illustrations/enable-and-configure-secret-engine.svg new file mode 100644 index 00000000..257d3381 --- /dev/null +++ b/images/features/illustrations/enable-and-configure-secret-engine.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ENABLED + + + + + + SecretEngine + + + diff --git a/images/features/illustrations/integrated-storage-backend.svg b/images/features/illustrations/integrated-storage-backend.svg new file mode 100644 index 00000000..8238c24f --- /dev/null +++ b/images/features/illustrations/integrated-storage-backend.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + LEADER + + + + + + + + + + + + + + + + + + + + + + + + + Raft Consensus + diff --git a/images/features/illustrations/kubevault-cli.svg b/images/features/illustrations/kubevault-cli.svg new file mode 100644 index 00000000..3224ec73 --- /dev/null +++ b/images/features/illustrations/kubevault-cli.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + kubevault-cli + + + $ kubectl vault version + KubeVault CLI v0.20.0 + $ kubectl vault root-token get + vaultserver/vault -n demo + + + + + + + + + + diff --git a/images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.svg b/images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.svg new file mode 100644 index 00000000..1aa02684 --- /dev/null +++ b/images/features/illustrations/manage-db-users-privileges-using-secretaccessrequest.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SecretAccessRequest + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.svg b/images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.svg new file mode 100644 index 00000000..d8fbddb8 --- /dev/null +++ b/images/features/illustrations/manage-db-users-privileges-using-secretrolebinding.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/provisioning.svg b/images/features/illustrations/provisioning.svg new file mode 100644 index 00000000..e0032ab7 --- /dev/null +++ b/images/features/illustrations/provisioning.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/role.svg b/images/features/illustrations/role.svg new file mode 100644 index 00000000..205124c5 --- /dev/null +++ b/images/features/illustrations/role.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Permissions + + + + + + + + + diff --git a/images/features/illustrations/secret-access-request.svg b/images/features/illustrations/secret-access-request.svg new file mode 100644 index 00000000..a52ba65b --- /dev/null +++ b/images/features/illustrations/secret-access-request.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SecretAccessRequest + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/secret-role-binding.svg b/images/features/illustrations/secret-role-binding.svg new file mode 100644 index 00000000..91578789 --- /dev/null +++ b/images/features/illustrations/secret-role-binding.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + Role + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/storage-backend.svg b/images/features/illustrations/storage-backend.svg new file mode 100644 index 00000000..dcc12db2 --- /dev/null +++ b/images/features/illustrations/storage-backend.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/features/illustrations/store-and-unseal-your-secret-with-aws.svg b/images/features/illustrations/store-and-unseal-your-secret-with-aws.svg new file mode 100644 index 00000000..e71331b8 --- /dev/null +++ b/images/features/illustrations/store-and-unseal-your-secret-with-aws.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aws + + + KMS + SSM + + + diff --git a/images/features/illustrations/store-and-unseal-your-secret-with-azure.svg b/images/features/illustrations/store-and-unseal-your-secret-with-azure.svg new file mode 100644 index 00000000..c1aba743 --- /dev/null +++ b/images/features/illustrations/store-and-unseal-your-secret-with-azure.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Azure Key Vault + + + diff --git a/images/features/illustrations/store-and-unseal-your-secret-with-gcp.svg b/images/features/illustrations/store-and-unseal-your-secret-with-gcp.svg new file mode 100644 index 00000000..3630e2a0 --- /dev/null +++ b/images/features/illustrations/store-and-unseal-your-secret-with-gcp.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cloud KMS + + + diff --git a/images/features/illustrations/store-and-unseal-your-secret-with-k8s.svg b/images/features/illustrations/store-and-unseal-your-secret-with-k8s.svg new file mode 100644 index 00000000..eb260d61 --- /dev/null +++ b/images/features/illustrations/store-and-unseal-your-secret-with-k8s.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + K8s Secret + + + diff --git a/images/features/illustrations/tls-management.svg b/images/features/illustrations/tls-management.svg new file mode 100644 index 00000000..5ba33a9c --- /dev/null +++ b/images/features/illustrations/tls-management.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cert-manager + + + From c1db4c400efe88cd050165ea7057305e0a239387 Mon Sep 17 00:00:00 2001 From: mohin7 Date: Fri, 24 Jul 2026 18:23:48 +0600 Subject: [PATCH 9/9] Add config-syncer data Signed-off-by: mohin7 --- data/products/configsyncer.json | 4 +- .../configsyncer/homepage/capabilities.json | 5 ++ data/products/configsyncer/homepage/cta.json | 12 +++ .../configsyncer/homepage/final-cta.json | 19 +++++ data/products/configsyncer/homepage/hero.json | 10 +++ .../products/configsyncer/homepage/stats.json | 8 ++ .../products/configsyncer/homepage/steps.json | 26 ++++++ .../features/configuration-syncer.svg | 84 +++++++++++++++++++ 8 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 data/products/configsyncer/homepage/capabilities.json create mode 100644 data/products/configsyncer/homepage/cta.json create mode 100644 data/products/configsyncer/homepage/final-cta.json create mode 100644 data/products/configsyncer/homepage/hero.json create mode 100644 data/products/configsyncer/homepage/stats.json create mode 100644 data/products/configsyncer/homepage/steps.json create mode 100644 images/products/configsyncer/features/configuration-syncer.svg diff --git a/data/products/configsyncer.json b/data/products/configsyncer.json index 7cdf83ee..b6a701be 100644 --- a/data/products/configsyncer.json +++ b/data/products/configsyncer.json @@ -44,8 +44,8 @@ { "title": "Configuration Syncer", "image": { - "src": "https://cdn.appscode.com/images/products/configsyncer/features/configuration-syncer.jpg", - "alt": "configuration-syncer" + "src": "https://cdn.appscode.com/images/products/configsyncer/features/configuration-syncer.svg", + "alt": "Configuration Syncer" }, "icon": { "src": "https://cdn.appscode.com/images/products/configsyncer/features/configuration.svg", diff --git a/data/products/configsyncer/homepage/capabilities.json b/data/products/configsyncer/homepage/capabilities.json new file mode 100644 index 00000000..8d0ec8db --- /dev/null +++ b/data/products/configsyncer/homepage/capabilities.json @@ -0,0 +1,5 @@ +{ + "title": "Built for seamless config sync", + "subtitle": "Keep ConfigMaps and Secrets synchronized across namespaces or clusters — automatically, the Kubernetes-native way.", + "tags": ["Core"] +} diff --git a/data/products/configsyncer/homepage/cta.json b/data/products/configsyncer/homepage/cta.json new file mode 100644 index 00000000..7013499a --- /dev/null +++ b/data/products/configsyncer/homepage/cta.json @@ -0,0 +1,12 @@ +{ + "headline": "Keep configs in sync — free!", + "description": "Config Syncer is free to use on any supported Kubernetes cluster, with a 30-day complimentary license available for trial.", + "cta_primary": "Try Now Free", + "cta_secondary": "Contact Us", + "trust_points": [ + "No credit card required", + "Works across namespaces and clusters", + "Open source core", + "Enterprise support available" + ] +} diff --git a/data/products/configsyncer/homepage/final-cta.json b/data/products/configsyncer/homepage/final-cta.json new file mode 100644 index 00000000..8255b1cb --- /dev/null +++ b/data/products/configsyncer/homepage/final-cta.json @@ -0,0 +1,19 @@ +{ + "badge": "Start Syncing Today", + "title_plain": "Ready to Keep Configs", + "title_gradient": "In Sync?", + "description": "Join platform teams at Asurion, Emerson, Nokia, and Orange keeping ConfigMaps and Secrets synchronized across namespaces and clusters with Config Syncer.", + "checklist": [ + "Automatic sync across namespaces or clusters", + "Label-selector targeting for fine-grained control", + "30-day free license, no credit card required" + ], + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "stats": [ + { "icon": "lucide:folder-sync", "value": "ConfigMaps", "label": "& Secrets Synced", "gradient": "linear-gradient(135deg, #60a5fa, #06b6d4)" }, + { "icon": "lucide:git-branch", "value": "Multi-Cluster", "label": "Sync Support", "gradient": "linear-gradient(135deg, #4ade80, #10b981)" }, + { "icon": "lucide:filter", "value": "Label", "label": "Selector Targeting", "gradient": "linear-gradient(135deg, #c084fc, #ec4899)" }, + { "icon": "lucide:life-buoy", "value": "24/7", "label": "Expert Support", "gradient": "linear-gradient(135deg, #fb923c, #ef4444)" } + ] +} diff --git a/data/products/configsyncer/homepage/hero.json b/data/products/configsyncer/homepage/hero.json new file mode 100644 index 00000000..ca9ade86 --- /dev/null +++ b/data/products/configsyncer/homepage/hero.json @@ -0,0 +1,10 @@ +{ + "headline": "Kubernetes Configuration Syncer", + "cta_primary": "Try Now Free", + "cta_secondary": "Get in Touch", + "trust_items": [ + { "icon": "heroicons:shield-check", "label": "Enterprise Ready" }, + { "icon": "heroicons:calendar-days", "label": "30-Day Free License" }, + { "icon": "heroicons:arrow-path-rounded-square", "label": "Cross-Cluster Sync" } + ] +} diff --git a/data/products/configsyncer/homepage/stats.json b/data/products/configsyncer/homepage/stats.json new file mode 100644 index 00000000..31bdfc7b --- /dev/null +++ b/data/products/configsyncer/homepage/stats.json @@ -0,0 +1,8 @@ +{ + "items": [ + { "number": "1K+", "label": "GitHub Stars" }, + { "number": "2", "label": "Resource Kinds Synced" }, + { "number": "2", "label": "Sync Modes" }, + { "number": "30-Day", "label": "Free Trial License" } + ] +} diff --git a/data/products/configsyncer/homepage/steps.json b/data/products/configsyncer/homepage/steps.json new file mode 100644 index 00000000..eff68ba5 --- /dev/null +++ b/data/products/configsyncer/homepage/steps.json @@ -0,0 +1,26 @@ +{ + "title": "Config sync in 4 steps", + "subtitle": "Annotate a ConfigMap or Secret and let Config Syncer keep every copy in sync — across namespaces or entire clusters.", + "steps": [ + { + "title": "Install the Operator", + "description": "Deploy Config Syncer via Helm into any Kubernetes cluster — EKS, GKE, AKS, or on-prem. One command, a few minutes.", + "code": "helm install config-syncer …" + }, + { + "title": "Annotate Your Config", + "description": "Add the kubed.appscode.com/sync annotation to any ConfigMap or Secret to opt it into syncing — to all namespaces, or a label-selected subset.", + "code": "kubed.appscode.com/sync" + }, + { + "title": "Sync Across Clusters", + "description": "Point at remote cluster contexts in a kubeconfig with the sync-contexts annotation to replicate the same ConfigMap or Secret into other clusters.", + "code": "sync-contexts: ctx1,ctx2" + }, + { + "title": "Stay in Sync Automatically", + "description": "Updates to the source propagate to every copy instantly. Remove the annotation or delete the source, and the copies clean themselves up.", + "code": "✓ Config synced" + } + ] +} diff --git a/images/products/configsyncer/features/configuration-syncer.svg b/images/products/configsyncer/features/configuration-syncer.svg new file mode 100644 index 00000000..71d054aa --- /dev/null +++ b/images/products/configsyncer/features/configuration-syncer.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sync: true + + + + + + ConfigMap / Secret + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +