fix
This commit is contained in:
@@ -1,13 +0,0 @@
|
|||||||
const DOMAIN = config.domain;
|
|
||||||
fn check_domain() {
|
|
||||||
assert(have_namespace(`${global::DOMAIN}`), `There is no ${global::DOMAIN} namespace`);
|
|
||||||
}
|
|
||||||
fn check_authentik() {
|
|
||||||
assert(have_namespace(`${global::DOMAIN}-auth`), `There is no ${global::DOMAIN}-auth namespace`);
|
|
||||||
assert(have_install(`${global::DOMAIN}-auth`, "authentik"), `No authentik installation in ${global::DOMAIN}-auth`);
|
|
||||||
assert(have_secret(`${global::DOMAIN}-auth`, "authentik"), `No authentik secret in ${global::DOMAIN}-auth`);
|
|
||||||
}
|
|
||||||
fn pre_check() {
|
|
||||||
check_domain();
|
|
||||||
check_authentik();
|
|
||||||
}
|
|
||||||
@@ -1,423 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: vinyl.solidite.fr/v1beta1
|
|
||||||
kind: Component
|
|
||||||
category: apps
|
|
||||||
metadata:
|
|
||||||
name: openproject
|
|
||||||
description: null
|
|
||||||
options:
|
|
||||||
app_group:
|
|
||||||
default: apps
|
|
||||||
examples:
|
|
||||||
- apps
|
|
||||||
type: string
|
|
||||||
backups:
|
|
||||||
default:
|
|
||||||
enable: false
|
|
||||||
endpoint: ''
|
|
||||||
key_id_key: s3-id
|
|
||||||
restic_key: bck-password
|
|
||||||
retention:
|
|
||||||
db: 30d
|
|
||||||
keepDaily: 14
|
|
||||||
keepMonthly: 12
|
|
||||||
keepWeekly: 6
|
|
||||||
keepYearly: 12
|
|
||||||
schedule:
|
|
||||||
backup: 10 3 * * *
|
|
||||||
check: 10 5 * * 1
|
|
||||||
db: 10 3 * * *
|
|
||||||
prune: 10 1 * * 0
|
|
||||||
secret_key: s3-secret
|
|
||||||
secret_name: backup-settings
|
|
||||||
use_barman: false
|
|
||||||
examples:
|
|
||||||
- enable: false
|
|
||||||
endpoint: ''
|
|
||||||
key_id_key: s3-id
|
|
||||||
restic_key: bck-password
|
|
||||||
retention:
|
|
||||||
db: 30d
|
|
||||||
keepDaily: 14
|
|
||||||
keepMonthly: 12
|
|
||||||
keepWeekly: 6
|
|
||||||
keepYearly: 12
|
|
||||||
schedule:
|
|
||||||
backup: 10 3 * * *
|
|
||||||
check: 10 5 * * 1
|
|
||||||
db: 10 3 * * *
|
|
||||||
prune: 10 1 * * 0
|
|
||||||
secret_key: s3-secret
|
|
||||||
secret_name: backup-settings
|
|
||||||
use_barman: false
|
|
||||||
properties:
|
|
||||||
enable:
|
|
||||||
default: false
|
|
||||||
type: boolean
|
|
||||||
endpoint:
|
|
||||||
default: ''
|
|
||||||
type: string
|
|
||||||
key_id_key:
|
|
||||||
default: s3-id
|
|
||||||
type: string
|
|
||||||
restic_key:
|
|
||||||
default: bck-password
|
|
||||||
type: string
|
|
||||||
retention:
|
|
||||||
default:
|
|
||||||
db: 30d
|
|
||||||
keepDaily: 14
|
|
||||||
keepMonthly: 12
|
|
||||||
keepWeekly: 6
|
|
||||||
keepYearly: 12
|
|
||||||
properties:
|
|
||||||
db:
|
|
||||||
default: 30d
|
|
||||||
type: string
|
|
||||||
keepDaily:
|
|
||||||
default: 14
|
|
||||||
type: integer
|
|
||||||
keepMonthly:
|
|
||||||
default: 12
|
|
||||||
type: integer
|
|
||||||
keepWeekly:
|
|
||||||
default: 6
|
|
||||||
type: integer
|
|
||||||
keepYearly:
|
|
||||||
default: 12
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
schedule:
|
|
||||||
default:
|
|
||||||
backup: 10 3 * * *
|
|
||||||
check: 10 5 * * 1
|
|
||||||
db: 10 3 * * *
|
|
||||||
prune: 10 1 * * 0
|
|
||||||
properties:
|
|
||||||
backup:
|
|
||||||
default: 10 3 * * *
|
|
||||||
type: string
|
|
||||||
check:
|
|
||||||
default: 10 5 * * 1
|
|
||||||
type: string
|
|
||||||
db:
|
|
||||||
default: 10 3 * * *
|
|
||||||
type: string
|
|
||||||
prune:
|
|
||||||
default: 10 1 * * 0
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
secret_key:
|
|
||||||
default: s3-secret
|
|
||||||
type: string
|
|
||||||
secret_name:
|
|
||||||
default: backup-settings
|
|
||||||
type: string
|
|
||||||
use_barman:
|
|
||||||
default: false
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
domain:
|
|
||||||
default: your-company
|
|
||||||
examples:
|
|
||||||
- your-company
|
|
||||||
type: string
|
|
||||||
domain_name:
|
|
||||||
default: your-company.com
|
|
||||||
examples:
|
|
||||||
- your-company.com
|
|
||||||
type: string
|
|
||||||
hpa:
|
|
||||||
default:
|
|
||||||
avg-cpu: 50
|
|
||||||
max-replicas: 5
|
|
||||||
min-replicas: 1
|
|
||||||
examples:
|
|
||||||
- avg-cpu: 50
|
|
||||||
max-replicas: 5
|
|
||||||
min-replicas: 1
|
|
||||||
properties:
|
|
||||||
avg-cpu:
|
|
||||||
default: 50
|
|
||||||
type: integer
|
|
||||||
max-replicas:
|
|
||||||
default: 5
|
|
||||||
type: integer
|
|
||||||
min-replicas:
|
|
||||||
default: 1
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
images:
|
|
||||||
default:
|
|
||||||
app:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: docker.io
|
|
||||||
repository: to-be/defined
|
|
||||||
tag: v1.0.0
|
|
||||||
postgresql:
|
|
||||||
registry: ghcr.io
|
|
||||||
repository: cloudnative-pg/postgresql
|
|
||||||
tag: 15.3
|
|
||||||
redis:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis
|
|
||||||
tag: v7.0.12
|
|
||||||
redis_exporter:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis-exporter
|
|
||||||
tag: v1.44.0
|
|
||||||
examples:
|
|
||||||
- app:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: docker.io
|
|
||||||
repository: to-be/defined
|
|
||||||
tag: v1.0.0
|
|
||||||
postgresql:
|
|
||||||
registry: ghcr.io
|
|
||||||
repository: cloudnative-pg/postgresql
|
|
||||||
tag: 15.3
|
|
||||||
redis:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis
|
|
||||||
tag: v7.0.12
|
|
||||||
redis_exporter:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis-exporter
|
|
||||||
tag: v1.44.0
|
|
||||||
properties:
|
|
||||||
app:
|
|
||||||
default:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: docker.io
|
|
||||||
repository: to-be/defined
|
|
||||||
tag: v1.0.0
|
|
||||||
properties:
|
|
||||||
pullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
enum:
|
|
||||||
- Always
|
|
||||||
- Never
|
|
||||||
- IfNotPresent
|
|
||||||
type: string
|
|
||||||
registry:
|
|
||||||
default: docker.io
|
|
||||||
type: string
|
|
||||||
repository:
|
|
||||||
default: to-be/defined
|
|
||||||
type: string
|
|
||||||
tag:
|
|
||||||
default: v1.0.0
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
postgresql:
|
|
||||||
default:
|
|
||||||
registry: ghcr.io
|
|
||||||
repository: cloudnative-pg/postgresql
|
|
||||||
tag: 15.3
|
|
||||||
properties:
|
|
||||||
registry:
|
|
||||||
default: ghcr.io
|
|
||||||
type: string
|
|
||||||
repository:
|
|
||||||
default: cloudnative-pg/postgresql
|
|
||||||
type: string
|
|
||||||
tag:
|
|
||||||
default: 15.3
|
|
||||||
type: number
|
|
||||||
type: object
|
|
||||||
redis:
|
|
||||||
default:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis
|
|
||||||
tag: v7.0.12
|
|
||||||
properties:
|
|
||||||
pullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
enum:
|
|
||||||
- Always
|
|
||||||
- Never
|
|
||||||
- IfNotPresent
|
|
||||||
type: string
|
|
||||||
registry:
|
|
||||||
default: quay.io
|
|
||||||
type: string
|
|
||||||
repository:
|
|
||||||
default: opstree/redis
|
|
||||||
type: string
|
|
||||||
tag:
|
|
||||||
default: v7.0.12
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
redis_exporter:
|
|
||||||
default:
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
registry: quay.io
|
|
||||||
repository: opstree/redis-exporter
|
|
||||||
tag: v1.44.0
|
|
||||||
properties:
|
|
||||||
pullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
enum:
|
|
||||||
- Always
|
|
||||||
- Never
|
|
||||||
- IfNotPresent
|
|
||||||
type: string
|
|
||||||
registry:
|
|
||||||
default: quay.io
|
|
||||||
type: string
|
|
||||||
repository:
|
|
||||||
default: opstree/redis-exporter
|
|
||||||
type: string
|
|
||||||
tag:
|
|
||||||
default: v1.44.0
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
ingress_class:
|
|
||||||
default: traefik
|
|
||||||
examples:
|
|
||||||
- traefik
|
|
||||||
type: string
|
|
||||||
issuer:
|
|
||||||
default: letsencrypt-prod
|
|
||||||
examples:
|
|
||||||
- letsencrypt-prod
|
|
||||||
type: string
|
|
||||||
language:
|
|
||||||
default: fr_FR
|
|
||||||
examples:
|
|
||||||
- fr_FR
|
|
||||||
type: string
|
|
||||||
postgres:
|
|
||||||
default:
|
|
||||||
replicas: 1
|
|
||||||
examples:
|
|
||||||
- replicas: 1
|
|
||||||
properties:
|
|
||||||
replicas:
|
|
||||||
default: 1
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
redis:
|
|
||||||
default:
|
|
||||||
exporter:
|
|
||||||
enabled: true
|
|
||||||
examples:
|
|
||||||
- exporter:
|
|
||||||
enabled: true
|
|
||||||
properties:
|
|
||||||
exporter:
|
|
||||||
default:
|
|
||||||
enabled: true
|
|
||||||
properties:
|
|
||||||
enabled:
|
|
||||||
default: true
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
replicas:
|
|
||||||
default: 1
|
|
||||||
examples:
|
|
||||||
- 1
|
|
||||||
type: integer
|
|
||||||
sso_vynil:
|
|
||||||
default: true
|
|
||||||
examples:
|
|
||||||
- true
|
|
||||||
type: boolean
|
|
||||||
storage:
|
|
||||||
default:
|
|
||||||
postgres:
|
|
||||||
size: 10Gi
|
|
||||||
redis:
|
|
||||||
size: 2Gi
|
|
||||||
volume:
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
class: ''
|
|
||||||
size: 1Gi
|
|
||||||
type: Filesystem
|
|
||||||
description: Configure this app storage
|
|
||||||
examples:
|
|
||||||
- postgres:
|
|
||||||
size: 10Gi
|
|
||||||
redis:
|
|
||||||
size: 2Gi
|
|
||||||
volume:
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
class: ''
|
|
||||||
size: 1Gi
|
|
||||||
type: Filesystem
|
|
||||||
properties:
|
|
||||||
postgres:
|
|
||||||
default:
|
|
||||||
size: 10Gi
|
|
||||||
properties:
|
|
||||||
size:
|
|
||||||
default: 10Gi
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
redis:
|
|
||||||
default:
|
|
||||||
size: 2Gi
|
|
||||||
properties:
|
|
||||||
size:
|
|
||||||
default: 2Gi
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
volume:
|
|
||||||
default:
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
class: ''
|
|
||||||
size: 1Gi
|
|
||||||
type: Filesystem
|
|
||||||
properties:
|
|
||||||
accessMode:
|
|
||||||
default: ReadWriteOnce
|
|
||||||
enum:
|
|
||||||
- ReadWriteOnce
|
|
||||||
- ReadOnlyMany
|
|
||||||
- ReadWriteMany
|
|
||||||
type: string
|
|
||||||
class:
|
|
||||||
default: ''
|
|
||||||
type: string
|
|
||||||
size:
|
|
||||||
default: 1Gi
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
default: Filesystem
|
|
||||||
enum:
|
|
||||||
- Filesystem
|
|
||||||
- Block
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
sub_domain:
|
|
||||||
default: to-be-set
|
|
||||||
examples:
|
|
||||||
- to-be-set
|
|
||||||
type: string
|
|
||||||
timezone:
|
|
||||||
default: Europe/Paris
|
|
||||||
examples:
|
|
||||||
- Europe/Paris
|
|
||||||
type: string
|
|
||||||
dependencies:
|
|
||||||
- dist: null
|
|
||||||
category: dbo
|
|
||||||
component: pg
|
|
||||||
providers:
|
|
||||||
kubernetes: true
|
|
||||||
authentik: true
|
|
||||||
kubectl: true
|
|
||||||
postgresql: null
|
|
||||||
mysql: null
|
|
||||||
restapi: null
|
|
||||||
http: null
|
|
||||||
gitea: null
|
|
||||||
tfaddtype: null
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Ingress_openproject" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: openproject
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- openproject.example.com
|
|
||||||
secretName: ''
|
|
||||||
rules:
|
|
||||||
- host: openproject.example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: openproject
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Job_openproject-seeder-20240528164127" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: batch/v1
|
|
||||||
kind: Job
|
|
||||||
metadata:
|
|
||||||
name: openproject-seeder-20240528164127
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
ttlSecondsAfterFinished: 6000
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
helm.sh/chart: openproject-5.1.4
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/version: '14'
|
|
||||||
openproject/process: seeder
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 1000
|
|
||||||
volumes:
|
|
||||||
- name: tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: app-tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: openproject
|
|
||||||
initContainers:
|
|
||||||
- name: check-db-ready
|
|
||||||
image: docker.io/postgres:13
|
|
||||||
imagePullPolicy: Always
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- until pg_isready -h $DATABASE_HOST -p $DATABASE_PORT -U openproject; do echo "waiting for database $DATABASE_HOST:$DATABASE_PORT"; sleep 2; done;
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 200Mi
|
|
||||||
requests:
|
|
||||||
memory: 200Mi
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
containers:
|
|
||||||
- name: seeder
|
|
||||||
image: docker.io/openproject/openproject:14-slim
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
args:
|
|
||||||
- bash
|
|
||||||
- /app/docker/prod/seeder
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /tmp
|
|
||||||
name: tmp
|
|
||||||
- mountPath: /app/tmp
|
|
||||||
name: app-tmp
|
|
||||||
- name: data
|
|
||||||
mountPath: /var/openproject/assets
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
resource "kubectl_manifest" "NetworkPolicy_openproject-memcached" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
kind: NetworkPolicy
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
metadata:
|
|
||||||
name: openproject-memcached
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/name: memcached
|
|
||||||
app.kubernetes.io/version: 1.6.24
|
|
||||||
helm.sh/chart: memcached-6.14.0
|
|
||||||
policyTypes:
|
|
||||||
- Ingress
|
|
||||||
- Egress
|
|
||||||
egress:
|
|
||||||
- {}
|
|
||||||
ingress:
|
|
||||||
- ports:
|
|
||||||
- port: 11211
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
resource "kubectl_manifest" "PersistentVolumeClaim_openproject" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: openproject
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Pod_openproject-test-connection" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Pod
|
|
||||||
metadata:
|
|
||||||
name: openproject-test-connection
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
annotations:
|
|
||||||
helm.sh/hook: test
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: wget
|
|
||||||
image: busybox
|
|
||||||
command:
|
|
||||||
- wget
|
|
||||||
args:
|
|
||||||
- --no-verbose
|
|
||||||
- --tries=1
|
|
||||||
- --spider
|
|
||||||
- openproject:8080/health_check
|
|
||||||
restartPolicy: Never
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Secret_openproject-postgresql" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: openproject-postgresql
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
postgres-password: VDQxbmpqeEVnYg==
|
|
||||||
password: cEhqbUkyQjVYVw==
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Secret_openproject-core" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: openproject-core
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
stringData:
|
|
||||||
DATABASE_HOST: openproject-postgresql.vynil-ci.svc.cluster.local
|
|
||||||
DATABASE_PORT: '5432'
|
|
||||||
DATABASE_URL: postgresql://openproject@openproject-postgresql:5432/openproject
|
|
||||||
OPENPROJECT_SEED_ADMIN_USER_PASSWORD: admin
|
|
||||||
OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: 'true'
|
|
||||||
OPENPROJECT_SEED_ADMIN_USER_NAME: OpenProject Admin
|
|
||||||
OPENPROJECT_SEED_ADMIN_USER_MAIL: admin@example.net
|
|
||||||
OPENPROJECT_HTTPS: 'true'
|
|
||||||
OPENPROJECT_SEED_LOCALE: en
|
|
||||||
OPENPROJECT_HOST__NAME: openproject.example.com
|
|
||||||
OPENPROJECT_HSTS: 'true'
|
|
||||||
OPENPROJECT_RAILS__CACHE__STORE: memcache
|
|
||||||
OPENPROJECT_RAILS__RELATIVE__URL__ROOT: ''
|
|
||||||
POSTGRES_STATEMENT_TIMEOUT: 120s
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Secret_openproject-oidc" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: openproject-oidc
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
stringData:
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_DISPLAY__NAME: Keycloak
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_HOST: oidc.host
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_IDENTIFIER: oidc.identifier
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SECRET: oidc.secret
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_AUTHORIZATION__ENDPOINT: oidc.authorizationEndpoint
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_TOKEN__ENDPOINT: oidc.tokenEndpoint
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_USERINFO__ENDPOINT: oidc.userinfoEndpoint
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_END__SESSION__ENDPOINT: oidc.endSessionEndpoint
|
|
||||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SCOPE: '[openid email profile]'
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Secret_openproject-memcached" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: openproject-memcached
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
stringData:
|
|
||||||
OPENPROJECT_CACHE__MEMCACHE__SERVER: openproject-memcached:11211
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Service_openproject-memcached" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: openproject-memcached
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: memcache
|
|
||||||
port: 11211
|
|
||||||
targetPort: memcache
|
|
||||||
nodePort: null
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: memcached
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Service_openproject-postgresql" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: openproject-postgresql
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
sessionAffinity: None
|
|
||||||
ports:
|
|
||||||
- name: tcp-postgresql
|
|
||||||
port: 5432
|
|
||||||
targetPort: tcp-postgresql
|
|
||||||
nodePort: null
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: postgresql
|
|
||||||
app.kubernetes.io/component: primary
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Service_openproject" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: openproject
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
sessionAffinity: ClientIP
|
|
||||||
sessionAffinityConfig:
|
|
||||||
clientIP:
|
|
||||||
timeoutSeconds: 10800
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
name: http
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
openproject/process: web
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Service_openproject-postgresql-hl" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: openproject-postgresql-hl
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
annotations:
|
|
||||||
service.alpha.kubernetes.io/tolerate-unready-endpoints: 'true'
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
clusterIP: None
|
|
||||||
publishNotReadyAddresses: true
|
|
||||||
ports:
|
|
||||||
- name: tcp-postgresql
|
|
||||||
port: 5432
|
|
||||||
targetPort: tcp-postgresql
|
|
||||||
selector:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: postgresql
|
|
||||||
app.kubernetes.io/component: primary
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
resource "kubectl_manifest" "ServiceAccount_openproject" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: openproject
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "ServiceAccount_openproject-memcached" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
automountServiceAccountToken: false
|
|
||||||
metadata:
|
|
||||||
name: openproject-memcached
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,564 +0,0 @@
|
|||||||
resource "kubectl_manifest" "Deployment_openproject-worker-default" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: openproject-worker-default
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
openproject/process: worker-default
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
checksum/env-core: a4294db8b065a4d77e098d233e1b73e5ad4557890fd69436ba8fc7c2daf7a181
|
|
||||||
checksum/env-memcached: f4f558dde2e4422edc31e686317ce225beea60a136cbb9459cfca7d1f5548be6
|
|
||||||
checksum/env-oidc: 2a3d493b7fac498a180683454c58815e0a3bc6319adaf87d6e1eb459db3a8c04
|
|
||||||
checksum/env-s3: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
|
|
||||||
checksum/env-environment: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
helm.sh/chart: openproject-5.1.4
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/version: '14'
|
|
||||||
openproject/process: worker-default
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 1000
|
|
||||||
serviceAccountName: openproject
|
|
||||||
volumes:
|
|
||||||
- name: tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: app-tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: openproject
|
|
||||||
initContainers:
|
|
||||||
- name: wait-for-db
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
image: docker.io/openproject/openproject:14-slim
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- /app/docker/prod/wait-for-db
|
|
||||||
containers:
|
|
||||||
- name: openproject
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
image: docker.io/openproject/openproject:14-slim
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- /app/docker/prod/worker
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
- name: QUEUE
|
|
||||||
value: ''
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /tmp
|
|
||||||
name: tmp
|
|
||||||
- mountPath: /app/tmp
|
|
||||||
name: app-tmp
|
|
||||||
- name: data
|
|
||||||
mountPath: /var/openproject/assets
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: '4'
|
|
||||||
memory: 4Gi
|
|
||||||
requests:
|
|
||||||
cpu: 250m
|
|
||||||
memory: 512Mi
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Deployment_openproject-web" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: openproject-web
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
openproject/process: web
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
checksum/env-core: a4294db8b065a4d77e098d233e1b73e5ad4557890fd69436ba8fc7c2daf7a181
|
|
||||||
checksum/env-memcached: f4f558dde2e4422edc31e686317ce225beea60a136cbb9459cfca7d1f5548be6
|
|
||||||
checksum/env-oidc: 2a3d493b7fac498a180683454c58815e0a3bc6319adaf87d6e1eb459db3a8c04
|
|
||||||
checksum/env-s3: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
|
|
||||||
checksum/env-environment: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: openproject
|
|
||||||
helm.sh/chart: openproject-5.1.4
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/version: '14'
|
|
||||||
openproject/process: web
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 1000
|
|
||||||
serviceAccountName: openproject
|
|
||||||
volumes:
|
|
||||||
- name: tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: app-tmp
|
|
||||||
ephemeral:
|
|
||||||
volumeClaimTemplate:
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: openproject
|
|
||||||
initContainers:
|
|
||||||
- name: wait-for-db
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
image: docker.io/openproject/openproject:14-slim
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- /app/docker/prod/wait-for-db
|
|
||||||
containers:
|
|
||||||
- name: openproject
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
runAsGroup: 1000
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1000
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
image: docker.io/openproject/openproject:14-slim
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-core
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-oidc
|
|
||||||
- secretRef:
|
|
||||||
name: openproject-memcached
|
|
||||||
env:
|
|
||||||
- name: OPENPROJECT_DB_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- /app/docker/prod/web
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /tmp
|
|
||||||
name: tmp
|
|
||||||
- mountPath: /app/tmp
|
|
||||||
name: app-tmp
|
|
||||||
- name: data
|
|
||||||
mountPath: /var/openproject/assets
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 8080
|
|
||||||
protocol: TCP
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /health_checks/default
|
|
||||||
port: 8080
|
|
||||||
httpHeaders:
|
|
||||||
- name: Host
|
|
||||||
value: localhost
|
|
||||||
initialDelaySeconds: 120
|
|
||||||
timeoutSeconds: 3
|
|
||||||
periodSeconds: 30
|
|
||||||
failureThreshold: 3
|
|
||||||
successThreshold: 1
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /health_checks/default
|
|
||||||
port: 8080
|
|
||||||
httpHeaders:
|
|
||||||
- name: Host
|
|
||||||
value: localhost
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
timeoutSeconds: 3
|
|
||||||
periodSeconds: 15
|
|
||||||
failureThreshold: 30
|
|
||||||
successThreshold: 1
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: '4'
|
|
||||||
memory: 4Gi
|
|
||||||
requests:
|
|
||||||
cpu: 250m
|
|
||||||
memory: 512Mi
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "StatefulSet_openproject-postgresql" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: openproject-postgresql
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
serviceName: openproject-postgresql-hl
|
|
||||||
updateStrategy:
|
|
||||||
rollingUpdate: {}
|
|
||||||
type: RollingUpdate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: postgresql
|
|
||||||
app.kubernetes.io/component: primary
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
name: openproject-postgresql
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/name: postgresql
|
|
||||||
app.kubernetes.io/version: 15.4.0
|
|
||||||
helm.sh/chart: postgresql-12.12.10
|
|
||||||
app.kubernetes.io/component: primary
|
|
||||||
spec:
|
|
||||||
serviceAccountName: default
|
|
||||||
affinity:
|
|
||||||
podAffinity: null
|
|
||||||
podAntiAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- podAffinityTerm:
|
|
||||||
labelSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: postgresql
|
|
||||||
app.kubernetes.io/component: primary
|
|
||||||
topologyKey: kubernetes.io/hostname
|
|
||||||
weight: 1
|
|
||||||
nodeAffinity: null
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 1001
|
|
||||||
hostNetwork: false
|
|
||||||
hostIPC: false
|
|
||||||
containers:
|
|
||||||
- name: postgresql
|
|
||||||
image: docker.io/bitnami/postgresql:15.4.0-debian-11-r45
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
runAsGroup: 0
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1001
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
env:
|
|
||||||
- name: BITNAMI_DEBUG
|
|
||||||
value: 'false'
|
|
||||||
- name: POSTGRESQL_PORT_NUMBER
|
|
||||||
value: '5432'
|
|
||||||
- name: POSTGRESQL_VOLUME_DIR
|
|
||||||
value: /bitnami/postgresql
|
|
||||||
- name: PGDATA
|
|
||||||
value: /bitnami/postgresql/data
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
value: openproject
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: password
|
|
||||||
- name: POSTGRES_POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: openproject-postgresql
|
|
||||||
key: postgres-password
|
|
||||||
- name: POSTGRES_DATABASE
|
|
||||||
value: openproject
|
|
||||||
- name: POSTGRESQL_ENABLE_LDAP
|
|
||||||
value: no
|
|
||||||
- name: POSTGRESQL_ENABLE_TLS
|
|
||||||
value: no
|
|
||||||
- name: POSTGRESQL_LOG_HOSTNAME
|
|
||||||
value: 'false'
|
|
||||||
- name: POSTGRESQL_LOG_CONNECTIONS
|
|
||||||
value: 'false'
|
|
||||||
- name: POSTGRESQL_LOG_DISCONNECTIONS
|
|
||||||
value: 'false'
|
|
||||||
- name: POSTGRESQL_PGAUDIT_LOG_CATALOG
|
|
||||||
value: off
|
|
||||||
- name: POSTGRESQL_CLIENT_MIN_MESSAGES
|
|
||||||
value: error
|
|
||||||
- name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES
|
|
||||||
value: pgaudit
|
|
||||||
ports:
|
|
||||||
- name: tcp-postgresql
|
|
||||||
containerPort: 5432
|
|
||||||
livenessProbe:
|
|
||||||
failureThreshold: 6
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 5
|
|
||||||
exec:
|
|
||||||
command:
|
|
||||||
- /bin/sh
|
|
||||||
- -c
|
|
||||||
- exec pg_isready -U "openproject" -d "dbname=openproject" -h 127.0.0.1 -p 5432
|
|
||||||
readinessProbe:
|
|
||||||
failureThreshold: 6
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 5
|
|
||||||
exec:
|
|
||||||
command:
|
|
||||||
- /bin/sh
|
|
||||||
- -c
|
|
||||||
- -e
|
|
||||||
- |
|
|
||||||
exec pg_isready -U "openproject" -d "dbname=openproject" -h 127.0.0.1 -p 5432
|
|
||||||
[ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ]
|
|
||||||
resources:
|
|
||||||
limits: {}
|
|
||||||
requests:
|
|
||||||
cpu: 250m
|
|
||||||
memory: 256Mi
|
|
||||||
volumeMounts:
|
|
||||||
- name: dshm
|
|
||||||
mountPath: /dev/shm
|
|
||||||
- name: data
|
|
||||||
mountPath: /bitnami/postgresql
|
|
||||||
volumes:
|
|
||||||
- name: dshm
|
|
||||||
emptyDir:
|
|
||||||
medium: Memory
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: data
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 8Gi
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubectl_manifest" "Deployment_openproject-memcached" {
|
|
||||||
yaml_body = <<-EOF
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: openproject-memcached
|
|
||||||
namespace: ${var.namespace}
|
|
||||||
labels: ${jsonencode(local.common-labels)}
|
|
||||||
ownerReferences: ${jsonencode(var.install_owner)}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: memcached
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
rollingUpdate: {}
|
|
||||||
type: RollingUpdate
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/name: memcached
|
|
||||||
app.kubernetes.io/version: 1.6.24
|
|
||||||
helm.sh/chart: memcached-6.14.0
|
|
||||||
annotations: null
|
|
||||||
spec:
|
|
||||||
automountServiceAccountToken: false
|
|
||||||
affinity:
|
|
||||||
podAffinity: null
|
|
||||||
podAntiAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- podAffinityTerm:
|
|
||||||
labelSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/instance: openproject
|
|
||||||
app.kubernetes.io/name: memcached
|
|
||||||
topologyKey: kubernetes.io/hostname
|
|
||||||
weight: 1
|
|
||||||
nodeAffinity: null
|
|
||||||
securityContext:
|
|
||||||
fsGroup: 1001
|
|
||||||
fsGroupChangePolicy: Always
|
|
||||||
supplementalGroups: []
|
|
||||||
sysctls: []
|
|
||||||
serviceAccountName: openproject-memcached
|
|
||||||
containers:
|
|
||||||
- name: memcached
|
|
||||||
image: docker.io/bitnami/memcached:1.6.24-debian-12-r0
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
securityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
privileged: false
|
|
||||||
readOnlyRootFilesystem: false
|
|
||||||
runAsGroup: 1001
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 1001
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
env:
|
|
||||||
- name: BITNAMI_DEBUG
|
|
||||||
value: 'false'
|
|
||||||
- name: MEMCACHED_PORT_NUMBER
|
|
||||||
value: '11211'
|
|
||||||
ports:
|
|
||||||
- name: memcache
|
|
||||||
containerPort: 11211
|
|
||||||
livenessProbe:
|
|
||||||
failureThreshold: 6
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 10
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 5
|
|
||||||
tcpSocket:
|
|
||||||
port: memcache
|
|
||||||
readinessProbe:
|
|
||||||
failureThreshold: 6
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 5
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 3
|
|
||||||
tcpSocket:
|
|
||||||
port: memcache
|
|
||||||
volumeMounts:
|
|
||||||
- name: empty-dir
|
|
||||||
mountPath: /opt/bitnami/memcached/conf
|
|
||||||
subPath: app-conf-dir
|
|
||||||
- name: empty-dir
|
|
||||||
mountPath: /tmp
|
|
||||||
subPath: tmp-dir
|
|
||||||
volumes:
|
|
||||||
- name: empty-dir
|
|
||||||
emptyDir: {}
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
const DEST=dest;
|
|
||||||
fn post_template() {
|
|
||||||
save_to_tf(`${global::DEST}/conditions.tf`, "conditions", #{
|
|
||||||
have_podmonitors: have_crd("podmonitors.monitoring.coreos.com"),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -77,16 +77,17 @@ resource "kubectl_manifest" "cm_scripts" {
|
|||||||
postconfig.sh: |-
|
postconfig.sh: |-
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
export PATH="/opt/venv/bin/:$PATH" TAIGA_URL="http://${module.service.name}" TAIGA_SITES_DOMAIN="${module.service.name}" TAIGA_SITES_SCHEME=http
|
export PATH="/opt/venv/bin/:$PATH" TAIGA_URL="http://${module.service.name}" TAIGA_SITES_DOMAIN="${module.service.name}" TAIGA_SITES_SCHEME=http
|
||||||
|
DIRNAME=$(dirname $0)
|
||||||
|
. $DIRNAME/certs.sh
|
||||||
|
sleep 5
|
||||||
|
if ! python 'manage.py' 'dumpdata' users.user|grep -q '"is_superuser": true';then
|
||||||
|
python manage.py createsuperuser --noinput
|
||||||
|
fi
|
||||||
if [ $(python manage.py dumpdata projects.projecttemplate|wc -c) -lt 1000 ];then
|
if [ $(python manage.py dumpdata projects.projecttemplate|wc -c) -lt 1000 ];then
|
||||||
python manage.py loaddata initial_project_templates
|
python manage.py loaddata initial_project_templates
|
||||||
else
|
else
|
||||||
echo "skipping loading initial templates : already here"
|
echo "skipping loading initial templates : already here"
|
||||||
fi
|
fi
|
||||||
if ! python 'manage.py' 'dumpdata' users.user|grep -q '"is_superuser": true';then
|
|
||||||
python manage.py createsuperuser --noinput
|
|
||||||
else
|
|
||||||
python 'manage.py' 'dumpdata' users.user
|
|
||||||
fi
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user