From 114c58ed34ad761bdfb7376e7378e2a9a6cd1b61 Mon Sep 17 00:00:00 2001 From: Philip Haupt <“der.mad.mob@gmail.com”> Date: Thu, 3 Apr 2025 21:44:39 +0200 Subject: [PATCH] dolibarr added --- dolibarr/kustomization.yaml | 7 + dolibarr/main.yaml | 627 ++++++++++++++++++++++++++++++++ dolibarr/src/kustomization.yaml | 12 + dolibarr/src/values.yaml | 8 + 4 files changed, 654 insertions(+) create mode 100644 dolibarr/kustomization.yaml create mode 100644 dolibarr/main.yaml create mode 100644 dolibarr/src/kustomization.yaml create mode 100644 dolibarr/src/values.yaml diff --git a/dolibarr/kustomization.yaml b/dolibarr/kustomization.yaml new file mode 100644 index 0000000..7b313f5 --- /dev/null +++ b/dolibarr/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - main.yaml + - pv.yaml \ No newline at end of file diff --git a/dolibarr/main.yaml b/dolibarr/main.yaml new file mode 100644 index 0000000..b2c0596 --- /dev/null +++ b/dolibarr/main.yaml @@ -0,0 +1,627 @@ +apiVersion: v1 +automountServiceAccountToken: false +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr +--- +apiVersion: v1 +data: + my.cnf: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + datadir=/bitnami/mariadb/data + plugin_dir=/opt/bitnami/mariadb/plugin + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + long_query_time=10.0 + binlog_expire_logs_seconds=2592000 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +--- +apiVersion: v1 +data: + test_all.py: | + import requests + + + def test_service_connection(): + url = "http://dolibarr:80/" + + response = requests.get(url) + + assert response.status_code == 200 +kind: ConfigMap +metadata: + annotations: + helm.sh/hook: test + labels: + app.kubernetes.io/component: tests + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr-tests +--- +apiVersion: v1 +data: + mariadb-password: ZG9saWJhcnI= + mariadb-root-password: QmNQRVVGajZYTw== +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +type: Opaque +--- +apiVersion: v1 +data: + dolibarr-admin-password: YWRtaW4= +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr +type: Opaque +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +spec: + ports: + - name: mysql + nodePort: null + port: 3306 + protocol: TCP + targetPort: mysql + selector: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb + sessionAffinity: None + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb-headless + namespace: dolibarr +spec: + clusterIP: None + ports: + - name: mysql + port: 3306 + protocol: TCP + targetPort: mysql + publishNotReadyAddresses: true + selector: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: dolibarr + sessionAffinity: None + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: dolibarr + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/secret: 541efa5059812db22d6496d656a2ba104aed45d13df16a95ef81a71c06d7832c + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: dolibarr + spec: + containers: + - env: + - name: DOLI_ADMIN_LOGIN + value: admin + - name: DOLI_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + key: dolibarr-admin-password + name: dolibarr + - name: DOLI_DB_HOST + value: dolibarr-mariadb + - name: DOLI_DB_HOST_PORT + value: "3306" + - name: DOLI_DB_USER + value: dolibarr + - name: DOLI_DB_PASSWORD + valueFrom: + secretKeyRef: + key: mariadb-password + name: dolibarr-mariadb + - name: DOLI_DB_NAME + value: dolibarr + - name: DOLI_URL_ROOT + value: http://dolibarr.ggw + image: docker.io/dolibarr/dolibarr:21.0.0 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: / + port: http + initialDelaySeconds: 180 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: dolibarr + ports: + - containerPort: 80 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: / + port: http + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: {} + securityContext: {} + volumeMounts: + - mountPath: /var/www/documents + name: data + enableServiceLinks: false + initContainers: + - command: + - /bin/sh + - -ec + - | + wait4x mysql "${MARIADB_USERNAME}:${MARIADB_PASSWORD}@tcp(${MARIADB_HOST}:${MARIADB_PORT})/${MARIADB_DATABASE}" --timeout 0 + env: + - name: MARIADB_HOST + value: dolibarr-mariadb + - name: MARIADB_PORT + value: "3306" + - name: MARIADB_USERNAME + value: dolibarr + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + key: mariadb-password + name: dolibarr-mariadb + - name: MARIADB_DATABASE + value: dolibarr + image: docker.io/wait4x/wait4x:3.2.0 + imagePullPolicy: IfNotPresent + name: wait-mariadb + resources: {} + securityContext: {} + volumeMounts: null + - command: + - /bin/bash + - -ec + - | + rm -f /var/www/documents/install.lock + image: docker.io/dolibarr/dolibarr:21.0.0 + imagePullPolicy: IfNotPresent + name: init + resources: {} + securityContext: {} + volumeMounts: + - mountPath: /var/www/documents + name: data + securityContext: {} + serviceAccountName: dolibarr + volumes: + - emptyDir: {} + name: data +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + serviceName: dolibarr-mariadb-headless + template: + metadata: + annotations: + checksum/configuration: e667a69337110d2250a6d16ff2f79b3f8b6e7eec68cbe863a785afaf02d2b3a7 + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + spec: + affinity: + nodeAffinity: null + podAffinity: null + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb + topologyKey: kubernetes.io/hostname + weight: 1 + automountServiceAccountToken: false + containers: + - env: + - name: BITNAMI_DEBUG + value: "false" + - name: MARIADB_ROOT_PASSWORD_FILE + value: /opt/bitnami/mariadb/secrets/mariadb-root-password + - name: MARIADB_USER + value: dolibarr + - name: MARIADB_PASSWORD_FILE + value: /opt/bitnami/mariadb/secrets/mariadb-password + - name: MARIADB_DATABASE + value: dolibarr + - name: MARIADB_ENABLE_SSL + value: "no" + image: docker.io/bitnami/mariadb:11.4.5-debian-12-r9 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mariadb-admin status -uroot -p"${password_aux}" + failureThreshold: 3 + initialDelaySeconds: 120 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: mariadb + ports: + - containerPort: 3306 + name: mysql + readinessProbe: + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mariadb-admin ping -uroot -p"${password_aux}" + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + cpu: 750m + ephemeral-storage: 2Gi + memory: 768Mi + requests: + cpu: 500m + ephemeral-storage: 50Mi + memory: 512Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: {} + seccompProfile: + type: RuntimeDefault + volumeMounts: + - mountPath: /bitnami/mariadb + name: data + - mountPath: /opt/bitnami/mariadb/conf/my.cnf + name: config + subPath: my.cnf + - mountPath: /opt/bitnami/mariadb/secrets/ + name: mariadb-credentials + - mountPath: /tmp + name: empty-dir + subPath: tmp-dir + - mountPath: /opt/bitnami/mariadb/conf + name: empty-dir + subPath: app-conf-dir + - mountPath: /opt/bitnami/mariadb/tmp + name: empty-dir + subPath: app-tmp-dir + - mountPath: /opt/bitnami/mariadb/logs + name: empty-dir + subPath: app-logs-dir + initContainers: + - args: + - -ec + - | + #!/bin/bash + + . /opt/bitnami/scripts/libfs.sh + # We copy the logs folder because it has symlinks to stdout and stderr + if ! is_dir_empty /opt/bitnami/mariadb/logs; then + cp -r /opt/bitnami/mariadb/logs /emptydir/app-logs-dir + fi + command: + - /bin/bash + image: docker.io/bitnami/mariadb:11.4.5-debian-12-r9 + imagePullPolicy: IfNotPresent + name: preserve-logs-symlinks + resources: + limits: + cpu: 750m + ephemeral-storage: 2Gi + memory: 768Mi + requests: + cpu: 500m + ephemeral-storage: 50Mi + memory: 512Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: {} + seccompProfile: + type: RuntimeDefault + volumeMounts: + - mountPath: /emptydir + name: empty-dir + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: Always + supplementalGroups: [] + sysctls: [] + serviceAccountName: dolibarr-mariadb + volumes: + - emptyDir: {} + name: empty-dir + - configMap: + name: dolibarr-mariadb + name: config + - name: mariadb-credentials + secret: + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-password + path: mariadb-password + secretName: dolibarr-mariadb + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +spec: + maxUnavailable: 1 + selector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/name: mariadb +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/part-of: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + name: dolibarr-mariadb + namespace: dolibarr +spec: + egress: + - {} + ingress: + - ports: + - port: 3306 + - port: 3306 + podSelector: + matchLabels: + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.4.5 + helm.sh/chart: mariadb-20.4.2 + policyTypes: + - Ingress + - Egress +--- +apiVersion: v1 +kind: Pod +metadata: + annotations: + helm.sh/hook: test + labels: + app.kubernetes.io/component: tests + app.kubernetes.io/instance: dolibarr + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: dolibarr + app.kubernetes.io/version: 21.0.0 + helm.sh/chart: dolibarr-7.0.0 + name: dolibarr-tests +spec: + containers: + - image: ghcr.io/cowboysysop/pytest:1.0.41 + imagePullPolicy: IfNotPresent + name: tests + volumeMounts: + - mountPath: /tests + name: tests + readOnly: true + workingDir: /tests + restartPolicy: Never + volumes: + - configMap: + name: dolibarr-tests + name: tests diff --git a/dolibarr/src/kustomization.yaml b/dolibarr/src/kustomization.yaml new file mode 100644 index 0000000..56d4579 --- /dev/null +++ b/dolibarr/src/kustomization.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +helmCharts: + - name: dolibarr + repo: https://cowboysysop.github.io/charts/ + version: 7.0.0 + releaseName: dolibarr + includeCRDs: true + namespace: dolibarr + valuesFile: values.yaml diff --git a/dolibarr/src/values.yaml b/dolibarr/src/values.yaml new file mode 100644 index 0000000..3a19084 --- /dev/null +++ b/dolibarr/src/values.yaml @@ -0,0 +1,8 @@ +replicaCount: 1 + +persistence: + size: 3Gi + storageClass: openebs-3-replicas + +dolibarr: + externalUrl: http://dolibarr.ggw \ No newline at end of file