--- # Source: self-host/templates/pre-install-secret-keys.yaml apiVersion: v1 kind: Secret metadata: name: release-name-self-host-secretkeys namespace: default data: globalSettings__internalIdentityKey: "aUZ3STVRREJ0MDBSSHpRUHVCV0RHWmM0ODBib0RNR3BOdUxPME1HcXlWMHQxTGI3MGdLVlZLdUlkOExhNzhTSA==" globalSettings__oidcIdentityClientKey: "UkdmcVR1TlZDNUZ5VjU5SXgyUjhQaTZFSFg3THlCa1hFSHdqZU9MblBRVXBVWDI1NXNGZWlJUmMzQlFlSHFBNQ==" globalSettings__duo__aKey: "YTBhYmxyQ3JiQzZMUTJxdGE5UjZ2VHpIbkJ3VjExWmNJRW9TdXlpVllURzRjVDhyMTdydExoQ2xPZEc0c3lXTg==" --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-dataprotection labels: app.kubernetes.io/component: dataprotection app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 1Gi --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-licenses labels: app.kubernetes.io/component: licenses app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 1Gi --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-attachments labels: app.kubernetes.io/component: attachments app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 1Gi ################# # MSSQL Volumes # ################# --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-mssqllog labels: app.kubernetes.io/component: mssql-log app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 10Gi --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-mssqlbackups labels: app.kubernetes.io/component: mssql-backups app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 1Gi --- # Source: self-host/templates/volumes.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: default name: release-name-self-host-mssqldata labels: app.kubernetes.io/component: mssql-data app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: accessModes: - ReadWriteMany storageClassName: shared-storage resources: requests: storage: 10Gi --- # Source: self-host/templates/admin.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-admin namespace: default labels: app.kubernetes.io/component: admin app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-admin ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/api.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-api namespace: default labels: app.kubernetes.io/component: api app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-api ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/attachments.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-attachments namespace: default labels: app.kubernetes.io/component: attachments app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-attachments ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/events.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-events namespace: default labels: app.kubernetes.io/component: events app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-events ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/icons.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-icons namespace: default labels: app.kubernetes.io/component: icons app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-icons ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/identity.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-identity namespace: default labels: app.kubernetes.io/component: identity app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-identity ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/mssql.yaml kind: Service apiVersion: v1 metadata: name: release-name-self-host-mssql labels: app.kubernetes.io/component: mssql app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: type: ClusterIP ports: - name: http-port port: 1433 targetPort: 1433 selector: app: release-name-self-host-mssql --- # Source: self-host/templates/notifications.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-notifications namespace: default labels: app.kubernetes.io/component: notifications app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-notifications ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/sso.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-sso namespace: default labels: app.kubernetes.io/component: sso app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-sso ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/web.yaml apiVersion: v1 kind: Service metadata: name: release-name-self-host-web namespace: default labels: app.kubernetes.io/component: web app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: selector: app: release-name-self-host-web ports: - port: 5000 targetPort: 5000 --- # Source: self-host/templates/admin.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-admin namespace: default labels: app.kubernetes.io/component: admin app: release-name-self-host-admin app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-admin template: metadata: labels: app.kubernetes.io/component: admin app: release-name-self-host-admin app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-admin image: "bitwarden/admin:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: - name: dataprotection mountPath: /etc/bitwarden/core/aspnet-dataprotection - name: licenses mountPath: /etc/bitwarden/core/licenses securityContext: null volumes: - name: dataprotection persistentVolumeClaim: claimName: release-name-self-host-dataprotection - name: licenses persistentVolumeClaim: claimName: release-name-self-host-licenses --- # Source: self-host/templates/api.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-api namespace: default labels: app: release-name-self-host-api app.kubernetes.io/component: api app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-api template: metadata: labels: app: release-name-self-host-api app.kubernetes.io/component: api app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-api image: "bitwarden/api:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 200m memory: 256Mi requests: cpu: 100m memory: 128Mi volumeMounts: - name: attachments mountPath: /etc/bitwarden/core/attachments - name: dataprotection mountPath: /etc/bitwarden/core/aspnet-dataprotection - name: licenses mountPath: /etc/bitwarden/core/licenses securityContext: null volumes: - name: dataprotection persistentVolumeClaim: claimName: release-name-self-host-dataprotection - name: attachments persistentVolumeClaim: claimName: release-name-self-host-attachments - name: licenses persistentVolumeClaim: claimName: release-name-self-host-licenses --- # Source: self-host/templates/attachments.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-attachments namespace: default labels: app: release-name-self-host-attachments app.kubernetes.io/component: attachments app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-attachments template: metadata: labels: app: release-name-self-host-attachments app.kubernetes.io/component: attachments app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-attachments image: "bitwarden/attachments:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: - name: attachments mountPath: /etc/bitwarden/core/attachments securityContext: null volumes: - name: attachments persistentVolumeClaim: claimName: release-name-self-host-attachments --- # Source: self-host/templates/events.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-events namespace: default labels: app: release-name-self-host-events app.kubernetes.io/component: events app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-events template: metadata: labels: app: release-name-self-host-events app.kubernetes.io/component: events app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-events image: "bitwarden/events:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: securityContext: null volumes: --- # Source: self-host/templates/icons.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-icons namespace: default labels: app: release-name-self-host-icons app.kubernetes.io/component: icons app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-icons template: metadata: labels: app: release-name-self-host-icons app.kubernetes.io/component: icons app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-icons image: "bitwarden/icons:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 volumeMounts: resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi securityContext: null volumes: --- # Source: self-host/templates/identity.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-identity namespace: default labels: app: release-name-self-host-identity app.kubernetes.io/component: identity app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-identity template: metadata: labels: app: release-name-self-host-identity app.kubernetes.io/component: identity app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-identity image: "bitwarden/identity:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string - secretRef: name: release-name-identity-cert-password env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 200m memory: 256Mi requests: cpu: 100m memory: 128Mi volumeMounts: - name: identity mountPath: /etc/bitwarden/identity - name: dataprotection mountPath: /etc/bitwarden/core/aspnet-dataprotection - name: licenses mountPath: /etc/bitwarden/core/licenses securityContext: null volumes: - name: identity secret: secretName: release-name-identity-cert - name: dataprotection persistentVolumeClaim: claimName: release-name-self-host-dataprotection - name: licenses persistentVolumeClaim: claimName: release-name-self-host-licenses --- # Source: self-host/templates/notifications.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-notifications namespace: default labels: app: release-name-self-host-notifications app.kubernetes.io/component: notifications app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-notifications template: metadata: labels: app: release-name-self-host-notifications app.kubernetes.io/component: notifications app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-notifications image: "bitwarden/notifications:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: securityContext: null volumes: --- # Source: self-host/templates/sso.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-sso namespace: default labels: app: release-name-self-host-sso app.kubernetes.io/component: sso app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-sso template: metadata: labels: app: release-name-self-host-sso app.kubernetes.io/component: sso app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-sso image: "bitwarden/sso:2024.2.3" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-identity-cert-password - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: /alive port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: - name: identity mountPath: /etc/bitwarden/identity - name: dataprotection mountPath: /etc/bitwarden/core/aspnet-dataprotection - name: licenses mountPath: /etc/bitwarden/core/licenses securityContext: null volumes: - name: identity secret: secretName: release-name-identity-cert - name: dataprotection persistentVolumeClaim: claimName: release-name-self-host-dataprotection - name: licenses persistentVolumeClaim: claimName: release-name-self-host-licenses --- # Source: self-host/templates/web.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-self-host-web namespace: default labels: app: release-name-self-host-web app.kubernetes.io/component: web app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: replicas: 1 strategy: type: "RollingUpdate" selector: matchLabels: app: release-name-self-host-web template: metadata: labels: app: release-name-self-host-web app.kubernetes.io/component: web app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-web image: "bitwarden/web:2024.2.5" envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-self-host-secretkeys - secretRef: name: release-name-sql-connection-string env: - name: ASPNETCORE_URLS value: http://+:5000 livenessProbe: httpGet: path: / port: 5000 initialDelaySeconds: 180 ports: - containerPort: 5000 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi volumeMounts: - name: web mountPath: /etc/bitwarden/web securityContext: null volumes: - name: web configMap: name: release-name-config-map-web --- # Source: self-host/templates/mssql.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: release-name-self-host-mssql namespace: default labels: app: release-name-self-host-mssql app.kubernetes.io/component: mssql app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: serviceName: release-name-self-host-mssql replicas: 1 updateStrategy: type: "OnDelete" selector: matchLabels: app: release-name-self-host-mssql template: metadata: labels: app: release-name-self-host-mssql app.kubernetes.io/component: mssql app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: containers: - name: release-name-self-host-mssql image: "mcr.microsoft.com/mssql/server:2022-CU11-ubuntu-22.04" imagePullPolicy: Always resources: limits: cpu: 500m memory: 2G requests: cpu: 100m memory: 2G envFrom: - configMapRef: name: release-name-config-map - secretRef: name: "custom-secret" - secretRef: name: release-name-sql-connection-string ports: - name: mssql containerPort: 1433 volumeMounts: - name: mssql-data mountPath: /var/opt/mssql/data - name: mssql-log mountPath: /var/opt/mssql/log - name: mssql-backups mountPath: /var/opt/mssql/backups livenessProbe: tcpSocket: port: mssql initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 readinessProbe: tcpSocket: port: mssql initialDelaySeconds: 5 periodSeconds: 2 timeoutSeconds: 1 startupProbe: exec: command: - '/bin/sh' - '-c' - '/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ${SA_PASSWORD} -Q "SELECT 1" || exit 1' initialDelaySeconds: 120 periodSeconds: 10 timeoutSeconds: 3 enableServiceLinks: false volumes: - name: mssql-data persistentVolumeClaim: claimName: release-name-self-host-mssqldata - name: mssql-log persistentVolumeClaim: claimName: release-name-self-host-mssqllog - name: mssql-backups persistentVolumeClaim: claimName: release-name-self-host-mssqlbackups --- # Source: self-host/templates/ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: release-name-self-host-ingress namespace: default annotations: labels: app.kubernetes.io/component: ingress app.kubernetes.io/name: self-host app.kubernetes.io/managed-by: Helm app.kubernetes.io/instance: release-name helm.sh/chart: self-host-2024.2.3 spec: ingressClassName: nginx rules: - host: REPLACE http: paths: - path: /(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-web port: number: 5000 - path: /attachments/(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-attachments port: number: 5000 - path: /api/(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-api port: number: 5000 - path: /icons/(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-icons port: number: 5000 - path: /notifications/(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-notifications port: number: 5000 - path: /events/(.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-events port: number: 5000 - path: /(sso/.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-sso port: number: 5000 - path: /(identity/.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-identity port: number: 5000 - path: /(admin/?.*) pathType: ImplementationSpecific backend: service: name: release-name-self-host-admin port: number: 5000 tls: - hosts: - REPLACE --- # Source: self-host/templates/pre-install-service-acc.yaml apiVersion: v1 kind: ServiceAccount metadata: name: service-account namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "0" --- # Source: self-host/templates/pre-install-hook-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: release-name-config-map namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "1" data: ACCEPT_EULA: "Y" MSSQL_PID: "Express" ASPNETCORE_ENVIRONMENT: "Production" globalSettings__selfHosted: "true" globalSettings__baseServiceUri__vault: "https://REPLACE" globalSettings__baseServiceUri__api: "https://REPLACE/api" globalSettings__baseServiceUri__identity: "https://REPLACE/identity" globalSettings__baseServiceUri__admin: "https://REPLACE/admin" globalSettings__baseServiceUri__notifications: "https://REPLACE/notifications" globalSettings__baseServiceUri__sso: "https://REPLACE/sso" globalSettings__baseServiceUri__internalNotifications: "http://release-name-self-host-notifications:5000" globalSettings__baseServiceUri__internalAdmin: "http://release-name-self-host-admin:5000" globalSettings__baseServiceUri__internalIdentity: "http://release-name-self-host-identity:5000" globalSettings__baseServiceUri__internalApi: "http://release-name-self-host-api:5000" globalSettings__baseServiceUri__internalVault: "http://release-name-self-host-web:5000" globalSettings__baseServiceUri__internalSso: "http://release-name-self-host-sso:5000" globalSettings__baseServiceUri__internalScim: "http://release-name-self-host-scim:5000" globalSettings__attachment__baseDirectory: "/etc/bitwarden/core/attachments" globalSettings__attachment__baseUrl: "https://REPLACE/attachments" globalSettings__send__baseDirectory: "/etc/bitwarden/core/attachments/sendfiles" globalSettings__send__baseUrl: "https://REPLACE/attachments/sendfiles" globalSettings__mail__replyToEmail: "no-reply@bitwarden.localhost" globalSettings__mail__smtp__host: "smtp.gmail.com" globalSettings__mail__smtp__port: "587" globalSettings__mail__smtp__ssl: "false" globalSettings__logDirectory: "/dev/null" globalSettings__logRollBySizeLimit: "" globalSettings__syslog__destination: "" globalSettings__dataProtection__directory: "/etc/bitwarden/core/aspnet-dataprotection" globalSettings__licenseDirectory: "/etc/bitwarden/core/licenses" globalSettings__disableUserRegistration: "false" globalSettings__enableCloudCommunication: "false" globalSettings__baseServiceUri__cloudRegion: US globalSettings__pushRelayBaseUri: "https://push.bitwarden.com" adminSettings__admins: "false" LOCAL_UID: "1000" LOCAL_GID: "1000" --- # Source: self-host/templates/pre-install-hook-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: release-name-config-map-web namespace: default annotations: "helm.sh/hook": pre-install "helm.sh/hook-weight": "1" data: app-id.json: |- { "trustedFacets": [ { "version": { "major": 1, "minor": 0 }, "ids": [ "https://REPLACE", "ios:bundle-id:com.8bit.bitwarden", "android:apk-key-hash:dUGFzUzf3lmHSLBDBIv+WaFyZMI" ] } ] } --- # Source: self-host/templates/pre-install-service-acc.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: role:service-acc namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "0" rules: # Authorization rules for this role - apiGroups: [""] resources: ["secrets"] verbs: ["create","update","patch","delete"] --- # Source: self-host/templates/pre-install-service-acc.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: role:service-acc-pods namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "0" rules: # Authorization rules for this role - apiGroups: [""] resources: ["pods"] verbs: ["get","list","watch"] --- # Source: self-host/templates/pre-install-service-acc.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: rolebinding:service-acc namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "0" roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: role:service-acc subjects: - kind: ServiceAccount name: service-account namespace: default --- # Source: self-host/templates/pre-install-service-acc.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: rolebinding:service-acc-pods namespace: default annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "0" roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: role:service-acc-pods subjects: - kind: ServiceAccount name: service-account namespace: default --- # Source: self-host/templates/post-delete-hook.yaml apiVersion: batch/v1 kind: Job metadata: name: "release-name-cleanup" labels: app.kubernetes.io/component: post-delete-hook annotations: "helm.sh/hook": post-delete "helm.sh/hook-weight": "0" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: name: "release-name-cleanup" labels: app.kubernetes.io/component: post-delete-hook spec: serviceAccountName: "service-account" containers: - name: delete-resources command: [ "/bin/sh", "-c" ] args: [' kubectl delete configmap release-name-config-map -n default; kubectl delete configmap release-name-config-map-web -n default; kubectl delete secret "release-name-sql-connection-string" -n default; kubectl delete secret release-name-identity-cert -n default; kubectl delete secret release-name-identity-cert-password -n default; kubectl delete job release-name-setup; kubectl delete job release-name-migrator; echo "Done" '] image: "bitnami/kubectl:1.21" restartPolicy: Never --- # Source: self-host/templates/post-install-db-migrator-job.yaml apiVersion: batch/v1 kind: Job metadata: name: "release-name-migrator" labels: app.kubernetes.io/component: post-install-db-migrator-job annotations: "helm.sh/hook": post-install,post-upgrade "helm.sh/hook-weight": "0" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: name: "release-name-migrator" labels: app.kubernetes.io/component: post-install-db-migrator-job spec: serviceAccountName: "service-account" initContainers: - name: wait-for-db command: - "/bin/bash" - "-c" args: [' while [[ $(kubectl get pods -n default -l app=release-name-self-host-mssql -o jsonpath="{.items[*].status.containerStatuses[*].ready}") != "true" ]]; do sleep 1; done echo "SQL Ready!" while [[ $(kubectl get pods -n default -l app=release-name-self-host-admin -o jsonpath="{.items[*].status.containerStatuses[*].ready}") != "true" ]]; do sleep 1; done echo "Admin Ready!" while [ ! -f /db/vault.mdf ]; do sleep 1; done echo "DB Ready!" '] image: "bitnami/kubectl:1.21" volumeMounts: - name: mssql-data mountPath: /db containers: - name: migrate-db env: - name: MSSQL_CONN_STRING valueFrom: secretKeyRef: name: release-name-sql-connection-string key: globalSettings__sqlServer__connectionString image: "bitwarden/mssqlmigratorutility:2024.2.3" volumeMounts: restartPolicy: Never volumes: - name: mssql-data persistentVolumeClaim: claimName: release-name-self-host-mssqldata --- # Source: self-host/templates/pre-install-db-migrator-job.yaml apiVersion: batch/v1 kind: Job metadata: name: "release-name-db-pre-upgrade" labels: app.kubernetes.io/component: pre-install-db-migrator-job annotations: "helm.sh/hook": pre-upgrade "helm.sh/hook-weight": "4" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: name: "release-name-db-pre-upgrade" labels: app.kubernetes.io/component: pre-install-db-migrator-job spec: serviceAccountName: "service-account" containers: - name: migrate-db env: - name: MSSQL_CONN_STRING valueFrom: secretKeyRef: name: release-name-sql-connection-string key: globalSettings__sqlServer__connectionString image: "bitwarden/mssqlmigratorutility:2024.2.3" volumeMounts: restartPolicy: Never volumes: --- # Source: self-host/templates/pre-install-job.yaml apiVersion: batch/v1 kind: Job metadata: name: "release-name-setup" labels: app.kubernetes.io/component: pre-install-hook annotations: "helm.sh/hook": pre-install "helm.sh/hook-weight": "2" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: name: "release-name-setup" labels: app.kubernetes.io/component: pre-install-hook spec: serviceAccountName: "service-account" initContainers: - name: generate-identity-cert command: - "/bin/sh" - "-c" args: [' openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout /bitwarden/identity.key -out /bitwarden/identity.crt -subj "/CN=Bitwarden IdentityServer" -days 36500; openssl pkcs12 -export -out /bitwarden/identity.pfx -inkey /bitwarden/identity.key -in /bitwarden/identity.crt -passout pass:map[]; chmod 777 /bitwarden/identity.pfx; echo Done; '] image: "docker.io/nginx:1.25.3" volumeMounts: - name: temp mountPath: "/bitwarden" containers: - name: create-resources command: - "/bin/sh" - "-c" args: [' ls -atlh /bitwarden; kubectl create secret generic release-name-identity-cert --from-file=/bitwarden/identity.pfx -n default ; kubectl create secret generic release-name-identity-cert-password -n default --from-literal=globalSettings__identityServer__certificatePassword="map[]"; echo "Done" '] image: "bitnami/kubectl:1.21" volumeMounts: - name: temp mountPath: "/bitwarden" restartPolicy: Never volumes: - name: temp emptyDir: medium: Memory --- # Source: self-host/templates/pre-install-secret-sql.yaml apiVersion: batch/v1 kind: Job metadata: name: "release-name-secret-sql" labels: app.kubernetes.io/component: pre-install-hook annotations: "helm.sh/hook": pre-install "helm.sh/hook-weight": "3" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: name: "release-name-secret-sql" labels: app.kubernetes.io/component: pre-install-hook spec: serviceAccountName: "service-account" containers: - name: create-resources command: - "/bin/sh" - "-c" args: [' kubectl create secret generic release-name-sql-connection-string -n default --from-literal=globalSettings__sqlServer__connectionString="Data Source=tcp:release-name-self-host-mssql,1433;Initial Catalog=vault;Persist Security Info=False;User ID=sa;Password=$SA_PASSWORD;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=True" echo "Done" '] image: "bitnami/kubectl:1.21" envFrom: - secretRef: name: "custom-secret" volumeMounts: - name: temp mountPath: "/bitwarden" restartPolicy: Never volumes: - name: temp emptyDir: medium: Memory