mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Add support for auto creating SA for job and deployment
This commit is contained in:
@@ -1,3 +1,13 @@
|
|||||||
|
## 1.4.0 (November 06, 2024)
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
* Chart is now fully documented
|
||||||
|
* New fields introduced: `infisical.databaseSchemaMigrationJob.image` and `infisical.serviceAccount`
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Added support for auto creating service account with required permissions via `infisical.serviceAccount.create`
|
||||||
|
|
||||||
## 1.3.0 (October 28, 2024)
|
## 1.3.0 (October 28, 2024)
|
||||||
|
|
||||||
Changes:
|
Changes:
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: infisical-standalone
|
name: infisical-standalone
|
||||||
description: A helm chart for a full Infisical application
|
description: A helm chart to deploy Infisical
|
||||||
|
|
||||||
type: application
|
type: application
|
||||||
|
|
||||||
# This is the chart version. This version number should be incremented each time you make changes
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
# to the chart and its templates, including the app version.
|
# to the chart and its templates, including the app version.
|
||||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
version: 1.3.0
|
version: 1.4.0
|
||||||
|
|
||||||
# This is the version number of the application being deployed. This version number should be
|
# This is the version number of the application being deployed. This version number should be
|
||||||
# incremented each time you make changes to the application. Versions are not expected to
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
|||||||
66
helm-charts/infisical-standalone-postgres/README.md
Normal file
66
helm-charts/infisical-standalone-postgres/README.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# infisical-standalone
|
||||||
|
|
||||||
|
  
|
||||||
|
|
||||||
|
A helm chart to deploy Infisical
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
| Repository | Name | Version |
|
||||||
|
|------------|------|---------|
|
||||||
|
| https://charts.bitnami.com/bitnami | postgresql | 14.1.3 |
|
||||||
|
| https://charts.bitnami.com/bitnami | redis | 18.14.0 |
|
||||||
|
| https://kubernetes.github.io/ingress-nginx | ingress-nginx | 4.0.13 |
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Key | Type | Default | Description |
|
||||||
|
|-----|------|---------|-------------|
|
||||||
|
| fullnameOverride | string | `""` | Overrides the full name of the release, affecting resource names |
|
||||||
|
| infisical.affinity | object | `{}` | Node affinity settings for pod placement |
|
||||||
|
| infisical.autoDatabaseSchemaMigration | bool | `true` | Automatically migrates new database schema when deploying |
|
||||||
|
| infisical.databaseSchemaMigrationJob.image.pullPolicy | string | `"IfNotPresent"` | Pulls image only if not present on the node |
|
||||||
|
| infisical.databaseSchemaMigrationJob.image.repository | string | `"ghcr.io/groundnuty/k8s-wait-for"` | Image repository for migration wait job |
|
||||||
|
| infisical.databaseSchemaMigrationJob.image.tag | string | `"no-root-v2.0"` | Image tag version |
|
||||||
|
| infisical.deploymentAnnotations | object | `{}` | Custom annotations for Infisical deployment |
|
||||||
|
| infisical.enabled | bool | `true` | |
|
||||||
|
| infisical.fullnameOverride | string | `""` | Override for the full name of Infisical resources in this deployment |
|
||||||
|
| infisical.image.imagePullSecrets | list | `[]` | Secret references for pulling the image, if needed |
|
||||||
|
| infisical.image.pullPolicy | string | `"IfNotPresent"` | Pulls image only if not already present on the node |
|
||||||
|
| infisical.image.repository | string | `"infisical/infisical"` | Image repository for the Infisical service |
|
||||||
|
| infisical.image.tag | string | `"v0.93.1-postgres"` | Specific version tag of the Infisical image. View the latest version here https://hub.docker.com/r/infisical/infisical |
|
||||||
|
| infisical.kubeSecretRef | string | `"infisical-secrets"` | Kubernetes Secret reference containing Infisical root credentials |
|
||||||
|
| infisical.name | string | `"infisical"` | |
|
||||||
|
| infisical.podAnnotations | object | `{}` | Custom annotations for Infisical pods |
|
||||||
|
| infisical.replicaCount | int | `2` | Number of pod replicas for high availability |
|
||||||
|
| infisical.resources.limits.memory | string | `"600Mi"` | Memory limit for Infisical container |
|
||||||
|
| infisical.resources.requests.cpu | string | `"350m"` | CPU request for Infisical container |
|
||||||
|
| infisical.service.annotations | object | `{}` | Custom annotations for Infisical service |
|
||||||
|
| infisical.service.nodePort | string | `""` | Optional node port for service when using NodePort type |
|
||||||
|
| infisical.service.type | string | `"ClusterIP"` | Service type, can be changed based on exposure needs (e.g., LoadBalancer) |
|
||||||
|
| infisical.serviceAccount.annotations | object | `{}` | Custom annotations for the auto-created service account |
|
||||||
|
| infisical.serviceAccount.create | bool | `true` | Creates a new service account if true, with necessary permissions for this chart |
|
||||||
|
| infisical.serviceAccount.name | string | `nil` | Optional custom service account name, if existing service account is used |
|
||||||
|
| ingress.annotations | object | `{}` | Custom annotations for ingress resource |
|
||||||
|
| ingress.enabled | bool | `true` | Enable or disable ingress configuration |
|
||||||
|
| ingress.hostName | string | `""` | Hostname for ingress access, e.g., app.example.com |
|
||||||
|
| ingress.ingressClassName | string | `"nginx"` | Specifies the ingress class, useful for multi-ingress setups |
|
||||||
|
| ingress.nginx.enabled | bool | `true` | Enable NGINX-specific settings, if using NGINX ingress controller |
|
||||||
|
| ingress.tls | list | `[]` | TLS settings for HTTPS access |
|
||||||
|
| nameOverride | string | `""` | Overrides the default release name |
|
||||||
|
| postgresql.auth.database | string | `"infisicalDB"` | Database name for Infisical |
|
||||||
|
| postgresql.auth.password | string | `"root"` | Password for PostgreSQL database access |
|
||||||
|
| postgresql.auth.username | string | `"infisical"` | Database username for PostgreSQL |
|
||||||
|
| postgresql.enabled | bool | `true` | Enables an in-cluster PostgreSQL deployment. To achieve HA for Postgres, we recommend deploying https://github.com/zalando/postgres-operator instead. |
|
||||||
|
| postgresql.fullnameOverride | string | `"postgresql"` | Full name override for PostgreSQL resources |
|
||||||
|
| postgresql.name | string | `"postgresql"` | PostgreSQL resource name |
|
||||||
|
| postgresql.useExistingPostgresSecret.enabled | bool | `false` | Set to true if using an existing Kubernetes secret that contains PostgreSQL connection string |
|
||||||
|
| postgresql.useExistingPostgresSecret.existingConnectionStringSecret.key | string | `""` | Key name in the Kubernetes secret that holds the connection string |
|
||||||
|
| postgresql.useExistingPostgresSecret.existingConnectionStringSecret.name | string | `""` | Kubernetes secret name containing the PostgreSQL connection string |
|
||||||
|
| redis.architecture | string | `"standalone"` | Redis deployment type (e.g., standalone or cluster) |
|
||||||
|
| redis.auth.password | string | `"mysecretpassword"` | Redis password |
|
||||||
|
| redis.cluster.enabled | bool | `false` | Clustered Redis deployment |
|
||||||
|
| redis.enabled | bool | `true` | Enables an in-cluster Redis deployment |
|
||||||
|
| redis.fullnameOverride | string | `"redis"` | Full name override for Redis resources |
|
||||||
|
| redis.name | string | `"redis"` | Redis resource name |
|
||||||
|
| redis.usePassword | bool | `true` | Requires a password for Redis authentication |
|
||||||
@@ -40,6 +40,23 @@ component: {{ .Values.infisical.name | quote }}
|
|||||||
{{ include "infisical.common.matchLabels" . }}
|
{{ include "infisical.common.matchLabels" . }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "infisical.roleName" -}}
|
||||||
|
{{- printf "%s-infisical" .Release.Name -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "infisical.roleBindingName" -}}
|
||||||
|
{{- printf "%s-infisical" .Release.Name -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "infisical.serviceAccountName" -}}
|
||||||
|
{{- if .Values.infisical.serviceAccount.create -}}
|
||||||
|
{{- printf "%s-infisical" .Release.Name -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Values.infisical.serviceAccount.name | default "default" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Create a fully qualified backend name.
|
Create a fully qualified backend name.
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
|||||||
@@ -34,10 +34,11 @@ spec:
|
|||||||
{{- toYaml $infisicalValues.image.imagePullSecrets | nindent 6 }}
|
{{- toYaml $infisicalValues.image.imagePullSecrets | nindent 6 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if $infisicalValues.autoDatabaseSchemaMigration }}
|
{{- if $infisicalValues.autoDatabaseSchemaMigration }}
|
||||||
|
serviceAccountName: {{ include "infisical.serviceAccountName" . }}
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: "migration-init"
|
- name: "migration-init"
|
||||||
image: {{ $infisicalValues.databaseSchemaMigrationInitContainer.image }}
|
image: "{{ $infisicalValues.databaseSchemaMigrationJob.image.repository }}:{{ $infisicalValues.databaseSchemaMigrationJob.image.tag }}"
|
||||||
imagePullPolicy: {{ $infisicalValues.databaseSchemaMigrationInitContainer.imagePullPolicy }}
|
imagePullPolicy: {{ $infisicalValues.databaseSchemaMigrationJob.image.pullPolicy }}
|
||||||
args:
|
args:
|
||||||
- "job"
|
- "job"
|
||||||
- "{{ .Release.Name }}-schema-migration-{{ .Release.Revision }}"
|
- "{{ .Release.Name }}-schema-migration-{{ .Release.Revision }}"
|
||||||
|
|||||||
@@ -1,8 +1,25 @@
|
|||||||
|
---
|
||||||
|
{{- if .Values.infisical.serviceAccount.create }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-infisical" .Release.Name }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
{{- include "infisical.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.infisical.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: Role
|
kind: Role
|
||||||
metadata:
|
metadata:
|
||||||
name: k8s-wait-for-infisical-schema-migration
|
name: {{ include "infisical.roleName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
{{- include "infisical.labels" . | nindent 4 }}
|
||||||
rules:
|
rules:
|
||||||
- apiGroups: ["batch"]
|
- apiGroups: ["batch"]
|
||||||
resources: ["jobs"]
|
resources: ["jobs"]
|
||||||
@@ -11,13 +28,15 @@ rules:
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: RoleBinding
|
kind: RoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: infisical-database-schema-migration
|
name: {{ include "infisical.roleBindingName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
{{- include "infisical.labels" . | nindent 4 }}
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ .Values.infisical.databaseSchemaMigrationJob.serviceAccountName | default "default" }}
|
name: {{ include "infisical.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
roleRef:
|
roleRef:
|
||||||
kind: Role
|
|
||||||
name: k8s-wait-for-infisical-schema-migration
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: {{ include "infisical.roleName" . }}
|
||||||
@@ -16,7 +16,7 @@ spec:
|
|||||||
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||||
spec:
|
spec:
|
||||||
serviceAccountName: {{ .Values.infisical.databaseSchemaMigrationJob.serviceAccountName | default "default" }}
|
serviceAccountName: {{ include "infisical.serviceAccountName" . }}
|
||||||
{{- if $infisicalValues.image.imagePullSecrets }}
|
{{- if $infisicalValues.image.imagePullSecrets }}
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{- toYaml $infisicalValues.image.imagePullSecrets | nindent 6 }}
|
{{- toYaml $infisicalValues.image.imagePullSecrets | nindent 6 }}
|
||||||
|
|||||||
@@ -1,81 +1,139 @@
|
|||||||
|
# -- Overrides the default release name
|
||||||
nameOverride: ""
|
nameOverride: ""
|
||||||
|
|
||||||
|
# -- Overrides the full name of the release, affecting resource names
|
||||||
fullnameOverride: ""
|
fullnameOverride: ""
|
||||||
|
|
||||||
infisical:
|
infisical:
|
||||||
enabled: true
|
enabled: true # -- Enable Infisical chart deployment
|
||||||
name: infisical
|
name: infisical # -- Sets the name of the deployment within this chart
|
||||||
|
|
||||||
|
# -- Automatically migrates new database schema when deploying
|
||||||
autoDatabaseSchemaMigration: true
|
autoDatabaseSchemaMigration: true
|
||||||
databaseSchemaMigrationInitContainer:
|
|
||||||
image: "ghcr.io/groundnuty/k8s-wait-for:no-root-v2.0"
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
databaseSchemaMigrationJob:
|
databaseSchemaMigrationJob:
|
||||||
serviceAccountName: default
|
image:
|
||||||
|
# -- Image repository for migration wait job
|
||||||
|
repository: ghcr.io/groundnuty/k8s-wait-for
|
||||||
|
# -- Image tag version
|
||||||
|
tag: no-root-v2.0
|
||||||
|
# -- Pulls image only if not present on the node
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# -- Creates a new service account if true, with necessary permissions for this chart
|
||||||
|
create: true
|
||||||
|
# -- Custom annotations for the auto-created service account
|
||||||
|
annotations: {}
|
||||||
|
# -- Optional custom service account name, if existing service account is used
|
||||||
|
name: null
|
||||||
|
|
||||||
|
# -- Override for the full name of Infisical resources in this deployment
|
||||||
fullnameOverride: ""
|
fullnameOverride: ""
|
||||||
|
# -- Custom annotations for Infisical pods
|
||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
|
# -- Custom annotations for Infisical deployment
|
||||||
deploymentAnnotations: {}
|
deploymentAnnotations: {}
|
||||||
|
# -- Number of pod replicas for high availability
|
||||||
replicaCount: 2
|
replicaCount: 2
|
||||||
|
|
||||||
image:
|
image:
|
||||||
|
# -- Image repository for the Infisical service
|
||||||
repository: infisical/infisical
|
repository: infisical/infisical
|
||||||
tag: "v0.46.3-postgres"
|
# -- Specific version tag of the Infisical image. View the latest version here https://hub.docker.com/r/infisical/infisical
|
||||||
|
tag: "v0.93.1-postgres"
|
||||||
|
# -- Pulls image only if not already present on the node
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
# -- Secret references for pulling the image, if needed
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
# -- Node affinity settings for pod placement
|
||||||
affinity: {}
|
affinity: {}
|
||||||
|
# -- Kubernetes Secret reference containing Infisical root credentials
|
||||||
kubeSecretRef: "infisical-secrets"
|
kubeSecretRef: "infisical-secrets"
|
||||||
|
|
||||||
service:
|
service:
|
||||||
|
# -- Custom annotations for Infisical service
|
||||||
annotations: {}
|
annotations: {}
|
||||||
|
# -- Service type, can be changed based on exposure needs (e.g., LoadBalancer)
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
|
# -- Optional node port for service when using NodePort type
|
||||||
nodePort: ""
|
nodePort: ""
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
|
# -- Memory limit for Infisical container
|
||||||
memory: 600Mi
|
memory: 600Mi
|
||||||
requests:
|
requests:
|
||||||
|
# -- CPU request for Infisical container
|
||||||
cpu: 350m
|
cpu: 350m
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
|
# -- Enable or disable ingress configuration
|
||||||
enabled: true
|
enabled: true
|
||||||
|
# -- Hostname for ingress access, e.g., app.example.com
|
||||||
hostName: ""
|
hostName: ""
|
||||||
|
# -- Specifies the ingress class, useful for multi-ingress setups
|
||||||
ingressClassName: nginx
|
ingressClassName: nginx
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
|
# -- Enable NGINX-specific settings, if using NGINX ingress controller
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
|
# -- Custom annotations for ingress resource
|
||||||
annotations: {}
|
annotations: {}
|
||||||
|
# -- TLS settings for HTTPS access
|
||||||
tls:
|
tls:
|
||||||
[]
|
[]
|
||||||
|
# -- TLS secret name for HTTPS
|
||||||
# - secretName: letsencrypt-prod
|
# - secretName: letsencrypt-prod
|
||||||
|
# -- Domain name to associate with the TLS certificate
|
||||||
# hosts:
|
# hosts:
|
||||||
# - some.domain.com
|
# - some.domain.com
|
||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
# -- When enabled, this will start up a in cluster Postgres
|
# -- Enables an in-cluster PostgreSQL deployment. To achieve HA for Postgres, we recommend deploying https://github.com/zalando/postgres-operator instead.
|
||||||
enabled: true
|
enabled: true
|
||||||
|
# -- PostgreSQL resource name
|
||||||
name: "postgresql"
|
name: "postgresql"
|
||||||
|
# -- Full name override for PostgreSQL resources
|
||||||
fullnameOverride: "postgresql"
|
fullnameOverride: "postgresql"
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
|
# -- Database username for PostgreSQL
|
||||||
username: infisical
|
username: infisical
|
||||||
|
# -- Password for PostgreSQL database access
|
||||||
password: root
|
password: root
|
||||||
|
# -- Database name for Infisical
|
||||||
database: infisicalDB
|
database: infisicalDB
|
||||||
|
|
||||||
useExistingPostgresSecret:
|
useExistingPostgresSecret:
|
||||||
# -- When this is enabled, postgresql.enabled needs to be false
|
# -- Set to true if using an existing Kubernetes secret that contains PostgreSQL connection string
|
||||||
enabled: false
|
enabled: false
|
||||||
# -- The name from where to get the existing postgresql connection string
|
|
||||||
existingConnectionStringSecret:
|
existingConnectionStringSecret:
|
||||||
# -- The name of the secret that contains the postgres connection string
|
# -- Kubernetes secret name containing the PostgreSQL connection string
|
||||||
name: ""
|
name: ""
|
||||||
# -- Secret key name that contains the postgres connection string
|
# -- Key name in the Kubernetes secret that holds the connection string
|
||||||
key: ""
|
key: ""
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
|
# -- Enables an in-cluster Redis deployment
|
||||||
enabled: true
|
enabled: true
|
||||||
|
# -- Redis resource name
|
||||||
name: "redis"
|
name: "redis"
|
||||||
|
# -- Full name override for Redis resources
|
||||||
fullnameOverride: "redis"
|
fullnameOverride: "redis"
|
||||||
|
|
||||||
cluster:
|
cluster:
|
||||||
|
# -- Clustered Redis deployment
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
# -- Requires a password for Redis authentication
|
||||||
usePassword: true
|
usePassword: true
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
|
# -- Redis password
|
||||||
password: "mysecretpassword"
|
password: "mysecretpassword"
|
||||||
|
|
||||||
|
# -- Redis deployment type (e.g., standalone or cluster)
|
||||||
architecture: standalone
|
architecture: standalone
|
||||||
|
|||||||
Reference in New Issue
Block a user