diff --git a/apps/templates/sogo-folder.yaml b/apps/templates/sogo-folder.yaml new file mode 100644 index 0000000..2ecbfd4 --- /dev/null +++ b/apps/templates/sogo-folder.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: sogo + namespace: argocd +spec: + project: default + source: + repoURL: https://github.com/rubenhensen/k8scd.git + targetRevision: HEAD + path: sogo + destination: + server: https://kubernetes.default.svc + namespace: sogo + syncPolicy: + automated: + selfHeal: true + prune: true + syncOptions: + - CreateNamespace=true diff --git a/apps/templates/stalwart-folder.yaml b/apps/templates/stalwart-folder.yaml new file mode 100644 index 0000000..0da380d --- /dev/null +++ b/apps/templates/stalwart-folder.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: stalwart + namespace: argocd +spec: + project: default + source: + repoURL: https://github.com/rubenhensen/k8scd.git + targetRevision: HEAD + path: stalwart + destination: + server: https://kubernetes.default.svc + namespace: stalwart + syncPolicy: + automated: + selfHeal: true + prune: true + syncOptions: + - CreateNamespace=true + automated: + selfHeal: true diff --git a/sogo/external-secret.yaml b/sogo/external-secret.yaml new file mode 100644 index 0000000..24e2606 --- /dev/null +++ b/sogo/external-secret.yaml @@ -0,0 +1,22 @@ + +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: sogo-postgres-credentials +spec: + secretStoreRef: + name: vault-backend + kind: ClusterSecretStore + refreshInterval: 15m + target: + name: sogo-postgres-credentials + creationPolicy: Owner + template: + engineVersion: v2 + data: + username: "{{ `{{ .postgres_user }}` }}" + password: "{{ `{{ .postgres_pw }}` }}" + dataFrom: + - extract: + key: kv/sogo + diff --git a/sogo/postgresql-cluster.yaml b/sogo/postgresql-cluster.yaml new file mode 100644 index 0000000..17d9dac --- /dev/null +++ b/sogo/postgresql-cluster.yaml @@ -0,0 +1,21 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: sogo-postgres +spec: + instances: 1 + + primaryUpdateStrategy: unsupervised + + bootstrap: + initdb: + database: sogo + owner: sogo + secret: + name: sogo-postgres-credentials + + storage: + storageClass: longhorn + size: 20Gi + + diff --git a/sogo/sogo-config-secret.yaml b/sogo/sogo-config-secret.yaml new file mode 100644 index 0000000..9c0827a --- /dev/null +++ b/sogo/sogo-config-secret.yaml @@ -0,0 +1,24 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: sogo-config +spec: + secretStoreRef: + name: vault-backend + kind: ClusterSecretStore + refreshInterval: 15m + target: + name: sogo-config + creationPolicy: Owner + template: + engineVersion: v2 + data: + SOGoProfileURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_user_profile?sslmode=require" + OCSFolderInfoURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_folder_info?sslmode=require" + OCSSessionsFolderURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_sessions_folder?sslmode=require" + OCSCacheFolderURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_cache_folder?sslmode=require" + OCSStoreURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_store?sslmode=require" + OCSAclURL: "postgresql://{{ .postgres_user }}:{{ .postgres_pw }}@sogo-postgres-rw:5432/sogo/sogo_acl?sslmode=require" + dataFrom: + - extract: + key: kv/sogo diff --git a/sogo/sogo-helm.yaml b/sogo/sogo-helm.yaml new file mode 100644 index 0000000..5b8e094 --- /dev/null +++ b/sogo/sogo-helm.yaml @@ -0,0 +1,50 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: helm-longhorn + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true + selfHeal: true + project: default + sources: + - chart: sogo + repoURL: https://github.com/sonroyaalmerol/docker-sogo + targetRevision: v0.3.3 + helm: + values: | + ingress: + enabled: true + className: nginx + annotations: + kubernetes.io/tls-acme: "true" + cert-manager.io/cluster-issuer: prod-cluster-issuer + nginx.ingress.kubernetes.io/server-snippet: |- + ## requirement to create new calendars in Thunderbird ## + proxy_http_version 1.1; + proxy_hide_header X-Powered-By; + + location = / { + rewrite ^(.*)$ /SOGo; + allow all; + } + + tls: + - secretName: sogo-tls + hosts: + - post.hensen.io + labels: {} + path: / + pathType: Prefix + + existingSecrets: + - sogo-config + destination: + server: https://kubernetes.default.svc + namespace: sogo