migrate
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
configs:
|
||||
cm:
|
||||
url: << public_url >>
|
||||
kustomize.buildOptions: --enable-helm
|
||||
params:
|
||||
server.insecure: << server_insecure | lower >>
|
||||
|
||||
controller:
|
||||
replicas: << controller_replicas >>
|
||||
metrics:
|
||||
enabled: << controller_metrics_enabled | lower >>
|
||||
<%- if metrics_service_monitor_enabled and controller_metrics_enabled %>
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
<%- endif %>
|
||||
|
||||
repoServer:
|
||||
replicas: << repo_server_replicas >>
|
||||
metrics:
|
||||
enabled: << repo_server_metrics_enabled | lower >>
|
||||
<%- if metrics_service_monitor_enabled and repo_server_metrics_enabled %>
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
<%- endif %>
|
||||
|
||||
server:
|
||||
replicas: << server_replicas >>
|
||||
metrics:
|
||||
enabled: << server_metrics_enabled | lower >>
|
||||
<%- if metrics_service_monitor_enabled and server_metrics_enabled %>
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
<%- endif %>
|
||||
<%- if ingress_enabled %>
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: << ingress_class_name >>
|
||||
hostname: << ingress_hostname >>
|
||||
path: << ingress_path >>
|
||||
pathType: Prefix
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: << ingress_entrypoints >>
|
||||
<%- if ingress_middleware %>
|
||||
traefik.ingress.kubernetes.io/router.middlewares: << ingress_middleware >>
|
||||
<%- endif %>
|
||||
<%- if ingress_tls_enabled %>
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
<%- if ingress_cert_manager_enabled %>
|
||||
cert-manager.io/cluster-issuer: << ingress_cluster_issuer >>
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
tls: << ingress_tls_enabled | lower >>
|
||||
<%- if ingress_tls_enabled and not ingress_cert_manager_enabled %>
|
||||
extraTls:
|
||||
- hosts:
|
||||
- << ingress_hostname >>
|
||||
secretName: << ingress_tls_secret >>
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
|
||||
dex:
|
||||
enabled: << dex_enabled | lower >>
|
||||
metrics:
|
||||
enabled: << dex_metrics_enabled | lower >>
|
||||
<%- if metrics_service_monitor_enabled and dex_enabled and dex_metrics_enabled %>
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
<%- endif %>
|
||||
|
||||
redis:
|
||||
enabled: << redis_enabled | lower >>
|
||||
<%- if redis_enabled %>
|
||||
metrics:
|
||||
enabled: << redis_metrics_enabled | lower >>
|
||||
<%- if metrics_service_monitor_enabled and redis_metrics_enabled %>
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,301 @@
|
||||
{
|
||||
"slug": "argocd",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Argo CD",
|
||||
"description": "Helm values template for Argo CD with ingress, TLS, controller or repo-server sizing, Dex, Redis, and metrics toggles for homelab GitOps clusters.",
|
||||
"tags": [
|
||||
"gitops",
|
||||
"kubernetes",
|
||||
"traefik"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "argo-cd"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "9.2.4",
|
||||
"source_dep_name": "manual/argocd"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "General",
|
||||
"name": "general",
|
||||
"items": [
|
||||
{
|
||||
"name": "public_url",
|
||||
"type": "str",
|
||||
"title": "Public URL",
|
||||
"required": true,
|
||||
"default": "https://argocd.home.arpa",
|
||||
"description": "Public URL Argo CD should advertise to users and callbacks.",
|
||||
"config": {
|
||||
"placeholder": "https://argocd.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "server_insecure",
|
||||
"type": "bool",
|
||||
"title": "Server Insecure",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Let the ingress controller terminate TLS in front of `argocd-server`."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Ingress",
|
||||
"toggle": "ingress_enabled",
|
||||
"name": "ingress",
|
||||
"items": [
|
||||
{
|
||||
"name": "ingress_enabled",
|
||||
"type": "bool",
|
||||
"title": "Ingress",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Expose Argo CD through a Kubernetes ingress."
|
||||
},
|
||||
{
|
||||
"name": "ingress_class_name",
|
||||
"type": "str",
|
||||
"title": "Ingress Class",
|
||||
"required": true,
|
||||
"default": "traefik",
|
||||
"description": "IngressClass name used for the Argo CD server ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "traefik"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_hostname",
|
||||
"type": "str",
|
||||
"title": "Ingress Hostname",
|
||||
"required": true,
|
||||
"default": "argocd.home.arpa",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "argocd.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_path",
|
||||
"type": "str",
|
||||
"title": "Ingress Path",
|
||||
"required": true,
|
||||
"default": "/",
|
||||
"description": "Path exposed by the Argo CD ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_entrypoints",
|
||||
"type": "str",
|
||||
"title": "Traefik Entrypoints",
|
||||
"required": false,
|
||||
"default": "websecure",
|
||||
"description": "Traefik entrypoints annotation for the ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "websecure"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_middleware",
|
||||
"type": "str",
|
||||
"title": "Traefik Middleware",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"description": "Optional Traefik middleware reference attached to the Argo CD ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "traefik-dashboard-secured@kubernetescrd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_tls_enabled",
|
||||
"type": "bool",
|
||||
"title": "Ingress TLS",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ingress_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": true,
|
||||
"default": "argocd-server-tls",
|
||||
"description": "TLS secret name used when cert-manager is not managing the ingress certificate.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "argocd-server-tls"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_cert_manager_enabled",
|
||||
"type": "bool",
|
||||
"title": "Cert-Manager",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Annotate the ingress for cert-manager certificate issuance.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ingress_cluster_issuer",
|
||||
"type": "str",
|
||||
"title": "ClusterIssuer",
|
||||
"required": true,
|
||||
"default": "letsencrypt-production",
|
||||
"description": "ClusterIssuer used when cert-manager handles ingress certificates.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true",
|
||||
"ingress_cert_manager_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "letsencrypt-production"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Components",
|
||||
"name": "components",
|
||||
"items": [
|
||||
{
|
||||
"name": "controller_replicas",
|
||||
"type": "int",
|
||||
"title": "Controller Replicas",
|
||||
"required": false,
|
||||
"default": 1,
|
||||
"description": "Number of Argo CD application controller replicas.",
|
||||
"config": {
|
||||
"placeholder": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repo_server_replicas",
|
||||
"type": "int",
|
||||
"title": "Repo Server Replicas",
|
||||
"required": false,
|
||||
"default": 1,
|
||||
"description": "Number of Argo CD repo-server replicas.",
|
||||
"config": {
|
||||
"placeholder": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "server_replicas",
|
||||
"type": "int",
|
||||
"title": "Server Replicas",
|
||||
"required": false,
|
||||
"default": 1,
|
||||
"description": "Number of Argo CD API server replicas.",
|
||||
"config": {
|
||||
"placeholder": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dex_enabled",
|
||||
"type": "bool",
|
||||
"title": "Dex",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Deploy bundled Dex for SSO scenarios that still use the Argo CD Dex component."
|
||||
},
|
||||
{
|
||||
"name": "redis_enabled",
|
||||
"type": "bool",
|
||||
"title": "Bundled Redis",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Deploy bundled Redis. Disable only if you provide Redis separately."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Metrics",
|
||||
"name": "metrics",
|
||||
"items": [
|
||||
{
|
||||
"name": "metrics_service_monitor_enabled",
|
||||
"type": "bool",
|
||||
"title": "ServiceMonitor",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Create ServiceMonitor resources for enabled component metrics."
|
||||
},
|
||||
{
|
||||
"name": "controller_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Controller Metrics",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Expose metrics from the application controller."
|
||||
},
|
||||
{
|
||||
"name": "repo_server_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Repo Server Metrics",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Expose metrics from the repo-server."
|
||||
},
|
||||
{
|
||||
"name": "server_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Server Metrics",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Expose metrics from the Argo CD API server."
|
||||
},
|
||||
{
|
||||
"name": "dex_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Dex Metrics",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Expose metrics from Dex when Dex is enabled.",
|
||||
"needs": [
|
||||
"dex_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "redis_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Redis Metrics",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Expose metrics from bundled Redis when Redis is enabled.",
|
||||
"needs": [
|
||||
"redis_enabled=true"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
authentik:
|
||||
secret_key: << authentik_secret_key >>
|
||||
postgresql:
|
||||
password: << database_password >>
|
||||
<%- if email_enabled %>
|
||||
email:
|
||||
password: << email_password >>
|
||||
<%- endif %>
|
||||
<%- if not database_external %>
|
||||
postgresql:
|
||||
auth:
|
||||
password: << database_password >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
global:
|
||||
image:
|
||||
repository: "ghcr.io/goauthentik/server"
|
||||
tag: "2026.2.2"
|
||||
pullPolicy: IfNotPresent
|
||||
authentik:
|
||||
postgresql:
|
||||
name: << database_name >>
|
||||
user: << database_user >>
|
||||
<%- if database_external %>
|
||||
host: << database_host >>
|
||||
port: << database_port >>
|
||||
<%- endif %>
|
||||
<%- if email_enabled %>
|
||||
email:
|
||||
host: << email_host >>
|
||||
port: << email_port >>
|
||||
username: << email_username >>
|
||||
use_tls: << email_use_tls | lower >>
|
||||
from: << email_from >>
|
||||
<%- endif %>
|
||||
error_reporting:
|
||||
enabled: << authentik_error_reporting | lower >>
|
||||
log_level: << authentik_log_level >>
|
||||
server:
|
||||
service:
|
||||
type: << network_mode >>
|
||||
<%- if traefik_enabled %>
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: traefik
|
||||
<%- if traefik_tls_enabled and traefik_tls_certmanager %>
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: << certmanager_issuer >>
|
||||
<%- endif %>
|
||||
hosts:
|
||||
- << traefik_host >>
|
||||
<%- if traefik_tls_enabled %>
|
||||
tls:
|
||||
- secretName: << traefik_tls_secret >>
|
||||
hosts:
|
||||
- << traefik_host >>
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
postgresql:
|
||||
<%- if database_external %>
|
||||
enabled: false
|
||||
<%- else %>
|
||||
enabled: true
|
||||
auth:
|
||||
database: << database_name >>
|
||||
username: << database_user >>
|
||||
<%- endif %>
|
||||
redis:
|
||||
enabled: true
|
||||
@@ -0,0 +1,273 @@
|
||||
{
|
||||
"slug": "authentik-helm",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Authentik",
|
||||
"description": "Helm chart for Authentik, an open-source Identity Provider supporting OAuth2, SAML, and LDAP for flexible single sign-on and authentication.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "authentik"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "2026.2.2",
|
||||
"source_dep_name": "ghcr.io/goauthentik/server",
|
||||
"source_dep_version": "2026.2.2"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Networking",
|
||||
"name": "networking",
|
||||
"items": [
|
||||
{
|
||||
"name": "network_mode",
|
||||
"type": "str",
|
||||
"title": "Network Mode",
|
||||
"required": false,
|
||||
"default": "ClusterIP",
|
||||
"config": {
|
||||
"placeholder": "ClusterIP"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Authentik Configuration",
|
||||
"name": "authentik",
|
||||
"items": [
|
||||
{
|
||||
"name": "authentik_secret_key",
|
||||
"type": "secret",
|
||||
"title": "Secret Key",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"kind": "base64",
|
||||
"bytes": 60
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "authentik_log_level",
|
||||
"type": "enum",
|
||||
"title": "Authentik log level",
|
||||
"required": false,
|
||||
"default": "error",
|
||||
"config": {
|
||||
"options": [
|
||||
"trace",
|
||||
"debug",
|
||||
"info",
|
||||
"warning",
|
||||
"error"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "authentik_error_reporting",
|
||||
"type": "bool",
|
||||
"title": "Error Reporting",
|
||||
"required": false,
|
||||
"default": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Database Configuration",
|
||||
"name": "database",
|
||||
"items": [
|
||||
{
|
||||
"name": "database_external",
|
||||
"type": "bool",
|
||||
"title": "External Database",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "database_host",
|
||||
"type": "str",
|
||||
"title": "Database host",
|
||||
"required": false,
|
||||
"default": "authentik-postgresql",
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "authentik-postgresql"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_port",
|
||||
"type": "int",
|
||||
"title": "Database port",
|
||||
"required": false,
|
||||
"default": 5432,
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "5432"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_name",
|
||||
"type": "str",
|
||||
"title": "Database name",
|
||||
"required": false,
|
||||
"default": "authentik",
|
||||
"config": {
|
||||
"placeholder": "authentik"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_user",
|
||||
"type": "str",
|
||||
"title": "Database user",
|
||||
"required": false,
|
||||
"default": "authentik",
|
||||
"config": {
|
||||
"placeholder": "authentik"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_password",
|
||||
"type": "secret",
|
||||
"title": "PostgreSQL database password",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"kind": "base64",
|
||||
"bytes": 36
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Email Configuration",
|
||||
"name": "email",
|
||||
"items": [
|
||||
{
|
||||
"name": "email_enabled",
|
||||
"type": "bool",
|
||||
"title": "Email",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "email_host",
|
||||
"type": "str",
|
||||
"title": "SMTP server hostname",
|
||||
"required": false,
|
||||
"config": {
|
||||
"placeholder": "smtp.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_port",
|
||||
"type": "int",
|
||||
"title": "SMTP server port",
|
||||
"required": false,
|
||||
"default": 587,
|
||||
"config": {
|
||||
"placeholder": "587"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_username",
|
||||
"type": "str",
|
||||
"title": "SMTP username",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"config": {
|
||||
"placeholder": "user@example.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_password",
|
||||
"type": "secret",
|
||||
"title": "SMTP password",
|
||||
"required": false,
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"name": "email_from",
|
||||
"type": "str",
|
||||
"title": "From email address",
|
||||
"required": false,
|
||||
"config": {
|
||||
"placeholder": "authentik@home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_use_tls",
|
||||
"type": "bool",
|
||||
"title": "SMTP TLS",
|
||||
"required": false,
|
||||
"default": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Traefik Configuration",
|
||||
"name": "traefik",
|
||||
"items": [
|
||||
{
|
||||
"name": "traefik_enabled",
|
||||
"type": "bool",
|
||||
"title": "Traefik",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_host",
|
||||
"type": "str",
|
||||
"title": "Traefik hostname",
|
||||
"required": true,
|
||||
"config": {
|
||||
"placeholder": "authentik.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_enabled",
|
||||
"type": "bool",
|
||||
"title": "TLS",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": false,
|
||||
"default": "authentik-tls",
|
||||
"config": {
|
||||
"placeholder": "authentik-tls"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_certmanager",
|
||||
"type": "bool",
|
||||
"title": "Cert Manager",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "certmanager_issuer",
|
||||
"type": "str",
|
||||
"title": "Issuer",
|
||||
"required": false,
|
||||
"default": "letsencrypt-prod",
|
||||
"needs": [
|
||||
"traefik_tls_certmanager=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "letsencrypt-prod"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
image:
|
||||
repository: quay.io/jetstack/cert-manager-controller
|
||||
tag: v1.20.2
|
||||
webhook:
|
||||
image:
|
||||
repository: quay.io/jetstack/cert-manager-webhook
|
||||
tag: v1.20.2
|
||||
cainjector:
|
||||
image:
|
||||
repository: quay.io/jetstack/cert-manager-cainjector
|
||||
tag: v1.20.2
|
||||
|
||||
crds:
|
||||
enabled: true
|
||||
<%- if dns_recursive_nameservers_only %>
|
||||
|
||||
extraArgs:
|
||||
- --dns01-recursive-nameservers-only
|
||||
- --dns01-recursive-nameservers=<< dns_nameserver_1 >>,<< dns_nameserver_2 >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"slug": "certmanager",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Cert-Manager",
|
||||
"description": "Helm chart for cert-manager, a Kubernetes add-on that automates TLS certificate management and issuance from sources like Let's Encrypt.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "mdi",
|
||||
"id": "certificate-outline"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "v1.20.2",
|
||||
"source_dep_name": "quay.io/jetstack/cert-manager-controller",
|
||||
"source_dep_version": "v1.20.2"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "DNS Configuration",
|
||||
"name": "dns",
|
||||
"items": [
|
||||
{
|
||||
"name": "dns_nameserver_1",
|
||||
"type": "str",
|
||||
"title": "Primary DNS",
|
||||
"required": false,
|
||||
"default": "1.1.1.1:53",
|
||||
"description": "Primary DNS nameserver for DNS01 challenges",
|
||||
"config": {
|
||||
"placeholder": "1.1.1.1:53"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dns_nameserver_2",
|
||||
"type": "str",
|
||||
"title": "Secondary DNS",
|
||||
"required": false,
|
||||
"default": "1.0.0.1:53",
|
||||
"description": "Secondary DNS nameserver for DNS01 challenges",
|
||||
"config": {
|
||||
"placeholder": "1.0.0.1:53"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dns_recursive_nameservers_only",
|
||||
"type": "bool",
|
||||
"title": "Recursive DNS",
|
||||
"required": false,
|
||||
"default": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
# Sensitive Helm values. Store this file securely and do not commit rendered real secrets.
|
||||
<%- if not database_external %>
|
||||
postgresql:
|
||||
auth:
|
||||
password: "<< database_password >>"
|
||||
<%- endif %>
|
||||
<%- if not redis_external %>
|
||||
redis:
|
||||
auth:
|
||||
password: "<< redis_password >>"
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: << namespace >>
|
||||
labels:
|
||||
app.kubernetes.io/name: infisical
|
||||
app.kubernetes.io/instance: << release_name >>
|
||||
@@ -0,0 +1,16 @@
|
||||
<%- if database_external %>
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: << database_secret_name >>
|
||||
namespace: << namespace >>
|
||||
labels:
|
||||
app.kubernetes.io/name: infisical
|
||||
app.kubernetes.io/instance: << release_name >>
|
||||
type: Opaque
|
||||
stringData:
|
||||
DB_CONNECTION_URI: "<< database_connection_uri >>"
|
||||
<%- else %>
|
||||
# External PostgreSQL is disabled; the chart-managed PostgreSQL credentials are in helm-secrets.yaml.
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: << infisical_secret_name >>
|
||||
namespace: << namespace >>
|
||||
labels:
|
||||
app.kubernetes.io/name: infisical
|
||||
app.kubernetes.io/instance: << release_name >>
|
||||
type: Opaque
|
||||
stringData:
|
||||
AUTH_SECRET: "<< infisical_auth_secret >>"
|
||||
ENCRYPTION_KEY: "<< infisical_encryption_key >>"
|
||||
SITE_URL: "<< infisical_site_url >>"
|
||||
<%- if redis_external %>
|
||||
REDIS_URL: "<< redis_url >>"
|
||||
<%- endif %>
|
||||
<%- if email_enabled %>
|
||||
SMTP_HOST: "<< email_host >>"
|
||||
SMTP_PORT: "<< email_port >>"
|
||||
SMTP_FROM_ADDRESS: "<< email_from_address >>"
|
||||
SMTP_FROM_NAME: "<< email_from_name >>"
|
||||
SMTP_USERNAME: "<< email_username >>"
|
||||
SMTP_PASSWORD: "<< email_password >>"
|
||||
SMTP_SECURE: "<< email_secure | lower >>"
|
||||
SMTP_REQUIRE_TLS: "<< email_require_tls | lower >>"
|
||||
SMTP_IGNORE_TLS: "<< email_ignore_tls | lower >>"
|
||||
<%- endif %>
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
---
|
||||
# Infisical standalone Helm chart values.
|
||||
# Chart repo: https://dl.cloudsmith.io/public/infisical/helm-charts/helm/charts/
|
||||
# Install example:
|
||||
# helm upgrade --install << release_name >> infisical-helm-charts/infisical-standalone \
|
||||
# --version 1.9.0 \
|
||||
# --namespace << namespace >> \
|
||||
# --values values.yaml \
|
||||
# --values helm-secrets.yaml
|
||||
|
||||
infisical:
|
||||
enabled: true
|
||||
name: << release_name >>
|
||||
replicaCount: << replica_count >>
|
||||
|
||||
image:
|
||||
repository: infisical/infisical
|
||||
tag: "v0.158.0"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# This Kubernetes Secret must contain AUTH_SECRET, ENCRYPTION_KEY, SITE_URL,
|
||||
# and optional SMTP/REDIS_URL keys. See secret.yaml.
|
||||
kubeSecretRef: << infisical_secret_name >>
|
||||
|
||||
service:
|
||||
type: << service_type >>
|
||||
|
||||
autoBootstrap:
|
||||
enabled: false
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: << resources_cpu_request >>
|
||||
memory: << resources_memory_request >>
|
||||
limits:
|
||||
memory: << resources_memory_limit >>
|
||||
|
||||
<%- if ingress_enabled %>
|
||||
ingress:
|
||||
enabled: true
|
||||
hostName: << ingress_host >>
|
||||
ingressClassName: << ingress_class_name >>
|
||||
nginx:
|
||||
enabled: << ingress_nginx_enabled | lower >>
|
||||
annotations:
|
||||
<%- if traefik_entrypoint %>
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: << traefik_entrypoint >>
|
||||
<%- endif %>
|
||||
<%- if ingress_tls_enabled %>
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
<%- endif %>
|
||||
<%- if ingress_certmanager_enabled %>
|
||||
cert-manager.io/cluster-issuer: << certmanager_issuer >>
|
||||
<%- endif %>
|
||||
<%- if ingress_tls_enabled %>
|
||||
tls:
|
||||
- secretName: << ingress_tls_secret >>
|
||||
hosts:
|
||||
- << ingress_host >>
|
||||
<%- endif %>
|
||||
<%- else %>
|
||||
ingress:
|
||||
enabled: false
|
||||
<%- endif %>
|
||||
|
||||
ingress-nginx:
|
||||
enabled: << ingress_nginx_enabled | lower >>
|
||||
|
||||
postgresql:
|
||||
<%- if database_external %>
|
||||
enabled: false
|
||||
useExistingPostgresSecret:
|
||||
enabled: true
|
||||
existingConnectionStringSecret:
|
||||
name: << database_secret_name >>
|
||||
key: DB_CONNECTION_URI
|
||||
<%- else %>
|
||||
enabled: true
|
||||
auth:
|
||||
username: << database_user >>
|
||||
database: << database_name >>
|
||||
<%- endif %>
|
||||
|
||||
redis:
|
||||
<%- if redis_external %>
|
||||
enabled: false
|
||||
<%- else %>
|
||||
enabled: true
|
||||
architecture: standalone
|
||||
usePassword: true
|
||||
auth:
|
||||
# Override the real password from helm-secrets.yaml.
|
||||
password: "REPLACE_FROM_HELM_SECRETS_FILE"
|
||||
master:
|
||||
persistence:
|
||||
enabled: << redis_persistence_enabled | lower >>
|
||||
<%- if redis_persistence_enabled %>
|
||||
storageClass: << redis_storage_class >>
|
||||
size: << redis_storage_size >>
|
||||
<%- endif %>
|
||||
resources:
|
||||
requests:
|
||||
cpu: << redis_cpu_request >>
|
||||
memory: << redis_memory_request >>
|
||||
limits:
|
||||
memory: << redis_memory_limit >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,758 @@
|
||||
{
|
||||
"slug": "infisical-helm",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Infisical",
|
||||
"description": "Helm values and Kubernetes secret manifests for deploying the Infisical standalone chart with external PostgreSQL, Redis, Traefik ingress, and homelab-friendly defaults.",
|
||||
"tags": [
|
||||
"secrets",
|
||||
"kubernetes",
|
||||
"helm",
|
||||
"postgresql",
|
||||
"redis",
|
||||
"traefik"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "infisical",
|
||||
"color": "amber"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "v0.158.0",
|
||||
"source_dep_name": "infisical/infisical",
|
||||
"source_dep_version": "v0.158.0"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"name": "general",
|
||||
"title": "General",
|
||||
"items": [
|
||||
{
|
||||
"name": "release_name",
|
||||
"type": "str",
|
||||
"title": "Release Name",
|
||||
"required": true,
|
||||
"default": "infisical",
|
||||
"description": "Helm release name.",
|
||||
"config": {
|
||||
"placeholder": "infisical"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "namespace",
|
||||
"type": "str",
|
||||
"title": "Namespace",
|
||||
"required": true,
|
||||
"default": "infisical",
|
||||
"description": "Kubernetes namespace for Infisical resources.",
|
||||
"config": {
|
||||
"placeholder": "infisical"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "replica_count",
|
||||
"type": "int",
|
||||
"title": "Replicas",
|
||||
"required": true,
|
||||
"default": 1,
|
||||
"description": "Number of Infisical application replicas. Keep one replica for initial bootstrap, then scale out after testing.",
|
||||
"config": {
|
||||
"placeholder": "1"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "infisical",
|
||||
"title": "Infisical",
|
||||
"items": [
|
||||
{
|
||||
"name": "infisical_site_url",
|
||||
"type": "str",
|
||||
"title": "Site URL",
|
||||
"required": true,
|
||||
"default": "https://infisical.home.arpa",
|
||||
"config": {
|
||||
"placeholder": "https://infisical.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "infisical_secret_name",
|
||||
"type": "str",
|
||||
"title": "Kubernetes Secret Name",
|
||||
"required": true,
|
||||
"default": "infisical-secrets",
|
||||
"description": "Kubernetes Secret referenced by infisical.kubeSecretRef.",
|
||||
"config": {
|
||||
"placeholder": "infisical-secrets"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "infisical_encryption_key",
|
||||
"type": "secret",
|
||||
"title": "Encryption Key",
|
||||
"required": true,
|
||||
"description": "Infisical ENCRYPTION_KEY. Back this up securely; losing it makes stored secrets unrecoverable.",
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32,
|
||||
"characters": [
|
||||
"0",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"a",
|
||||
"b",
|
||||
"c",
|
||||
"d",
|
||||
"e",
|
||||
"f"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "infisical_auth_secret",
|
||||
"type": "secret",
|
||||
"title": "Auth Secret",
|
||||
"required": true,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"kind": "base64",
|
||||
"bytes": 32
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "networking",
|
||||
"title": "Networking",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_type",
|
||||
"type": "enum",
|
||||
"title": "Service Type",
|
||||
"required": true,
|
||||
"default": "ClusterIP",
|
||||
"description": "Kubernetes Service type for the Infisical application.",
|
||||
"config": {
|
||||
"options": [
|
||||
"ClusterIP",
|
||||
"NodePort",
|
||||
"LoadBalancer"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_enabled",
|
||||
"type": "bool",
|
||||
"title": "Ingress",
|
||||
"required": false,
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "ingress_host",
|
||||
"type": "str",
|
||||
"title": "Ingress Host",
|
||||
"required": true,
|
||||
"default": "infisical.home.arpa",
|
||||
"description": "FQDN for Infisical ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_class_name",
|
||||
"type": "str",
|
||||
"title": "Ingress Class",
|
||||
"required": true,
|
||||
"default": "traefik",
|
||||
"description": "Ingress class name.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "traefik"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_nginx_enabled",
|
||||
"type": "bool",
|
||||
"title": "Bundled NGINX Ingress",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Enable the chart's bundled ingress-nginx controller. Disable this when using an existing Traefik ingress controller.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "traefik_entrypoint",
|
||||
"type": "str",
|
||||
"title": "Traefik Entrypoint",
|
||||
"required": false,
|
||||
"default": "websecure",
|
||||
"description": "Traefik router entrypoint annotation. Leave empty for non-Traefik ingress controllers.",
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "websecure"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_tls_enabled",
|
||||
"type": "bool",
|
||||
"title": "TLS",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"needs": [
|
||||
"ingress_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ingress_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": true,
|
||||
"default": "infisical-tls",
|
||||
"description": "Kubernetes TLS secret name.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical-tls"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ingress_certmanager_enabled",
|
||||
"type": "bool",
|
||||
"title": "Cert Manager Annotation",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Add cert-manager cluster issuer annotation to the Ingress.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "certmanager_issuer",
|
||||
"type": "str",
|
||||
"title": "ClusterIssuer",
|
||||
"required": true,
|
||||
"default": "letsencrypt-prod",
|
||||
"description": "cert-manager ClusterIssuer name.",
|
||||
"needs": [
|
||||
"ingress_enabled=true",
|
||||
"ingress_tls_enabled=true",
|
||||
"ingress_certmanager_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "letsencrypt-prod"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "database",
|
||||
"title": "PostgreSQL",
|
||||
"items": [
|
||||
{
|
||||
"name": "database_external",
|
||||
"type": "bool",
|
||||
"title": "External PostgreSQL",
|
||||
"required": false,
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "database_secret_name",
|
||||
"type": "str",
|
||||
"title": "DB Secret Name",
|
||||
"required": true,
|
||||
"default": "infisical-postgres",
|
||||
"description": "Kubernetes Secret containing DB_CONNECTION_URI for external PostgreSQL.",
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical-postgres"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_connection_uri",
|
||||
"type": "secret",
|
||||
"title": "DB Connection URI",
|
||||
"required": true,
|
||||
"default": "postgresql://infisical:CHANGE_ME@postgres.example.internal:5432/infisical?sslmode=disable",
|
||||
"description": "Full PostgreSQL connection URI for external databases. URL-encode special characters in usernames/passwords.",
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "postgresql://infisical:password@postgres.example.internal:5432/infisical?sslmode=disable"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_user",
|
||||
"type": "str",
|
||||
"title": "Database User",
|
||||
"required": true,
|
||||
"default": "infisical",
|
||||
"needs": [
|
||||
"database_external=false"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_name",
|
||||
"type": "str",
|
||||
"title": "Database Name",
|
||||
"required": true,
|
||||
"default": "infisical",
|
||||
"needs": [
|
||||
"database_external=false"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_password",
|
||||
"type": "secret",
|
||||
"title": "Database Password",
|
||||
"required": true,
|
||||
"description": "PostgreSQL password for the bundled database, written to helm-secrets.yaml.",
|
||||
"needs": [
|
||||
"database_external=false"
|
||||
],
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32,
|
||||
"characters": [
|
||||
"a",
|
||||
"b",
|
||||
"c",
|
||||
"d",
|
||||
"e",
|
||||
"f",
|
||||
"g",
|
||||
"h",
|
||||
"i",
|
||||
"j",
|
||||
"k",
|
||||
"l",
|
||||
"m",
|
||||
"n",
|
||||
"o",
|
||||
"p",
|
||||
"q",
|
||||
"r",
|
||||
"s",
|
||||
"t",
|
||||
"u",
|
||||
"v",
|
||||
"w",
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
"E",
|
||||
"F",
|
||||
"G",
|
||||
"H",
|
||||
"I",
|
||||
"J",
|
||||
"K",
|
||||
"L",
|
||||
"M",
|
||||
"N",
|
||||
"O",
|
||||
"P",
|
||||
"Q",
|
||||
"R",
|
||||
"S",
|
||||
"T",
|
||||
"U",
|
||||
"V",
|
||||
"W",
|
||||
"X",
|
||||
"Y",
|
||||
"Z",
|
||||
"0",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "redis",
|
||||
"title": "Redis",
|
||||
"items": [
|
||||
{
|
||||
"name": "redis_external",
|
||||
"type": "bool",
|
||||
"title": "External Redis",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "redis_url",
|
||||
"type": "secret",
|
||||
"title": "Redis URL",
|
||||
"required": true,
|
||||
"default": "redis://:CHANGE_ME@redis.example.internal:6379",
|
||||
"description": "Full Redis URL for external Redis.",
|
||||
"needs": [
|
||||
"redis_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "redis://:password@redis.example.internal:6379"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_password",
|
||||
"type": "secret",
|
||||
"title": "Redis Password",
|
||||
"required": true,
|
||||
"description": "Redis password for the bundled Redis chart, written to helm-secrets.yaml.",
|
||||
"needs": [
|
||||
"redis_external=false"
|
||||
],
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32,
|
||||
"characters": [
|
||||
"a",
|
||||
"b",
|
||||
"c",
|
||||
"d",
|
||||
"e",
|
||||
"f",
|
||||
"g",
|
||||
"h",
|
||||
"i",
|
||||
"j",
|
||||
"k",
|
||||
"l",
|
||||
"m",
|
||||
"n",
|
||||
"o",
|
||||
"p",
|
||||
"q",
|
||||
"r",
|
||||
"s",
|
||||
"t",
|
||||
"u",
|
||||
"v",
|
||||
"w",
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
"E",
|
||||
"F",
|
||||
"G",
|
||||
"H",
|
||||
"I",
|
||||
"J",
|
||||
"K",
|
||||
"L",
|
||||
"M",
|
||||
"N",
|
||||
"O",
|
||||
"P",
|
||||
"Q",
|
||||
"R",
|
||||
"S",
|
||||
"T",
|
||||
"U",
|
||||
"V",
|
||||
"W",
|
||||
"X",
|
||||
"Y",
|
||||
"Z",
|
||||
"0",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_persistence_enabled",
|
||||
"type": "bool",
|
||||
"title": "Redis Persistence",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"needs": [
|
||||
"redis_external=false"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "redis_storage_class",
|
||||
"type": "str",
|
||||
"title": "Redis StorageClass",
|
||||
"required": false,
|
||||
"default": "ceph-rbd",
|
||||
"description": "StorageClass for the bundled Redis PVC.",
|
||||
"needs": [
|
||||
"redis_external=false",
|
||||
"redis_persistence_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "ceph-rbd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_storage_size",
|
||||
"type": "str",
|
||||
"title": "Redis Storage Size",
|
||||
"required": false,
|
||||
"default": "2Gi",
|
||||
"description": "PVC size for the bundled Redis chart.",
|
||||
"needs": [
|
||||
"redis_external=false",
|
||||
"redis_persistence_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "2Gi"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "resources",
|
||||
"title": "Resources",
|
||||
"items": [
|
||||
{
|
||||
"name": "resources_cpu_request",
|
||||
"type": "str",
|
||||
"title": "CPU Request",
|
||||
"required": false,
|
||||
"default": "250m",
|
||||
"config": {
|
||||
"placeholder": "250m"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "resources_memory_request",
|
||||
"type": "str",
|
||||
"title": "Memory Request",
|
||||
"required": false,
|
||||
"default": "512Mi",
|
||||
"config": {
|
||||
"placeholder": "512Mi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "resources_memory_limit",
|
||||
"type": "str",
|
||||
"title": "Memory Limit",
|
||||
"required": false,
|
||||
"default": "1000Mi",
|
||||
"config": {
|
||||
"placeholder": "1000Mi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_cpu_request",
|
||||
"type": "str",
|
||||
"title": "Redis CPU Request",
|
||||
"required": false,
|
||||
"default": "50m",
|
||||
"needs": [
|
||||
"redis_external=false"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "50m"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_memory_request",
|
||||
"type": "str",
|
||||
"title": "Redis Memory Request",
|
||||
"required": false,
|
||||
"default": "128Mi",
|
||||
"needs": [
|
||||
"redis_external=false"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "128Mi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_memory_limit",
|
||||
"type": "str",
|
||||
"title": "Redis Memory Limit",
|
||||
"required": false,
|
||||
"default": "256Mi",
|
||||
"needs": [
|
||||
"redis_external=false"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "256Mi"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "email",
|
||||
"title": "Email",
|
||||
"toggle": "email_enabled",
|
||||
"items": [
|
||||
{
|
||||
"name": "email_enabled",
|
||||
"type": "bool",
|
||||
"title": "SMTP Email",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Add SMTP keys to the Infisical Kubernetes Secret."
|
||||
},
|
||||
{
|
||||
"name": "email_host",
|
||||
"type": "str",
|
||||
"title": "SMTP Host",
|
||||
"required": true,
|
||||
"default": "smtp.home.arpa",
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "smtp.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_port",
|
||||
"type": "int",
|
||||
"title": "SMTP Port",
|
||||
"required": true,
|
||||
"default": 587,
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "587"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_from_address",
|
||||
"type": "str",
|
||||
"title": "From Address",
|
||||
"required": true,
|
||||
"default": "infisical@home.arpa",
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "infisical@home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_from_name",
|
||||
"type": "str",
|
||||
"title": "From Name",
|
||||
"required": false,
|
||||
"default": "Infisical",
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "Infisical"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_username",
|
||||
"type": "str",
|
||||
"title": "SMTP Username",
|
||||
"required": true,
|
||||
"default": "",
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "user@example.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_password",
|
||||
"type": "secret",
|
||||
"title": "SMTP Password",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "email_secure",
|
||||
"type": "bool",
|
||||
"title": "SMTP Secure",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "email_require_tls",
|
||||
"type": "bool",
|
||||
"title": "Require TLS",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "email_ignore_tls",
|
||||
"type": "bool",
|
||||
"title": "Ignore TLS",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
image:
|
||||
longhorn:
|
||||
engine:
|
||||
repository: "longhornio/longhorn-engine"
|
||||
tag: "v1.11.2"
|
||||
manager:
|
||||
repository: "longhornio/longhorn-manager"
|
||||
tag: "v1.11.2"
|
||||
ui:
|
||||
repository: "longhornio/longhorn-ui"
|
||||
tag: "v1.11.2"
|
||||
instanceManager:
|
||||
repository: "longhornio/longhorn-instance-manager"
|
||||
tag: "v1.11.2"
|
||||
shareManager:
|
||||
repository: "longhornio/longhorn-share-manager"
|
||||
tag: "v1.11.2"
|
||||
backingImageManager:
|
||||
repository: "longhornio/backing-image-manager"
|
||||
tag: "v1.11.2"
|
||||
supportBundleKit:
|
||||
repository: "longhornio/support-bundle-kit"
|
||||
tag: "v0.0.84"
|
||||
csi:
|
||||
attacher:
|
||||
repository: "longhornio/csi-attacher"
|
||||
tag: "v4.11.0"
|
||||
provisioner:
|
||||
repository: "longhornio/csi-provisioner"
|
||||
tag: "v5.3.0"
|
||||
nodeDriverRegistrar:
|
||||
repository: "longhornio/csi-node-driver-registrar"
|
||||
tag: "v2.16.0"
|
||||
resizer:
|
||||
repository: "longhornio/csi-resizer"
|
||||
tag: "v2.1.0"
|
||||
snapshotter:
|
||||
repository: "longhornio/csi-snapshotter"
|
||||
tag: "v8.5.0"
|
||||
livenessProbe:
|
||||
repository: "longhornio/livenessprobe"
|
||||
tag: "v2.18.0"
|
||||
|
||||
longhornUI:
|
||||
replicas: << ui_replicas >>
|
||||
<%- if backup_enabled %>
|
||||
|
||||
defaultSettings:
|
||||
backupTarget: << backup_target >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"slug": "longhorn",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Longhorn",
|
||||
"description": "Helm chart for Longhorn, a distributed block storage system for Kubernetes with built-in backup, snapshots, and disaster recovery.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "rancher-longhorn"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "v1.11.2",
|
||||
"source_dep_name": "longhornio/longhorn-manager",
|
||||
"source_dep_version": "v1.11.2"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Backup Configuration",
|
||||
"name": "backup",
|
||||
"items": [
|
||||
{
|
||||
"name": "backup_enabled",
|
||||
"type": "bool",
|
||||
"title": "Backup",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "backup_target",
|
||||
"type": "str",
|
||||
"title": "Backup Target",
|
||||
"required": false,
|
||||
"description": "Backup target URL (e.g., s3://bucket or nfs://server/path)",
|
||||
"needs": [
|
||||
"backup_enabled=true"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Longhorn UI",
|
||||
"name": "ui",
|
||||
"items": [
|
||||
{
|
||||
"name": "ui_replicas",
|
||||
"type": "int",
|
||||
"title": "UI Replicas",
|
||||
"required": false,
|
||||
"default": 1,
|
||||
"description": "Number of Longhorn UI replicas",
|
||||
"config": {
|
||||
"slider": true,
|
||||
"min": 1,
|
||||
"max": 10,
|
||||
"step": 1,
|
||||
"placeholder": "1",
|
||||
"unit": "replicas"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
image:
|
||||
repository: docker.io/netboxcommunity/netbox
|
||||
tag: v4.5.10
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
superuser:
|
||||
name: << netbox_superuser_name >>
|
||||
email: << netbox_superuser_email >>
|
||||
password: << netbox_superuser_password >>
|
||||
apiToken: << netbox_superuser_api_token >>
|
||||
|
||||
allowedHosts:
|
||||
- "<< netbox_allowed_hosts >>"
|
||||
|
||||
<%- if database_external %>
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
host: << database_host >>
|
||||
port: << database_port >>
|
||||
database: << database_name >>
|
||||
username: << database_user >>
|
||||
password: << database_password >>
|
||||
<%- else %>
|
||||
postgresql:
|
||||
enabled: true
|
||||
auth:
|
||||
database: << database_name >>
|
||||
username: << database_user >>
|
||||
password: << database_password >>
|
||||
<%- endif %>
|
||||
|
||||
<%- if redis_external %>
|
||||
redis:
|
||||
enabled: false
|
||||
|
||||
externalRedis:
|
||||
host: << redis_host >>
|
||||
port: 6379
|
||||
database: 0
|
||||
password: << redis_password >>
|
||||
|
||||
tasksRedis:
|
||||
host: << redis_host >>
|
||||
port: 6379
|
||||
database: 0
|
||||
password: << redis_password >>
|
||||
|
||||
cachingRedis:
|
||||
host: << redis_cache_host >>
|
||||
port: 6379
|
||||
database: 1
|
||||
password: << redis_password >>
|
||||
<%- else %>
|
||||
redis:
|
||||
enabled: true
|
||||
architecture: standalone
|
||||
auth:
|
||||
enabled: true
|
||||
password: << redis_password >>
|
||||
<%- endif %>
|
||||
|
||||
secretKey: << netbox_secret_key >>
|
||||
|
||||
<%- if email_enabled %>
|
||||
email:
|
||||
server: << email_host >>
|
||||
port: << email_port >>
|
||||
username: << email_username >>
|
||||
password: << email_password >>
|
||||
from: << email_from >>
|
||||
useSSL: << email_use_ssl | lower >>
|
||||
useTLS: << email_use_tls | lower >>
|
||||
<%- endif %>
|
||||
|
||||
<%- if netbox_cors_enabled %>
|
||||
cors:
|
||||
originAllowAll: true
|
||||
originWhitelist:
|
||||
- << netbox_cors_origins >>
|
||||
<%- endif %>
|
||||
|
||||
<%- if netbox_metrics_enabled %>
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
<%- endif %>
|
||||
|
||||
service:
|
||||
type: << network_mode >>
|
||||
|
||||
<%- if traefik_enabled %>
|
||||
ingress:
|
||||
enabled: true
|
||||
className: traefik
|
||||
<%- if traefik_tls_enabled and traefik_tls_certmanager %>
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: << certmanager_issuer >>
|
||||
<%- endif %>
|
||||
hosts:
|
||||
- host: << traefik_host >>
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
<%- if traefik_tls_enabled %>
|
||||
tls:
|
||||
- secretName: << traefik_tls_secret >>
|
||||
hosts:
|
||||
- << traefik_host >>
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
|
||||
persistence:
|
||||
enabled: true
|
||||
<%- if volumes_mode == 'existing-pvc' %>
|
||||
existingClaim: << volumes_pvc_name >>
|
||||
<%- else %>
|
||||
storageClass: ""
|
||||
size: 10Gi
|
||||
<%- endif %>
|
||||
|
||||
worker:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
|
||||
housekeeping:
|
||||
enabled: true
|
||||
@@ -0,0 +1,418 @@
|
||||
{
|
||||
"slug": "netbox-helm",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "NetBox",
|
||||
"description": "Helm chart for NetBox, an open-source network infrastructure management (IPAM/DCIM) solution and network automation source of truth.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "netbox"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "v4.5.10",
|
||||
"source_dep_name": "docker.io/netboxcommunity/netbox",
|
||||
"source_dep_version": "v4.5.10"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Database Configuration",
|
||||
"name": "database",
|
||||
"items": [
|
||||
{
|
||||
"name": "database_external",
|
||||
"type": "bool",
|
||||
"title": "External Database",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "database_host",
|
||||
"type": "str",
|
||||
"title": "Database host",
|
||||
"required": false,
|
||||
"default": "netbox-postgresql",
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "netbox-postgresql"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_port",
|
||||
"type": "int",
|
||||
"title": "Database port",
|
||||
"required": false,
|
||||
"default": 5432,
|
||||
"needs": [
|
||||
"database_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "5432"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_name",
|
||||
"type": "str",
|
||||
"title": "Database name",
|
||||
"required": false,
|
||||
"default": "netbox",
|
||||
"config": {
|
||||
"placeholder": "netbox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_user",
|
||||
"type": "str",
|
||||
"title": "Database user",
|
||||
"required": false,
|
||||
"default": "netbox",
|
||||
"config": {
|
||||
"placeholder": "netbox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "database_password",
|
||||
"type": "secret",
|
||||
"title": "Database password",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Networking Configuration",
|
||||
"name": "networking",
|
||||
"items": [
|
||||
{
|
||||
"name": "network_mode",
|
||||
"type": "str",
|
||||
"title": "Network Mode",
|
||||
"required": false,
|
||||
"default": "ClusterIP",
|
||||
"config": {
|
||||
"placeholder": "ClusterIP"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Redis Configuration",
|
||||
"name": "redis",
|
||||
"items": [
|
||||
{
|
||||
"name": "redis_external",
|
||||
"type": "bool",
|
||||
"title": "External Redis",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "redis_host",
|
||||
"type": "str",
|
||||
"title": "Redis Host",
|
||||
"required": false,
|
||||
"default": "netbox-redis-master",
|
||||
"needs": [
|
||||
"redis_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "netbox-redis-master"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_cache_host",
|
||||
"type": "str",
|
||||
"title": "Cache Host",
|
||||
"required": false,
|
||||
"default": "netbox-redis-master",
|
||||
"needs": [
|
||||
"redis_external=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "netbox-redis-master"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "redis_password",
|
||||
"type": "secret",
|
||||
"title": "Redis password",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Email Configuration",
|
||||
"name": "email",
|
||||
"items": [
|
||||
{
|
||||
"name": "email_enabled",
|
||||
"type": "bool",
|
||||
"title": "Email",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "email_host",
|
||||
"type": "str",
|
||||
"title": "SMTP server hostname",
|
||||
"required": false,
|
||||
"config": {
|
||||
"placeholder": "smtp.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_port",
|
||||
"type": "int",
|
||||
"title": "SMTP server port",
|
||||
"required": false,
|
||||
"default": 587,
|
||||
"config": {
|
||||
"placeholder": "587"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_username",
|
||||
"type": "str",
|
||||
"title": "SMTP username",
|
||||
"required": false,
|
||||
"default": "",
|
||||
"config": {
|
||||
"placeholder": "user@example.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_password",
|
||||
"type": "secret",
|
||||
"title": "SMTP password",
|
||||
"required": false,
|
||||
"needs": [
|
||||
"email_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "email_from",
|
||||
"type": "str",
|
||||
"title": "From email address",
|
||||
"required": false,
|
||||
"config": {
|
||||
"placeholder": "netbox@home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "email_use_tls",
|
||||
"type": "bool",
|
||||
"title": "SMTP TLS",
|
||||
"required": false,
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "email_use_ssl",
|
||||
"type": "bool",
|
||||
"title": "SMTP SSL",
|
||||
"required": false,
|
||||
"default": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Traefik Configuration",
|
||||
"name": "traefik",
|
||||
"items": [
|
||||
{
|
||||
"name": "traefik_enabled",
|
||||
"type": "bool",
|
||||
"title": "Traefik",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_host",
|
||||
"type": "str",
|
||||
"title": "Traefik hostname",
|
||||
"required": true,
|
||||
"config": {
|
||||
"placeholder": "netbox.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_enabled",
|
||||
"type": "bool",
|
||||
"title": "TLS",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": false,
|
||||
"default": "netbox-tls",
|
||||
"config": {
|
||||
"placeholder": "netbox-tls"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_certmanager",
|
||||
"type": "bool",
|
||||
"title": "Cert Manager",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "certmanager_issuer",
|
||||
"type": "str",
|
||||
"title": "Issuer",
|
||||
"required": false,
|
||||
"default": "letsencrypt-prod",
|
||||
"needs": [
|
||||
"traefik_tls_certmanager=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "letsencrypt-prod"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Volume Configuration",
|
||||
"name": "volumes",
|
||||
"items": [
|
||||
{
|
||||
"name": "volumes_mode",
|
||||
"type": "enum",
|
||||
"title": "Persistence mode",
|
||||
"required": false,
|
||||
"default": "chart-managed",
|
||||
"config": {
|
||||
"options": [
|
||||
"chart-managed",
|
||||
"existing-pvc"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "volumes_pvc_name",
|
||||
"type": "str",
|
||||
"title": "PVC Name",
|
||||
"required": false,
|
||||
"default": "netbox-data",
|
||||
"needs": [
|
||||
"volumes_mode=existing-pvc"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "netbox-data"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "NetBox Configuration",
|
||||
"name": "netbox",
|
||||
"items": [
|
||||
{
|
||||
"name": "netbox_secret_key",
|
||||
"type": "secret",
|
||||
"title": "Secret Key",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 50
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_superuser_name",
|
||||
"type": "str",
|
||||
"title": "Initial superuser username",
|
||||
"required": false,
|
||||
"default": "admin",
|
||||
"config": {
|
||||
"placeholder": "admin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_superuser_email",
|
||||
"type": "str",
|
||||
"title": "Initial superuser email",
|
||||
"required": true,
|
||||
"config": {
|
||||
"placeholder": "admin@home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_superuser_password",
|
||||
"type": "secret",
|
||||
"title": "Initial superuser password",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 32
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_superuser_api_token",
|
||||
"type": "secret",
|
||||
"title": "API Token",
|
||||
"required": false,
|
||||
"config": {
|
||||
"autogenerated": {
|
||||
"length": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_allowed_hosts",
|
||||
"type": "str",
|
||||
"title": "Allowed Hosts",
|
||||
"required": false,
|
||||
"default": "*",
|
||||
"description": "Allowed hosts (comma-separated)",
|
||||
"config": {
|
||||
"placeholder": "*"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netbox_metrics_enabled",
|
||||
"type": "bool",
|
||||
"title": "Metrics",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "netbox_cors_enabled",
|
||||
"type": "bool",
|
||||
"title": "CORS",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "netbox_cors_origins",
|
||||
"type": "str",
|
||||
"title": "Allowed CORS origins",
|
||||
"required": false,
|
||||
"default": "https://home.arpa",
|
||||
"needs": [
|
||||
"netbox_cors_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "https://home.arpa"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
image:
|
||||
repository: portainer/portainer-ce
|
||||
tag: 2.41.0
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: << network_mode >>
|
||||
<%- if traefik_enabled %>
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
hosts:
|
||||
- host: << traefik_host >>
|
||||
paths:
|
||||
- path: /
|
||||
port: "9000"
|
||||
<%- if traefik_tls_enabled %>
|
||||
tls:
|
||||
- secretName: << traefik_tls_secret >>
|
||||
hosts:
|
||||
- << traefik_host >>
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
<%- if volumes_mode == 'existing-pvc' %>
|
||||
|
||||
persistence:
|
||||
existingClaim: << volumes_pvc_name >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"slug": "portainer-helm",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Portainer CE",
|
||||
"description": "Helm chart for Portainer Community Edition, a web-based container management platform for Docker and Kubernetes environments.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "portainer"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "2.41.0",
|
||||
"source_dep_name": "portainer/portainer-ce",
|
||||
"source_dep_version": "2.41.0"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Networking",
|
||||
"name": "networking",
|
||||
"items": [
|
||||
{
|
||||
"name": "network_mode",
|
||||
"type": "str",
|
||||
"title": "Network Mode",
|
||||
"required": false,
|
||||
"default": "ClusterIP",
|
||||
"config": {
|
||||
"placeholder": "ClusterIP"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Traefik Configuration",
|
||||
"name": "traefik",
|
||||
"items": [
|
||||
{
|
||||
"name": "traefik_enabled",
|
||||
"type": "bool",
|
||||
"title": "Traefik",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_host",
|
||||
"type": "str",
|
||||
"title": "Traefik hostname",
|
||||
"required": true,
|
||||
"config": {
|
||||
"placeholder": "portainer.home.arpa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_enabled",
|
||||
"type": "bool",
|
||||
"title": "TLS",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "traefik_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": false,
|
||||
"default": "portainer-tls",
|
||||
"config": {
|
||||
"placeholder": "portainer-tls"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Volume Configuration",
|
||||
"name": "volumes",
|
||||
"items": [
|
||||
{
|
||||
"name": "volumes_mode",
|
||||
"type": "enum",
|
||||
"title": "Persistence mode",
|
||||
"required": false,
|
||||
"default": "chart-managed",
|
||||
"config": {
|
||||
"options": [
|
||||
"chart-managed",
|
||||
"existing-pvc"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "volumes_pvc_name",
|
||||
"type": "str",
|
||||
"title": "PVC Name",
|
||||
"required": false,
|
||||
"default": "portainer",
|
||||
"needs": [
|
||||
"volumes_mode=existing-pvc"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "portainer"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
image:
|
||||
repository: traefik
|
||||
tag: v3.7.1
|
||||
pullPolicy: IfNotPresent
|
||||
<%- if http_redirect_enabled %>
|
||||
|
||||
ports:
|
||||
web:
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: websecure
|
||||
scheme: https
|
||||
permanent: << http_redirect_permanent | lower >>
|
||||
<%- endif %>
|
||||
<%- if dashboard_enabled or accesslog_enabled or prometheus_enabled %>
|
||||
|
||||
additionalArguments:
|
||||
<%- if dashboard_enabled %>
|
||||
- "--api.dashboard=true"
|
||||
<%- endif %>
|
||||
<%- if accesslog_enabled %>
|
||||
- "--accesslog=true"
|
||||
<%- endif %>
|
||||
<%- if prometheus_enabled %>
|
||||
- "--metrics.prometheus=true"
|
||||
<%- endif %>
|
||||
<%- endif %>
|
||||
<%- if dashboard_ingressroute_enabled %>
|
||||
|
||||
ingressRoute:
|
||||
dashboard:
|
||||
enabled: true
|
||||
entryPoints:
|
||||
- websecure
|
||||
matchRule: Host(`<< dashboard_host >>`)
|
||||
middlewares:
|
||||
- name: << dashboard_middleware >>
|
||||
tls:
|
||||
secretName: << dashboard_tls_secret >>
|
||||
<%- endif %>
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"slug": "traefik-helm",
|
||||
"kind": "helm",
|
||||
"metadata": {
|
||||
"name": "Traefik Ingress Controller",
|
||||
"description": "Helm chart for Traefik v3, a modern HTTP reverse proxy and load balancer designed for microservices and Kubernetes environments.",
|
||||
"tags": [],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "traefik"
|
||||
},
|
||||
"draft": false,
|
||||
"version": {
|
||||
"name": "v3.7.1",
|
||||
"source_dep_name": "traefik",
|
||||
"source_dep_version": "v3.7.1"
|
||||
}
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Dashboard IngressRoute",
|
||||
"name": "dashboard",
|
||||
"items": [
|
||||
{
|
||||
"name": "dashboard_host",
|
||||
"type": "str",
|
||||
"title": "Dashboard Host",
|
||||
"required": false,
|
||||
"description": "FQDN for the Traefik dashboard",
|
||||
"needs": [
|
||||
"dashboard_ingressroute_enabled=true"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "dashboard_ingressroute_enabled",
|
||||
"type": "bool",
|
||||
"title": "IngressRoute",
|
||||
"required": false,
|
||||
"default": false,
|
||||
"description": "Create IngressRoute for Traefik dashboard"
|
||||
},
|
||||
{
|
||||
"name": "dashboard_middleware",
|
||||
"type": "str",
|
||||
"title": "Middleware",
|
||||
"required": false,
|
||||
"default": "traefik-dashboard-auth",
|
||||
"description": "Authentication middleware name for dashboard protection",
|
||||
"needs": [
|
||||
"dashboard_ingressroute_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "traefik-dashboard-auth"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dashboard_tls_secret",
|
||||
"type": "str",
|
||||
"title": "TLS Secret",
|
||||
"required": false,
|
||||
"default": "traefik-dashboard-tls",
|
||||
"needs": [
|
||||
"dashboard_ingressroute_enabled=true"
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "traefik-dashboard-tls"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Redirect",
|
||||
"name": "http-redirect",
|
||||
"items": [
|
||||
{
|
||||
"name": "http_redirect_enabled",
|
||||
"type": "bool",
|
||||
"title": "HTTP Redirect",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"description": "Automatically redirect HTTP traffic to HTTPS"
|
||||
},
|
||||
{
|
||||
"name": "http_redirect_permanent",
|
||||
"type": "bool",
|
||||
"title": "Permanent Redirect",
|
||||
"required": false,
|
||||
"default": true,
|
||||
"needs": [
|
||||
"http_redirect_enabled=true"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Traefik Settings",
|
||||
"name": "traefik-config",
|
||||
"items": [
|
||||
{
|
||||
"name": "accesslog_enabled",
|
||||
"type": "bool",
|
||||
"title": "Access Log",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "dashboard_enabled",
|
||||
"type": "bool",
|
||||
"title": "Dashboard",
|
||||
"required": false,
|
||||
"default": false
|
||||
},
|
||||
{
|
||||
"name": "prometheus_enabled",
|
||||
"type": "bool",
|
||||
"title": "Prometheus",
|
||||
"required": false,
|
||||
"default": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user